2013-07-16 2 views
1

В моем текущем состоянии pom.xml я естьTomcat 7 Maven Plugin множественный контекст

<plugin> 
    <groupId>org.apache.tomcat.maven</groupId> 
    <artifactId>tomcat7-maven-plugin</artifactId> 
    <version>2.0</version> 
    <configuration> 
    <path>/myPath</path> 
    </configuration> 
</plugin> 

это работает отлично. Теперь я пытаюсь добавить дополнительный контекст для изображений на сервере, , так что «старый» контекст /myPath направляет webapp и /images может использоваться для обращения к изображениям.
Я попытался добавить файл контекста, но когда я это сделаю, загружается только мой /images контекст.
Кроме того, я не хочу строить войны каждый раз (это было бы в случае, если я использовал два context.xml файлов для двух контекстов)

Можно ли добавить) контекст, как это (текущее состояние разработки с помощью tomcat7: запустить AND b) второй контекст/изображения, которые указывают только на локальную папку? А как?

+0

[ответил здесь] (http://stackoverflow.com/a/10059792/978502) – yair

ответ

2

Хотя это answered here, думал, что это было бы хорошо, чтобы получить возможность отправлять как XML должен выглядеть следующим образом:

<plugin> 
    <groupId>org.apache.tomcat.maven</groupId> 
    <artifactId>tomcat7-maven-plugin</artifactId> 
    <version>2.0</version> 
    <configuration> 
    <path>/myPath</path> 
    <staticContextPath>/images</staticContextPath> 
    </configuration> 
</plugin> 

Другой ответ использует staticContextDocbase вместо staticContextPath, и я не могу сказать, разница между двумя , но один из них должен работать. Не пробовал сам, хотя,)


документ для Tomcat из этих двух свойств:

staticContextDocbase:

статический контекст DOCROOT база полный путь

staticContextPath:

Статический контекст

Может быть, fully qualified path в отличие от относительного пути.


Ну, я углубился немного в плагин и код Apache, и обнаружили, что вам нужно какstaticContextDocbase и staticContextPath.

staticContextDocbase - путь, из которого статический контекст должен быть получен Tomcat. В вашем случае это C:/images.

staticContextPath является частью URL-адреса после http://<hostname>:<port>, для которого статический контекст должен быть отправлен клиенту. В вашем случае это /images.

Maven должен быть настроен следующим образом:

<plugin> 
    <groupId>org.apache.tomcat.maven</groupId> 
    <artifactId>tomcat7-maven-plugin</artifactId> 
    <version>2.0</version> 
    <configuration> 
    <path>/myPath</path> 
    <staticContextPath>/images</staticContextPath> 
    <staticContextDocbase>C:/images</staticContextDocbase> 
    </configuration> 
</plugin> 

Еще одно замечание:

As seen here, плагин использует Tomcat.addContext(String contextPath, String baseDir), staticContextPath передается как contextPath и staticContextDocbase передается как baseDir. В документе для baseDir указано, что оно Must exist, relative to the server home.

OTOH, что baseDir перемещается как Context.setBaseDir(String docBase). Документ на , что метод для baseDir утверждает, что This can be an absolute pathname, a relative pathname, or a URL..

Попробуйте использовать полный путь. Если это не работает, обратитесь за родственником;).

+0

так как я могу связать локальную папку со статическим путем? –

+0

@MatthiasG что вы называете «локальной папкой»? – yair

+0

Я хотел бы, чтобы мой контекст (/ myPath) указывал на webapp im development и localhost: 8080/images point to ie C: \ data \ images –