Java 在Tomcat的根目录下部署我的应用程序

Java 在Tomcat的根目录下部署我的应用程序,java,tomcat,Java,Tomcat,我有我申请的war文件。我需要在根级别部署它。当前URL为http://localhost:8080/war_name/application_name您有两个选择: 从tomcat中删除开箱即用的ROOT/目录,并在部署之前将war文件重命名为ROOT.war 将war部署为(示例中的)war\u name.war并在conf/server.xml中配置以使用war文件: <Context path="" docBase="war_name" debug="0" reloadable="

我有我申请的war文件。我需要在根级别部署它。当前URL为
http://localhost:8080/war_name/application_name

您有两个选择:

  • 从tomcat中删除开箱即用的
    ROOT/
    目录,并在部署之前将war文件重命名为
    ROOT.war

  • 将war部署为(示例中的)
    war\u name.war
    并在
    conf/server.xml
    中配置以使用war文件:

    <Context path="" docBase="war_name" debug="0" reloadable="true"></Context>
    
    
    

  • 第一个比较简单,但有点笨拙。第二种可能是更优雅的方式。

    您有两种选择:

  • 从tomcat中删除开箱即用的
    ROOT/
    目录,并在部署之前将war文件重命名为
    ROOT.war

  • 将war部署为(示例中的)
    war\u name.war
    并在
    conf/server.xml
    中配置以使用war文件:

    <Context path="" docBase="war_name" debug="0" reloadable="true"></Context>
    
    
    
  • 第一个比较简单,但有点笨拙。第二种可能是更优雅的方式。

    关于tomcat v.7(普通安装)

    在conf/server.xml中,在文件末尾,即
    结束标记之前添加以下位:

    <Context path="" docBase="app_name">
        <!-- Default set of monitored resources -->
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
    </Context>
    
    
    WEB-INF/WEB.xml
    
    请注意,docBase属性。这是最重要的一点。在更改根web应用程序之前,请确保已部署应用程序名称,或者仅将未打包的web应用程序(应用程序名称)复制到tomcat的webapps文件夹中。启动,访问root,在那里查看你的应用程序名称

    tomcat v.7上的(普通安装)

    在conf/server.xml中,在文件末尾,即
    结束标记之前添加以下位:

    <Context path="" docBase="app_name">
        <!-- Default set of monitored resources -->
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
    </Context>
    
    
    WEB-INF/WEB.xml
    

    请注意,docBase属性。这是最重要的一点。在更改根web应用程序之前,请确保已部署应用程序名称,或者仅将未打包的web应用程序(应用程序名称)复制到tomcat的webapps文件夹中。启动,访问root,在那里查看你的应用程序名称

    在Tomcat7中,通过这些更改,我可以在/处访问myAPP,在/处访问ROOT

    <Context path="" docBase="myAPP">
         <!-- Default set of monitored resources -->
         <WatchedResource>WEB-INF/web.xml</WatchedResource>
    </Context>
    <Context path="ROOT" docBase="ROOT">
         <!-- Default set of monitored resources -->
         <WatchedResource>WEB-INF/web.xml</WatchedResource>
    </Context>
    
    
    WEB-INF/WEB.xml
    WEB-INF/WEB.xml
    

    将以上内容添加到tomcat7中server.xml的
    部分,通过这些更改,我可以在/和/根目录下访问myAPP

    <Context path="" docBase="myAPP">
         <!-- Default set of monitored resources -->
         <WatchedResource>WEB-INF/web.xml</WatchedResource>
    </Context>
    <Context path="ROOT" docBase="ROOT">
         <!-- Default set of monitored resources -->
         <WatchedResource>WEB-INF/web.xml</WatchedResource>
    </Context>
    
    
    WEB-INF/WEB.xml
    WEB-INF/WEB.xml
    
    以最快的方式将上述内容添加到server.xml的
    部分

  • 确保没有部署根应用程序,如果有,请取消部署

  • 将war重命名为ROOT.war,deploy,仅此而已,无需更改配置

  • 最快的方法

  • 确保没有部署根应用程序,如果有,请取消部署

  • 将war重命名为ROOT.war,deploy,仅此而已,无需更改配置


  • 在我的服务器中,我正在使用此选项,根自动部署工作正常:

       <Host name="mysite" autoDeploy="true" appBase="webapps" unpackWARs="true" deployOnStartup="true">
            <Alias>www.mysite.com</Alias>
            <Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeader="X-Forwarded-Proto"/>
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="mysite_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b"/>
            <Context path="/mysite" docBase="mysite" reloadable="true"/>
        </Host>
    
    
    www.mysite.com
    
    在我的服务器中,我正在使用此选项,并且根自动部署工作正常:

       <Host name="mysite" autoDeploy="true" appBase="webapps" unpackWARs="true" deployOnStartup="true">
            <Alias>www.mysite.com</Alias>
            <Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeader="X-Forwarded-Proto"/>
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="mysite_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b"/>
            <Context path="/mysite" docBase="mysite" reloadable="true"/>
        </Host>
    
    
    www.mysite.com
    
    添加到@Rob Hruska的sol中,server.xml内部部分中的此设置起作用:

    <Context path="" docBase="gateway" reloadable="true" override="true"> </Context>
    
    
    

    注意:在某些情况下可能需要override=“true”

    添加到@Rob Hruska的sol中,server.xml内部部分中的此设置起作用:

    <Context path="" docBase="gateway" reloadable="true" override="true"> </Context>
    
    
    

    注意:在某些情况下可能需要override=“true”

    删除
    $CATALINA\u HOME/webapps/ROOT
    。更新
    $CATALINA_HOME/conf/server.xml
    ,确保主机元素如下所示:

    <Host name="localhost"  appBase="webapps"
          unpackWARs="true" autoDeploy="false" deployOnStartup="false">
      <Context path="" docBase="myApp"></Context>
    
    
    

    它与Tomcat8一起工作。autoDeploy和deployOnStartup需要设置为false,以防止tomcat部署两次
    myApp

    删除
    $CATALINA\u HOME/webapps/ROOT
    。更新
    $CATALINA_HOME/conf/server.xml
    ,确保主机元素如下所示:

    <Host name="localhost"  appBase="webapps"
          unpackWARs="true" autoDeploy="false" deployOnStartup="false">
      <Context path="" docBase="myApp"></Context>
    
    
    

    它与Tomcat8一起工作。autoDeploy和deployOnStartup需要设置为false,以防止tomcat两次部署myApp。

    我知道我的答案与其他答案有些重叠,但这是一个完整的解决方案,有一些优点。这适用于Tomcat 8:

  • 主应用程序从根目录提供服务
  • war文件通过web界面的部署得到维护
  • 主应用程序将在端口80上运行,而只有管理员可以访问管理文件夹(我知道*nix系统需要超级用户才能绑定到80,但在windows上这不是问题)
  • 这意味着您只需重新启动tomcat一次,更新后的war文件可以毫无问题地部署

    步骤1: 在server.xml文件中,找到连接器条目并将其替换为:

    <Connector 
        port="8080"
        protocol="HTTP/1.1"
        connectionTimeout="20000"
        redirectPort="8443" />
    
    <Connector
        port="80"
        protocol="HTTP/1.1"
        connectionTimeout="20000"
        redirectPort="8443" />
    
    这实际上限制了来自我自己的域(假IP地址)和本地主机的人访问admin web app文件夹,因为他们使用默认端口8080,并保持通过web界面动态部署war文件的能力

    如果要对使用不同IP地址的多个应用程序使用此选项,可以将IP地址添加到连接器中(
    address=“143.21.2.1”


    如果要从根目录运行多个web应用程序,可以复制服务标签(第二个使用不同的名称),并将
    的docbase更改为例如

    我知道我的答案与其他答案有点重叠,但这是一个具有某些优势的完整解决方案。这适用于Tomcat 8:

  • 主应用程序从根目录提供服务
  • war文件通过web界面的部署得到维护
  • 主应用程序将在端口80上运行,而只有管理员可以访问m