【问题标题】:Deploy war on Tomcat without the war name in the URL在 Tomcat 上部署战争,URL 中没有战争名称
【发布时间】:2010-01-08 23:35:48
【问题描述】:

我构建了一个名为myapp.war 的war 文件并将其部署在Tomcat 上。我已将端口从 8080 更改为 80,因此我可以通过 example.com/myapp(其中 example.com 是我的主机)访问它。

如何配置应用程序,以便当我转到 example.com 时,它会显示我的应用程序?我不想只是从 example.com 重定向到 example.com/myapp - 我不想在 URL 中包含 myapp
我是否必须设置 Apache 来提供这样的页面,或者我可以在 Tomcat 配置中使用虚拟主机吗?

【问题讨论】:

    标签: deployment tomcat


    【解决方案1】:

    您需要做的就是将您的战争命名为ROOT.war

    【讨论】:

    • 不行,这还不够,这个方法需要先移除当前默认应用(即删除ROOT目录)。
    • 这不是真的,如果Tomcat重新启动,它将展开WAR并覆盖ROOT目录(对于所有最新版本的Tomcat)。
    • 哦,确实,忘了我说的话。但值得一提的是,到时候会被覆盖。
    • 确实如此。但是,如果他之前不知道 ROOT.war,那么他只是在那里获得了默认应用程序。
    【解决方案2】:

    这里有两种可能的方法:

    1. 将你的战争重命名为 ROOT.war
    2. 无需重命名。转到CATALINA_BASE/conf/server.xml找到主机元素并设置autoDeploy="false"deployOnStartup="false",然后在最后添加<Context path="" docBase="your_project_name"/>

    示例#2:

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="false" deployOnStartup="false"> 
    
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        <Context path="" docBase="your_project_name"/><!--Add this-->
      </Host>
    

    【讨论】:

      【解决方案3】:

      您不必必须为此设置 Apache 前端或在 Tomcat 中配置虚拟主机。相反,只需将您的 webapp 部署到“根上下文”。为此,请参阅 Tomcat Wiki 上的 How do I make my web application be the Tomcat default application ?。它们描述了三种可能的方法,因此您可以选择最适合您需求的一种。

      【讨论】:

        【解决方案4】:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-04-14
          • 1970-01-01
          • 1970-01-01
          • 2018-08-30
          • 2015-10-28
          • 1970-01-01
          • 2020-09-24
          相关资源
          最近更新 更多