Контекст Tomcat, использующий конфликт Джерси
Я использую Джерси для создания веб-сервера
мой каталог проекта имеет следующее отображение
ProjectName
|.. src/main/java
|.. folder1
|.. restEndpoint1.java , restendpoint2.java etc
Пример того, как выглядит restEndpoint1.java:
@Path("/static1/static2")
public class DoStuff {
@POST
@Path("/static3")
@Consumes(MediaType.APPLICATION_XML)
@Produces("application/xml")
public Response validation(String inputXML){
так пример моего URL при развертывании в Tomcat является
localhost:port/projectName/foldername/{restendpoint1.path}
мой web.xml
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>folder1</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/folder1/*</url-pattern>
</servlet-mapping>
Теперь я должен развернуть эту войну как различные контексты, используя путь контекста в веб-интерфейсе tomcat (я использую Tomcat 7)
т.е. я хотел бы, чтобы URL был
http://localhost:port/{context1}/{restendpoint1.path}
http://localhost:port/{context2}/{restendpoint1.path}
Я знаю, что для каждого контекста будут открыты все остальные конечные точки, но меня это не волнует, мне просто нужно отобразить это таким образом. Проблема, с которой я сталкиваюсь,
1) в файле web.xml мне нужно дать имя папки в качестве параметра, чтобы он стал корневым, но с этим требованием контекста я не могу этого сделать. Также я не могу сопоставить каждому классу Java независимо (могу ли я??)
2) В пользовательском интерфейсе tomcat, как развернуть мое приложение в разных контекстах, я могу только загрузить войну или передать контекст, используя URL-адрес войны на сервере.
1 ответ
Решено путем изменения сопоставления в web.xml
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/folder1/*</url-pattern>
</servlet-mapping>
в
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>