Контекст 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>
Другие вопросы по тегам