Как зарегистрировать слушателя без web.xml - PullRequest
0 голосов
/ 27 марта 2012

Я сейчас работаю над проектом гризли, пружины и трикотажа, и я столкнулся с:

Caused by: java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet/DispatcherPortlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request.
    at org.springframework.web.context.request.RequestContextHolder.currentRequestAttributes(RequestContextHolder.java:131)
    at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:40)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:328)
    ... 32 more

На основе трассировки стека (а также результатов, когда я Google), я должен зарегистрировать слушателя вweb.xml

<web-app ...>
   <listener>
    <listener-class>
        org.springframework.web.context.request.RequestContextListener
    </listener-class>
   </listener>
</web-app>

Итак, мой вопрос, как мне зарегистрировать слушателя на сервере гризли, если у меня нет web.xml?

1 Ответ

0 голосов
/ 28 марта 2012

Не видя больше вашего кода, я полагаю, будет использовать ServletHandler - посмотрите пример источника в верхней части Javadocs для этого класса:

В обычном приложении Spring зарегистрированный слушатель для запуска контекста, а затем сервлет диспетчеризации для большинства других вещей, так что вы можете изменить пример кода, чтобы сделать это.

Что-то вроде (полностью не проверено):

sa.setServlet(new org.springframework.web.servlet.DispatcherServlet());
sa.addListener(org.springframework.web.context.ContextLoaderListener.class.getName());
sa.addContextParameter("contextConfigLocation", "beans.xml");
sa.setServletPath("/*");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...