Встроенное веб-приложение RESTEasy-Spring создает загадочную ошибку: NoResourceFoundFailure - PullRequest
0 голосов
/ 24 июня 2010

Я работаю над веб-приложением, которое использует Spring Framework и RESTEasy.Приложение было настроено на отправку запросов 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

Мне кажется, что REST внезапно пытается обработать все запросы не только запросы, которые соответствуют шаблону URL / AutomatedProcessing / rest / *. Я не нашел подробностей об исключении NoResourceFoundFailure или о том, почему REST будет пытаться обрабатывать запросы вне назначенного ему URLшаблон.Исключение не является фатальным для пользователя, но я думаю, что оно может разрушить то, о чем я не знаю.Кроме того, исключения в журналах никогда не бывают забавными.Я был бы очень признателен за понимание этого исключения!

1 Ответ

1 голос
/ 01 июля 2010

Ответ пришел из вопроса заказа.

У меня был другой UrlHandlerMapping, настроенный в файле config.xml:

<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>

Это сопоставление не имело свойства "порядок", что означает, что порядок был установлен по умолчанию. ResteasyHandlerMapping, который обрабатывает ресурсы RESTEasy, был найден в JBoss, включенном в файл sprincmvc-resteasy.xml. Это отображение также не имело свойства "order". Это привело к тому, что оба отображения имели одинаковый приоритет упорядочения, и поскольку отображение RESTEasy было первым в XML, оно пыталось обработать все запросы.

Решение: добавьте это свойство в ваш URL-адрес по умолчанию:

<property name="order" value="0"/>
...