哎..tomcat7 的两个问题

2019-04-28 15:12:11 +08:00
 Newyorkcity
有两个项目 webapp1.war,webapp2.war
要求 webapp1 只能直接通过 ip:port 访问到
webapp2 只能通过 ip:port/webapp2/的方式访问到
(后面的 index.jsp 省略了)
该如何配置做到?
网站没有开发完成,webapp1 和 webapp2 两个 war 包可能会更新,如何不关闭 tomcat 和服务器,做到一个 war 包被替换了,tomcat 能随时监察到并同步更新覆盖?

谢谢!
1242 次点击
所在节点    问与答
7 条回复
HuasLeung
2019-04-28 15:38:19 +08:00
tomcat 配置 2 个虚拟主机分别对应 webapp1 和 webapp2(ip:port 中的端口是不是同一个?)

传统的 war 包部署应该做不到同步更新覆盖。如果配置了.war 文件在 tomcat 运行就自解压,war 包的文件名是个问题——新上传的 war 包如果跟旧的 war 包同名解压后应该会冲突(没试过…),不同名则需重新修改 server.xml 中虚拟主机 appBase 对应的路径
funky
2019-04-28 15:39:56 +08:00
war 应该实现不了热更新吧
Newyorkcity
2019-04-28 16:11:45 +08:00
@HuasLeung 是同一个..我是在 conf/server.xml 文件里这么写的
<Context docBase="webapp1.war" path="" reloadable="true" debug="0"/>
<Context docBase="webapp2.war" path="/webapp2" reloadable="true" debug="0"/>
webapp1 会自动生成 webapp1 文件夹,但不能通过 ip:port 的方式访问,只能通过 ip:port/webapp1 的方式访问..我也很气..
Newyorkcity
2019-04-28 16:12:23 +08:00
@HuasLeung
@funky
实现不了热更新的话 tomcat 有什么办法达成这个效果么?我觉得这个要求对于还在开发的网站不应该是很寻常的么..
funky
2019-04-28 16:19:10 +08:00
在前面有一个 nginx 后面两个 tomcat 实例,滚动重启
funky
2019-04-28 16:20:20 +08:00
webapp1 换成 ROOT 可以 ip:port 直接访问
LinJunzhu
2019-04-28 16:53:11 +08:00
@Newyorkcity

<Host name="xx.cn" appBase="webapps1"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/home/ubuntu/projects/webapps1.war" reloadable="true"/>
</Host>
<Host name="xx.cn" appBase="webapps2"
unpackWARs="true" autoDeploy="true">
<Context path="/hello" docBase="/home/ubuntu/projects/webapps2.war" reloadable="true"/>
</Host>

如果想要每次 war 更新都自动热部署, 那么需要写脚本了:

上传 war 包,并且将 webapps1 webapps2 文件夹下自动解压出的项目移除 ,tomcat 会自动去解压热更新的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/559489

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX