Я пытаюсь заставить простой сервис REST работать с Spring 3.0, но продолжаю сталкиваться с ошибкой блокировки:
Не найдено сопоставление для HTTP-запроса с URI [/ travel / us / nyc / sfo / 20091010/1122 / true /] в DispatcherServlet с именем «dispatcher» *
Однако в файле журнала также указано:
org.springframework.web.servlet.mvc.annotation.Def aultAnnotationHandlerMapping - сопоставленный путь URL [/ travel / us / {from} / {to} / {date} / {time} / {вылет} /] в обработчик [experiment.SomeController@dd9f85] *
, который я читаю как указание на то, что существует URI для эксперимента. Класс SomeController в качестве обработчика.
Должно быть, я пропускаю простую ошибку в одном из файлов конфигурации, но после того, как проверил все несколько раз и выполнил немало поисков, я еще не нашел решения. Я уже включил ведение журнала для классов Spring, но это также не выявило проблему.
Ниже приведены соответствующие файлы конфигурации и некоторые фрагменты кода, любая помощь указана. Веб-приложение развернуто на Glassfish v2.1, и я использую сборку M3 Spring 3.0.0 на JDK1.5 на OS X.
Цель состоит в том, чтобы getTripDetails () возвращал XML-версию tripdetails. Отсюда и использование 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>
Из 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>
Класс контроллера:
@Controller
public class SomeController {</p>
<p>static Logger logger = Logger.getLogger(SomeController.class);</p>
<p>public SomeController() {
}</p>
<p>@RequestMapping(value="/travel/us/{from}/{to}/{date}/{time}/{departure}", method=RequestMethod.GET)</p>
<p>public ModelAndView getTripDetails(@PathVariable String from,
@PathVariable String to,
@PathVariable String date,
@PathVariable String time,
@PathVariable boolean departure, Model model) {</p>
<pre><code>logger.debug("getTripDetails"); // not logged
// Do some stuff
TripDetails td = ...
ModelAndView mav = new ModelAndView();
mav.setViewName("content");
mav.addObject("tripDetails", td);
return mav;
}
}
Есть мысли о том, что не так? Или указатель на рабочий пример службы REST с Spring 3.0, в которой XML выводится?
С уважением,
Геро