V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
withrock
V2EX  ›  问与答

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

  •  
  •   withrock · 2016-05-13 13:09:06 +08:00 · 1292 次点击
    这是一个创建于 3153 天前的主题,其中的信息可能已经有所发展或是发生改变。

    开发的时候,创建了两个 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 的地址不变?

    5 条回复    2016-05-23 15:37:44 +08:00
    touzi
        1
    touzi  
       2016-05-13 13:21:10 +08:00   ❤️ 1
    你请求 rest 的地址是 http://1.2.3.4/channel 吗?
    如果是: 那么将 channel-front 配置成默认项目就可以, 然后可以通过 http://1.2.3.4/ 访问
    如果不是就得改了.
    SoloCompany
        2
    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
        3
    SoloCompany  
       2016-05-13 23:54:36 +08:00
    或者前面部署个 nginx 就更简单了
    配置的代理为
    / -> /
    /rest -> /channel/rest
    withrock
        4
    withrock  
    OP
       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
        5
    withrock  
    OP
       2016-05-23 15:37:44 +08:00
    @SoloCompany 多谢,用 nginx 的方式最好了,而且安全。 :)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1333 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:37 · PVG 01:37 · LAX 09:37 · JFK 12:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.