3

Spring 3.0で動作する単純なRESTサービスを取得しようとしていますが、ブロッキングエラーが発生し続けます。

'dispatcher'*という名前のDispatcherServletにURI[/travel / us / nyc / sfo / 20091010/1122 /true/]のHTTPリクエストのマッピングが見つかりません

ただし、ログファイルには次のようにも記載されています。

org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping-ハンドラー[実験にマップされたURLパス[/travel/ us / {from} / {to} / {date} / {time} /{departure}/]。 SomeController @ dd9f85] *

これは、URIからexperiment.SomeControllerクラスへのハンドラーとしてのマッピングがあることを示すものとして読みました。

構成ファイルの1つにある単純なエラーを見落としているに違いありませんが、すべてを数回チェックし、かなりのグーグルを実行した後、まだ解決策が見つかりません。Springクラスのロギングをすでにオンにしましたが、それでも問題は明らかになりませんでした。

以下は、関連する構成ファイルといくつかのコードスニペットです。WebアプリはGlassfishv2.1にデプロイされており、OSXのJDK1.5でSpring3.0.0のM3ビルドを使用しています。

目標は、getTripDetails()がtripdetailsのXMLバージョンを返すようにすることです。したがって、MarshallingViewの使用。

web.xmlから:

<サーブレット>
<servlet-name>ディスパッチャー</servlet-name>
<servlet-class> org.springframework.web.servlet.DispatcherServlet </ servlet-class>
<load-on-startup> 1 </ load-on-startup>
</ servlet>

<サーブレットマッピング>
<servlet-name>ディスパッチャー</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.annotation.DefaultAnnotationHandlerMapping">
<property name = "alwaysUseFullPath" value = "true" />
</ bean>

<bean id = "viewResolver" class = "org.springframework.web.servlet.view.Conten tNegotiatingViewResolver">
<property name = "mediaTypes">
<地図>
<entry key = "xml" value = "application / xml" />
</ map>
</プロパティ>
<property name = "viewResolvers">
<リスト>
<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>
</プロパティ>
</ bean>

<bean id = "marshaller" class = "org.springframework.oxm.xstream.XStreamMarshaller">
</ 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サービスの実例へのポインターですか?

よろしく、下呂

4

2 に答える 2

2

次のようなことをしなければなりません:

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

そうしないと、css、js、および画像が解決されません。私はそれがひどいことを知っていますが、やらなければなりません。とにかくhttp://localhost:8080/myapp/rest部分を apache mod_jk でマスクするので問題ありません。

于 2009-11-26T22:00:14.620 に答える
2

私も同じ問題に遭遇しました。Spring 3.0 で動作する方法は、url-pattern の /* を / に置き換えることです。

于 2009-06-30T09:34:40.743 に答える