如何在Tomcat 7.0中设置Web应用程序的上下文路径

Cha*_*ntz 158 tomcat root context.xml tomcat7

我知道我可以将我的webapp(或它的WAR文件)重命名为ROOT,但这是一种可怕的方法,恕我直言.现在我查看了tomcat doc并且它说

建议不要将元素直接放在server.xml文件中

所以我尝试了它建议的另一种方法.

可以显式定义单个Context元素:在应用程序文件内的/META-INF/context.xml中的单个文件中.

所以我/META-INF/context.xml用以下代码创建了一个,

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/"/>
Run Code Online (Sandbox Code Playgroud)

但是在重新启动服务器后部署它仍然无法加载"/"上下文时,它仍然加载了它 "/<WEB_APP_NAME>"

任何指针都有帮助.

Paa*_*ske 228

你能做的是以下几点;

添加一个名为ROOT.xml<catalina_home>/conf/Catalina/localhost/

此ROOT.xml将覆盖该引擎和主机(Catalina和localhost)的tomcat安装的根上下文的默认设置.

在ROOT.xml文件中输入以下内容;

<Context 
  docBase="<yourApp>" 
  path="" 
  reloadable="true" 
/>
Run Code Online (Sandbox Code Playgroud)

在这里,<yourApp>是你的应用程序的名称.. :)

你去了,你的应用程序现在是默认的应用程序,并将出现 http://localhost:8080

但是,有一个副作用; 您的应用程序将加载两次.一次为localhost:8080一次,为一次localhost:8080/yourApp.要解决此问题,您可以将应用程序放在OUTSIDE <catalina_home>/webapps并在ROOT.xml的docBase标记中使用相对或绝对路径.像这样的东西;

<Context 
  docBase="/opt/mywebapps/<yourApp>" 
  path="" 
  reloadable="true" 
/>
Run Code Online (Sandbox Code Playgroud)

然后应该一切都好!

  • 投票结果?好的,但为什么呢?如果有更好的选择,请告诉我!:d (29认同)
  • 我发现如果你没有重命名/ webapps下的默认ROOT文件夹"cat come back",它会重置ROOT.xml中的docBase.这是VMWare的vfabric tc开发服务器......请注意. (8认同)
  • 要解决双重部署,您还可以在server.xml中设置Host属性的"deployOnStartup"和"autoDeploy"false (4认同)
  • 看来Tomcat 7现在不允许在/ webapps内部使用docBase,因此似乎必须在其他地方找到war文件. (3认同)
  • 查看文档http://tomcat.apache.org/tomcat-7.0-doc/config/context.html docbase是path/to/yourApp,路径必须是“”(所以是空字符串)意味着根上下文 (2认同)

rod*_*pes 12

以下是唯一对我有用解决方案.将其添加到conf/server.xml中的Host节点

<Context path="" docBase="yourAppContextName">

  <!-- Default set of monitored resources -->
  <WatchedResource>WEB-INF/web.xml</WatchedResource>

</Context>
Run Code Online (Sandbox Code Playgroud)

转到Tomcat server.xml文件并将路径设置为空

  • server.xml中还有一个上下文xml标记但不建议使用server.xml用于上下文定义 (6认同)

MK *_*ung 6

在Tomcat 9.0中,我只需要在 server.xml

<Context docBase="web" path="/web" reloadable="true" source="org.eclipse.jst.jee.server:web"/>
Run Code Online (Sandbox Code Playgroud)

<Context docBase="web" path="" reloadable="true" source="org.eclipse.jst.jee.server:web"/>
Run Code Online (Sandbox Code Playgroud)