2009-06-03 2 views
3

나는 스프링 3.0와 함께 작동하지만, 차단 오류에 부딪 치는 유지하기 위해 간단한 REST 서비스를 얻으려고 찾을 수 없습니다 :봄 3.0 REST 구현 DispatcherServlet에 매핑

에 매핑이 URI와 HTTP 요청을 찾을 수 없습니다를 [/ 여행/우리/뉴욕/SFO// 1122 20091010/참 /] 이름을 '디스'과의 DispatcherServlet에 *은

그러나 로그 파일에 또한 상태 :

org.springframework.web.servlet.mvc.annotation을 .Def aultAnnotationHandlerMapping - 핸들러에 [/ travel/us/{from}/{to}/{date}/{time}/{departure} /] 매핑 된 URL 경로 *

나는 URI에서 experiment.SomeController 클래스 핸들러로 매핑된다는 표시로 읽습니다.

내가 설정 파일 중 하나에서 간단한 오류를 간과해야하지만 여러 번 확인하고 꽤 많은 Google 검색을 한 후에 아직 해결책을 찾지 못했습니다. Spring 클래스 로깅을 이미 설정했지만 문제도 밝혀지지 않았습니다.

다음은 관련 설정 파일과 일부 코드 단편입니다. 도움말은 알 수 있습니다. webapp가 Glassfish v2.1에 배포되었고 OS 3.0에서 JDK1.5의 Spring 3.0.0 빌드를 사용하고 있습니다.

목표는 getTripDetails()가 tripdetails의 XML 버전을 반환하도록하는 것입니다. . 따라서 MarshallingView의 사용. web.xml 파일에서

:

 
<servlet> 
<servlet-name>dispatcher</servlet-name> 
<servlet-class>org.springframework.web.servlet.DispatcherSe rvlet</servlet-class> 
<load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
<servlet-name>dispatcher</servlet-name> 
<url-pattern>/*</url-pattern> 
</servlet-mapping> 

디스패처-servlet.xml 파일에서 :

 
<context:annotation-config /> 
<context:component-scan base-package="net.vermaas.reisadvies.server" /> 

<bean class="org.springframework.web.servlet.mvc.annotat ion.DefaultAnnotationHandlerMapping"> 
<property name="alwaysUseFullPath" value="true"/> 
</bean> 

<bean id="viewResolver" class="org.springframework.web.servlet.view.Conten tNegotiatingViewResolver"> 
<property name="mediaTypes"> 
<map> 
<entry key="xml" value="application/xml"/> 
</map> 
</property> 
<property name="viewResolvers"> 
<list> 
<bean class="org.springframework.web.servlet.view.BeanNa meViewResolver"/> 
<bean class="org.springframework.web.servlet.view.Intern alResourceViewResolver"> 
<property name="prefix" value="/WEB-INF/jsp/"/> 
<property name="suffix" value=".jsp"/> 
</bean> 
</list> 
</property> 
</bean> 

<bean id="marshaller" class="org.springframework.oxm.xstream.XStreamMars haller"> 
</bean> 

<bean id="content" class="org.springframework.web.servlet.view.xml.Ma rshallingView"> 
<property name="contentType" value="application/xml" /> 
<property name="marshaller" ref="marshaller"/> 
</bean> 

컨트롤러 클래스 : 무엇이 잘못되었는지에 @Controller public class SomeController {

static Logger logger = Logger.getLogger(SomeController.class);

public SomeController() { }

@RequestMapping(value="/travel/us/{from}/{to}/{date}/{time}/{departure}", method=RequestMethod.GET)

public ModelAndView getTripDetails(@PathVariable String from, @PathVariable String to, @PathVariable String date, @PathVariable String time, @PathVariable boolean departure, Model model) {

logger.debug("getTripDetails"); // not logged 

// Do some stuff 
TripDetails td = ... 

ModelAndView mav = new ModelAndView(); 
mav.setViewName("content"); 
mav.addObject("tripDetails", td); 

return mav; 

}

}

어떤 생각? 또는 XML이 출력으로있는 Spring 3.0을 사용하는 REST 서비스의 실제 예제에 대한 포인터?

감사합니다, 게로

답변

2

저도 같은 문제로 실행하고, 봄 3.0 작동하는 방식이 당신처럼 뭔가를해야 BU replaceing/*의 URL 패턴에/

+0

이것은 솔루션의 일부입니다. 그 외에도 뷰인 bean의 bean을 URL로 정렬해야했습니다. 따라서 : 컨트롤러에서 : @RequestMapping (value = "/ content/...") – Gero

+0

이 솔루션은 Google App Engine에서 적어도 작동하지 않습니다. – pjesi

2

에있다 이 :

<servlet-mapping> 
    <servlet-name>baseproj</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

그렇지 않으면 css, js 및 이미지가 해결되지 않습니다. 나는 그것이 빤다는 것을 알고있다. 그러나 끝내야한다. 어쨌든, mod_jk와 함께 아파치 http://localhost:8080/myapp/rest 부분을 가린다.

+0

Actully no. 예를 들어 * .css를 "기본"서블릿에 매핑하면 정적 파일이 제공됩니다. Tomcat의 경우 http://tomcat.apache.org/tomcat-6.0-doc/default-servlet.html을 참조하십시오. –

관련 문제