0

私はSpringFrameworkとRESTEasyの両方を使用するWebアプリに取り組んでいます。アプリはしばらくの間RESTリクエストを送信するように構成されていますが、最近、RESTリクエストも受信するように設定しました。web.xmlを適切に構成しましたが、アプリは問題なくRESTリクエストを受信して​​処理しました。

これがweb.xmlスニペットで、RESTセットアップの詳細を示しています。

<listener>
    <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>

<listener>
    <listener-class>
        org.jboss.resteasy.plugins.spring.SpringContextLoaderListener
    </listener-class>
</listener>

...

<servlet>
    <servlet-name>Resteasy</servlet-name>
    <servlet-class>
        org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
    </servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Resteasy</servlet-name>
    <url-pattern>/AutomatedProcessing/rest/*</url-pattern>
</servlet-mapping>

ただし、ブラウザでアプリを歩き回ると、ログに次の例外が表示され続けます。

    org.jboss.resteasy.springmvc.ResteasyHandlerMapping - Resource Not Found: Could not find resource for relative :
org.jboss.resteasy.spi.NoResourceFoundFailure: Could not find resource for relative : /AccountManagement/login.do of full path: https://dev.produceredge.com:7002/AccountManagement/login.do

/ AutomatedProcessing / rest / * URLパターンに一致するリクエストだけでなく、RESTが突然すべてのリクエストを処理しようとしているように見えます。NoResourceFoundFailure例外 の詳細、またはRESTが割り当てられたURLパターン外のリクエストを処理しようとする理由がわかりません。例外はユーザーにとって致命的ではありませんが、私が知らない何かを破壊している可能性があると思います。さらに、ログの例外は決して楽しいものではありません。この例外についての洞察をいただければ幸いです。

4

1 に答える 1

1

答えは注文の問題から来ました。

config.xmlファイルに別のUrlHandlerMappingを設定しました。

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="interceptors">
            <list>
                <ref bean="openPersistenceManagerInView"/>
            </list>
        </property>
        <property name="mappings">
            <value>
                **/AccountManagement/login.do=flowController
                **/AccountManagement/createAccount.do=flowController
                **/AccountManagement/manageAccount.do=flowController
            </value>
        </property>
        <property name="alwaysUseFullPath" value="true"/>
    </bean>

このマッピングには「order」プロパティがありませんでした。つまり、順序はデフォルト値に設定されていました。RESTEasyリソースのマッピングを処理するResteasyHandlerMappingは、JBossに含まれるsprincmvc-resteasy.xmlファイルで見つかりました。このマッピングにも「order」プロパティがありませんでした。これにより、両方のマッピングの順序が同じになり、RESTEasyマッピングがXMLの最初に来るため、すべての要求を処理しようとしました。

解決策:このプロパティをデフォルトのURLマッパーに追加します。

<property name="order" value="0"/>
于 2010-06-30T20:15:33.097 に答える