2013-09-25 3 views
0

Я пытаюсь выставить WebService, используя трикотаж для веб-приложения struts2 spring3отдых с джерси struts2 spring3 не работает

мой 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> 

Я передаю ниже URL в 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 

когда отладки контроль не собирается в getDimRequirement()

+0

Я не уверен, но, возможно, 'struts.xml' проблема. Я вижу, что у вас есть '', и вы пытаетесь использовать URL-адрес, который не соответствует этому шаблону, поскольку он не '.' Может быть вы можете попробовать с помощью '' вместо этого. – idiazt

+0

Я получаю эту ошибку 'Нет действия, сопоставленного для пространства имен [/] и имени действия [rest/requirements/count], связанного с контентом path [/ appanalytix-web]. - [unknown location] ' – jos

ответ

0

Я решил проблему. У меня был фильтр перезаписи url в моем web.xml.

<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> 
+0

Не могли бы вы добавить еще код? (Полный web.xml) У меня та же проблема. В моем случае у меня есть развитое приложение в struts2, и теперь мы хотим интегрировать службы отдыха с весной MVC. Я хотел бы исключить Struts2 из просмотра/отдыха ... Но в HttpServletRequest контроллера покоя я получаю экземпляр struts2. Я реализовал то, что вы пока не добились успеха. Спасибо – mannuk

+0

вы добавили '' в свой struts.xml. это то, что большинство из них сказали мне сделать – jos

+0

Ни значение = «/ rest/*», ни «/ rest/*» не работают. Я заменил struts * filter на * .html в web.xml, чтобы он работал, но я бы хотел использовать логику struts для исключения шаблонов, потому что в какой-то день было бы возможно, что новый сервлет обслуживает html – mannuk

Смежные вопросы