如何在META-INF/context.xml中为Tomcat指定路径

如何在META-INF/context.xml中为Tomcat指定路径,tomcat,tomcat7,Tomcat,Tomcat7,我正在使用Tomcat 7,希望在war文件本身中设置war文件的上下文根,并让Tomcat自动部署和选择此路径。 我想我找到了一种方法,将context.xml放在war的META-INF目录中,该目录包含 <?xml version="1.0" encoding="UTF-8"?> <Context path="/somepath/myapp"/> 但这似乎不起作用,我认为它是由哪个状态加载的,它加载的除了路径之外的所有东西 我知道我可以把战争命名为somepa

我正在使用Tomcat 7,希望在war文件本身中设置war文件的上下文根,并让Tomcat自动部署和选择此路径。 我想我找到了一种方法,将context.xml放在war的META-INF目录中,该目录包含

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/somepath/myapp"/>

但这似乎不起作用,我认为它是由哪个状态加载的,它加载的除了路径之外的所有东西

我知道我可以把战争命名为somepath#myapp.war,它会把它取出来,但我也会把它部署到weblogic,它不喜欢这样的名字

是否有一些设置可用于从上面的context.xml执行路径

谢谢
David

除非在
server.xml
中的硬编码
上下文中指定了路径,否则上下文
path
属性将被忽略,这是非常不鼓励的,并且不会采用多级路径

war文件的名称或
tomcat/conf/Catalina/hostname
中上下文xml文件的名称将成为部署的应用程序的
路径

在您的情况下,以上两种方法中的后一种是解决方案,只需确保将
.war
文件放在主机指定的
appBase
之外,否则您将部署两次应用程序

在:
conf/Catalina/localhost/myapp#path.xml

<?xml version="1.0"?>
<Context docBase="/some/path/to/myapp.war">
</Context>

如果将application.war加载到Tomcat不知道的目录中,它如何读取war文件中的任何内容?添加此信息的正确位置是$TOMCAT_HOME/conf/context.xml——这是TOMCAT的一部分,TOMCAT可以读取此文件,找出应用程序所在的位置并部署它。在$TOMCAT_HOME/conf/server.xml中添加copyXML=“true”到主机配置中有更多内容

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true" copyXML="true">

在/tomcat7/conf/server.xml中,在元素内添加以下行,然后重新启动Tomcat以进行更改

*将“mycom”更改为您的应用程序名称

<Context path="" docBase="mycom">
  <!-- 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
这将使默认根应用程序显示在上下文根“/根”下


现在您的应用程序也可以通过“/”和“/mycom”访问

这也为我解决了同样的问题谢谢你。但是,我认为忽略路径属性是Tomcat的缺陷。文件甚至说了相反的话。更糟糕的是,docBase似乎被Tomcat7.0.22忽略了,所以唯一的方法是对context.xml和.war使用这些愚蠢的哈希名称#唉……这并不愚蠢。由于明显的原因,您不能在文件名中使用/(或者)字符。path属性应该被删除。这太让人困惑了。我不反对散列,我认为我被迫通过文件名而不是参数path和docBase来确定上下文路径是不好的。例如,通过这种方式,实际上我无法部署任何名为myapp-v1.2.3beta.war的文件。好的,我可以设置一个别名,但另一种方式会更好。当然可以:myapp##v1.2.3beta.war/myappI同意@zakmck这是个坏主意上下文路径它由war文件名决定,而不是META-INF/context.xml文件中的属性“path”。这很让人困惑,我花了很多时间在这条语句中找到:“只有在server.xml中静态定义上下文时才能使用此属性(路径)…”欢迎使用Stack Overflow!谢谢你的回复!请务必仔细阅读本手册。还请注意,每次链接到自己的网站/产品时,都需要发布免责声明。我希望这会奏效,但最终还是忽略了价值。这在旧版本的Tomcat中适用,但在Tomcat7中不适用。