我使用spring-jersey來公開休息服務。我的web.xml如下所示:Spring-jersey如何在多個環境下公開服務
<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>
讓說標準。 我在很多軟件包中都有很多休息服務,我需要在兩個環境中對它們進行組合,比如說「基礎」和「高級」服務。此外,我需要擺脫url模式中的「休息」前綴。所以我想對他們組分成兩個包,然後在web.xml中定義了兩個球衣的Servlet與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>
它抓住每一個。
另請參閱:http://stackoverflow.com/questions/5269450/multiple-packages-in-contextcomponent-scan-spring-config – AHungerArtist
問題是,base-package的設置方式是所有其他服務都可用在兩種情況下。 – Espeen
您可以嘗試過濾器。 http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-scanning-filters – AHungerArtist