Определите контекст сервлета в ВОЕННОМ Файле

Как я могу сказать, например, Tomcat для использования определенного пути контекста при предоставлении моего ВОЕННОГО Файла?

Пример: Мне создала военный файл сборка знатока, и получающееся название файла довольно длинно. Таким образом, я не хочу, чтобы приложение менеджера кота использовало имя файла войны как контекст.

Предоставление context.xml в META-INF не приводило к желаемым результатам

Я также нашел это в документации для path атрибут Context:

Значение этого поля не должно быть установлено кроме тех случаев, когда, статически определяя Контекст в server.xml, поскольку это будет выведено из имен файлов, используемых или для .xml файла контекста или для docBase.

Таким образом, это, кажется, не правильный способ сказать сервер приложений, каков путь для моей ВОЙНЫ должен быть.

Еще подсказки?

24
задан Bozho 7 April 2010 в 19:29
поделиться

3 ответа

В документации к Контейнеру контекста есть два важных момента:

  • В отдельных файлах (с расширением «.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 .

Я вижу здесь два варианта:

  1. Либо установить более короткое имя сгенерированной войны (я предлагаю использовать вместо , которое является устарело AFAIK):

      
     ...
      
      mycontext  
     ... 
      
     ... {{1} }  
     
  2. Или используйте maven-tomcat-plugin для развертывания и укажите путь контекста в конфигурации плагина:

      {{1} } ... 
      
     ... 
      
     ... 
      
     < groupId> org.codehaus.mojo  
      tomcat-maven-plugin  
      1.0-SNAPSHOT  
     <конфигурация > 
      / mycontext  
      
      
     ... 
      
     ... 
      
     ... 
      
     
30
ответ дан 28 November 2019 в 23:34
поделиться

В вашем проекте есть папка META-INF, в которой находится файл context.xml.

<?xml version="1.0" encoding="UTF-8"?>
<Context  path="/myproject" />
3
ответ дан 28 November 2019 в 23:34
поделиться

Вы можете установить 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>
4
ответ дан 28 November 2019 в 23:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: