HttpservletRequest и ответ в прослушивателе Spring JMS

Может ли кто-нибудь сказать, есть ли способ получить HttpServletRequest и HttpServletResponse в классе прослушивателя Spring JMS? Мой прослушиватель JMS определен в файле springContext.xml.


person sea    schedule 29.02.2012    source источник
comment
Прослушиватель JMS запускается, когда доступны сообщения JMS. Зачем вам HTTPRequest в том же контексте?   -  person Tony R    schedule 29.02.2012
comment
Мне нужно вызвать какой-то метод, который имеет объект HttpServletRequest/Response в качестве параметров. Есть ли способ издеваться над этими объектами   -  person sea    schedule 29.02.2012
comment
Э, какой метод? Если это тот, который вы написали, и ему НЕ НУЖЕН HttpRequest (поскольку я не вижу ситуации, когда вы всегда имели бы и это, и сообщение JMS), то просто передайте null? Или рефакторинг...   -  person Tony R    schedule 29.02.2012


Ответы (2)


Прежде всего, у вас нет доступа к запросу и ответу сервлета HTTP в прослушивателях JMS. Это полностью независимые модули, которые могут находиться даже на разных физических серверах.

Вы можете использовать MockHttpServletRequest и MockHttpServletResponse из spring-test.jar, но они предназначены для использования в модульных/интеграционных тестах, а не в производственном коде.

Мне бы очень хотелось увидеть ваш код, который требует MockHttpServletRequest и ответа. Я предполагаю, что его можно реорганизовать или перепроектировать, чтобы использовать только соответствующие поля из приведенного выше, такие как URL-адрес запроса или имя пользователя.

person Tomasz Nurkiewicz    schedule 29.02.2012
comment
Информативное расширение моих комментариев. Не знал об этих фиктивных объектах, но здесь происходит большая проблема/путаница. Мои деньги уходят на решение по рефакторингу/редизайну. +1 - person Tony R; 02.03.2012

В итоге я использовал JAXDispatcher для вызова моей службы из моего слушателя JMS.

jaxbDispatcher.doGET(null, url, null, "application/xml", true);
person sea    schedule 03.05.2012
comment
Вы должны принять этот ответ, если вы решили свою проблему. - person j.w.r; 20.10.2012