Как я могу сказать, например, Tomcat для использования определенного пути контекста при предоставлении моего ВОЕННОГО Файла?
Пример: Мне создала военный файл сборка знатока, и получающееся название файла довольно длинно. Таким образом, я не хочу, чтобы приложение менеджера кота использовало имя файла войны как контекст.
Предоставление context.xml в META-INF не приводило к желаемым результатам
Я также нашел это в документации для path
атрибут Context
:
Значение этого поля не должно быть установлено кроме тех случаев, когда, статически определяя Контекст в server.xml, поскольку это будет выведено из имен файлов, используемых или для .xml файла контекста или для docBase.
Таким образом, это, кажется, не правильный способ сказать сервер приложений, каков путь для моей ВОЙНЫ должен быть.
Еще подсказки?
В документации к Контейнеру контекста есть два важных момента:
- В отдельных файлах (с расширением «.xml») в
$ CATALINA_BASE / conf / [enginename ] / [имя хоста] /
каталог. Имя файла (без расширения .xml) будет использоваться в качестве пути контекста . Пути многоуровневого контекста могут быть определены с помощью #, например foo # bar.xml для контекстного пути / foo / bar. Веб-приложение по умолчанию можно определить с помощью файла с именем ROOT.xml.- Только если файл контекста не существует для приложения в
$ CATALINA_BASE / conf / [enginename] / [hostname] /
, в отдельном файле в/ META-INF / context .xml
внутри файлов приложения. Если веб-приложение упаковано как WAR, то/META-INF/context.xml
будет скопирован в$ CATALINA_BASE / conf / [enginename] / [hostname] /
и переименован в соответствии с контекстным путем приложения . Как только этот файл существует, он не будет заменен, если новый WAR с более новым/META-INF/context.xml
будет помещен в appBase хоста.
Итак, когда вы связываете META-INF / context.xml
, файл переименовывается в имя WAR, и это имя становится контекстным путем, независимо от любого пути
, определенный в элементе Context
.
Я вижу здесь два варианта:
Либо установить более короткое имя сгенерированной войны (я предлагаю использовать
вместо
, которое является устарело AFAIK):
...
mycontext
...
... {{1} }
Или используйте maven-tomcat-plugin
для развертывания и укажите путь контекста в конфигурации плагина:
{{1} } ...
...
...
< groupId> org.codehaus.mojo
tomcat-maven-plugin
1.0-SNAPSHOT
<конфигурация >
/ mycontext
...
...
...
В вашем проекте есть папка META-INF, в которой находится файл context.xml.
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/myproject" />
Вы можете установить path
атрибут
элемента вашего META-INF/context.xml
.
В качестве альтернативы, вы можете настроить maven на создание военного артефакта с пользовательским именем:
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.0</version>
<configuration>
<warName>yourCustomWarName</warName>
</configuration>
</plugin>
........
</plugins>
</build>