Реализация Spring 3.0 REST DispatcherServlet не может найти сопоставление - PullRequest
3 голосов
/ 03 июня 2009

Я пытаюсь заставить простой сервис 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 выводится?

С уважением, Геро

Ответы [ 2 ]

2 голосов
/ 27 ноября 2009

Вы должны сделать что-то вроде этого:

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

В противном случае ваши CSS, JS и изображения не будут решены. Я знаю, что это отстой, но должно быть сделано. В любом случае я маскирую часть http://localhost:8080/myapp/rest с помощью apache mod_jk, поэтому это не имеет значения.

2 голосов
/ 30 июня 2009

Я тоже столкнулся с той же проблемой, и способ, которым он работает с Spring 3.0, заменяет / * в шаблоне url на /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...