能否将两个名称不同的 java app 都部署在根目录?

2016-05-13 13:09:06 +08:00
 withrock

开发的时候,创建了两个 app : 一: channel ,提供 REST 服务,地址是 http://1.2.3.4/channel;

二、 channel-front ,是一个几乎静态化的工程,调用 channel 提供的 REST 接口,做展现。

以前用户访问的时候,是访问 http://1.2.3.4/channel-front 。 现在用户想直接通过 IP 进行访问。 能否都将两个 app 部署在根目录? 用户直接通过 http://1.2.3.4 进行访问,同时 channel-front 的工程内,请求 rest 的地址不变?

1232 次点击
所在节点    问与答
5 条回复
touzi
2016-05-13 13:21:10 +08:00
你请求 rest 的地址是 http://1.2.3.4/channel 吗?
如果是: 那么将 channel-front 配置成默认项目就可以, 然后可以通过 http://1.2.3.4/ 访问
如果不是就得改了.
SoloCompany
2016-05-13 23:53:25 +08:00
channel 部署到 /channel
channel-front 部署到 / (也就是 ROOT)
ROOT 配置为 crossContet=true 即允许跨应用转发
然后通过一个很简单的 jsp 或 servlet 执行转发
把所有 /rest 的访问全部 forward 到 /channel/rest
(假设 rest 服务的路径是 /rest )
SoloCompany
2016-05-13 23:54:36 +08:00
或者前面部署个 nginx 就更简单了
配置的代理为
/ -> /
/rest -> /channel/rest
withrock
2016-05-23 15:37:00 +08:00
@touzi 多谢,我通过修改 server.xml 的方式实现了。其实你的 nginx 方式更好,这样不用把后端服务暴露在外面。
```
<Host name="localhost" appBase="D:\app"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="channel-front"></Context>
<Context path="channel" docBase="channel"></Context>
</Host>
```
withrock
2016-05-23 15:37:44 +08:00
@SoloCompany 多谢,用 nginx 的方式最好了,而且安全。 :)

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

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

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

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

© 2021 V2EX