Как указать путь в META-INF / context.xml для Tomcat - PullRequest
13 голосов
/ 08 марта 2012

Я использую Tomcat 7 и хотел бы установить корень контекста файла war в самом файле war, сделать автоматическое развертывание Tomcat и выбрать этот путь.Я думал, что нашел способ сделать это, поместив context.xml в каталог META-INF войны, который содержит.

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

Но, похоже, это не работает, я думаю, что он загружаетсяhttp://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/startup/SetContextPropertiesRule.html, в котором говорится, что он загружает все, кроме пути!

Я знаю, что могу назвать войну somepath # myapp.war, и он его подберет, но я также развернусь в weblogic, что не радуетс таким именем.

Есть ли какая-то настройка, которую я могу использовать, чтобы путь работал из файла context.xml выше?

Спасибо, Дэвид

Ответы [ 4 ]

14 голосов
/ 13 марта 2012

Атрибут Context path игнорируется, если путь не указан в жестком коде Context в server.xml, что категорически не рекомендуется и не принимает многоуровневые пути.

Имяфайла war или имя файла Context xml в tomcat/conf/Catalina/hostname становится path развернутого приложения.

В вашем случае последнее из двух приведенных выше решений является решением, просто убедитесь, что выпоместите файл .war за пределы назначенного appBase для хоста, или вы дважды развернете приложение.

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

<?xml version="1.0"?>
<Context docBase="/some/path/to/myapp.war">
</Context>
2 голосов
/ 25 июня 2014

В /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>

Это приведет к тому, что корневое приложение по умолчанию будет отображаться в корне контекста "/ROOT".

Теперь ваше приложение доступно также в" / "и" / mycom "!

1 голос
/ 27 декабря 2013

добавить copyXML = "true" в конфигурацию хоста внутри $ TOMCAT_HOME / conf / server.xml, как

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true" copyXML="true">
0 голосов
/ 27 февраля 2013

Если вы загружаете ваш application.war в каталог, о котором Tomcat не знает, как он может что-либо прочитать в вашем файле war? Правильное место для добавления этой информации находится в $ TOMCAT_HOME / conf / context.xml - это часть Tomcat, и Tomcat может прочитать этот файл и узнать, где находится ваше приложение, и развернуть его. На есть больше о том, как настроить JNDI в Tomcat

...