我有一个名为cat_tiger.war的应用程序,它被部署为localhost:8080 / cat_tiger,但我想将上下文路径更改为localhost:8080 / cat / lion / . 我已将META-INF / context.xml文件添加为
<?xml version="1.0" encoding="UTF-8"?> <Context copyXML="true" docBase="cat_tiger" path="/cat/lion"/>
和server.xml文件
<Host name="localhost" appBase="webapps" copyXML="true" deployXML="true" unpackWARs="true" autoDeploy="true">
但它仍然部署为localhost:8080 / cat_tiger /
关于还有什么需要改变的想法?
编辑:[1] Tomcat 8.5.3
[2] 04-Sep-2018 13:50:41.830 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of configuration descriptor [/opt/tomcat/conf/Catalina/localhost/cat_tiger.xml] has finished in [2,750] ms ... ... 04-Sep-2018 13:50:39.070 WARNING [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor A docBase [/opt/tomcat/webapps/cat_tiger] inside the host appBase has been specified, and will be ignored
[3]我正在通过Netbeans进行部署,但最终必须部署在Docker容器中 .
1 回答
我没有't understand why you are having problems, but I'使用NetBeans 8.2(文件>新项目...> Java Web> Web应用程序)创建了Web项目,并成功更改了上下文,因此如果我提供项目的详细信息,您可以确定哪里存在重大差异 .
1 cat_tiger\web\META-INF\context.xml
我的文件与您的文件相同:
[2]运行输出
选择项目节点,右键单击并从弹出菜单中选择 Run 以在Tomcat 8.5上运行:
实际上,您可能不需要运行应用程序来查看问题;只需从弹出菜单中选择 Deploy 而不是 Run . 这是我从 Deploy 获得的输出:
[3] Tomcat日志
以下是Tomcat日志中的部署详细信息,您可以在其中看到我的部署正确显示了上下文,而您的部署则没有:
[4] C:\apache-tomcat-8.5.20\conf\Catalina\localhost\cat#lion.xml
这是Tomcat在部署应用程序时创建的文件:
请注意 docBase 包含绝对路径 .
[5] server.xml
这里's the entire content. I'm使用Tomcat 8.5 . 请注意
<host>
元素与您的元素略有不同,但是当我将copyXML="true" deployXML="true"
添加到<host>
元素(因此看起来像你的元素)时,一切都继续正常工作:Updated 9/6/2018:
忽略上面给出的答案!即使它恰好适用于我的配置,但在Tomcat文档中明确禁止该方法 .
具体而言,不应在放置在应用程序 META-INF 目录中的 context.xml 文件的
<Context>
中指定 path . 从Common Attributes section of the Tomcat 8.5 documentation中 path 描述的Context容器: