Я использую весеннюю майку для выставления услуг по отдыху.Мой web.xml выглядит следующим образом:
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
Допустим, стандарт.У меня много служб отдыха во многих пакетах, и мне нужно объединить их в два контекста, скажем, «базовый» и «расширенный» сервисы.Более того, мне нужно избавиться от префикса rest в url-pattern.Поэтому я подумал о том, чтобы сгруппировать их в два пакета, а затем в web.xml определить два сервлета-джерси с параметром init com.sun.jersey.config.property.packages:
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.example.app.rest.base</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/base/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Another Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.example.app.rest.advanced</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Another Jersey REST Service</servlet-name>
<url-pattern>/advanced/*</url-pattern>
</servlet-mapping>
К сожалению, из-за сканирования компонентов, установленного вapplicationContext.xml
<context:component-scan base-package="com.example.app" />
свойство com.sun.jersey.config.property.packages игнорируется (все остальные службы могут быть доступны в каждом контексте), и с ним нельзя обращаться подобным образом.
Мне интересно, как я могу справиться с этим по-другому.Единственное, что я не хочу делать, это установить
<url-pattern>/*</url-pattern>
, который ловит все.