我正在尝试使用针对struts2 spring3 Web应用程序的jersey公开webservice
我的web.xml
<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.vxl.appanalytix.service.impl</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 REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
在 struts.xml 中,我添加了excludePattern
<constant name="struts.action.excludePattern" value="/rest/.*" />
服务类
@Path("/requirement")
@Service("dimRequirementManager")
public class DimRequirementManagerImpl extends GenericManagerImpl<DimRequirement, Long> implements DimRequirementManager {
@Autowired
DimRequirementDao dimRequirementDao;
@GET
@Path("count")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public DimRequirement getDimRequirement(){
DimRequirement dimRequirement = new DimRequirement();
dimRequirement.setClientKey(123L);
dimRequirement.setPriority("HIGH");
return dimRequirement;
}}
依赖
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-spring</artifactId>
<version>1.17.1</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
</exclusions>
</dependency>
我在restclient http://localhost:8080/app-web/rest/requirement/count
中传递了以下网址
Status Code: 404 Not Found
Content-Language: en
Content-Type: text/html;charset=utf-8
Date: Wed, 25 Sep 2013 05:47:27 GMT
Server: Apache-Coyote/1.1
Transfer-Encoding: chunked
当debuging控制没有进入 getDimRequirement()
答案 0 :(得分:0)
我已经解决了这个问题。我的web.xml中有一个url重写过滤器。
<filter>
<filter-name>rewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
<param-name>logLevel</param-name>
<param-value>commons</param-value>
</init-param>
<init-param>
<param-name>confReloadCheckInterval</param-name>
<param-value>-1</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>rewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在 urlrewrite.xml 中我添加了
<rule>
<from>/rest/**</from>
<to>/rest/$1</to>
</rule>