Ich versuche, einen einfachen REST-Service zu erhalten mit Frühling 3.0 zu arbeiten, aber in einen blockierenden Fehler stieß halten:Frühling 3.0 REST Implementierung DispatcherServlet nicht-Mapping findet
Keine Zuordnung für HTTP-Anforderung mit URI gefunden [/ Reise/us/NYC/sfo/20091010/1122/true /] in DispatcherServlet mit dem Namen 'Dispatcher' *
jedoch in der Protokolldatei heißt es auch:
org.springframework.web.servlet.mvc.annotation .Def aultAnnotationHandlerMapping - Zugeordneter URL-Pfad [/ travel/us/{von}/{to}/{date}/{time}/{departure} /] auf den Handler [[email protected]] *
, die ich als eine Anzeige gelesen, dass es eine Abbildung von dem URI zu der experiment.SomeController Klasse als Handler ist.
Ich muß einen einfachen Fehler in einen der Konfigurationsdateien wird mit Blick auf, aber nach allem, was mehrmals überprüft und dabei ziemlich viel Googeln ich eine Lösung noch nicht gefunden haben. Ich habe bereits das Logging für die Spring-Klassen eingeschaltet, aber das hat das Problem auch nicht aufgedeckt.
Im Folgenden finden Sie die relevanten Konfigurationsdateien und einige Code-Schnipsel, auf die Sie sich beziehen können. Die Webapp wird auf Glassfish v2.1 bereitgestellt und ich benutze das M3-Build von Spring 3.0.0 auf JDK1.5 unter OS X.
Ziel ist es, dass die getTripDetails() eine XML-Version der Tripdetails zurückgibt . Daher die Verwendung der MarshallingView.
Von 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>
Von Dispatcher-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>
Die Controller-Klasse: @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;
}
}
Irgendwelche Gedanken auf, was ist los? Oder ein Zeiger auf ein funktionierendes Beispiel für einen REST-Service mit Spring 3.0, der XML als Ausgabe hat?
Grüße, Gero
Das war Teil der Lösung. Außerdem musste ich die Bean der Bean, die die Ansicht ist, mit der definierten URL ausrichten. Also: und in der Steuerung: @RequestMapping (value = "/ content/...") –
Gero
Diese Lösung funktioniert nicht mindestens auf Google App Engine. – pjesi