Resteasy и весенняя интеграция без Spring ContextLoadListener


Я использую Resteasy и Spring для моего проекта. Как сказано в документе Resteasy: http://docs.jboss.org/resteasy/docs/3.0.1.Final/userguide/html_single/index.html#RESTEasy_Spring_Integration.

Мне нужно добавить слушателя в сеть.xml-файл:

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

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

Однако в моем проекте мы также использовали cms под названием magnolia, и magnolia также имеет реализацию для SpringContextLoaderListener. Если я поставлю оба контекста слушателя. Магнолии не будет началось, когда я запустил приложение.

Итак, согласно документу Resteasy сказано:

Если вы не используете Spring ContextLoaderListener для создания фабрик бобов, то вы можете вручную зарегистрировать RESTeasy BeanFactoryPostProcessor, выделив экземпляр org.с JBoss.отдыхай.подключаемый модуль.весна.SpringBeanProcessor. Экземпляры ResteasyProviderFactory и реестра можно получить из организации атрибутов ServletContext.с JBoss.отдыхай.спи.ResteasyProviderFactory и орг..с JBoss.отдыхай.спи.Регистратура. (На самом деле строка FQN этих классов). Существует также организация.с JBoss.отдыхай.подключаемый модуль.весна.SpringBeanProcessorServletAware, который будет автоматически вводить ссылки на реестр и ResteasyProviderFactory из контекста сервлета. (то есть, если вы использовали RestasyBootstrap для загрузки Resteasy).

Знает ли кто-нибудь, как я могу достичь этого без использования Resteasy ContextLoaderListener? Что мне нужно добавить в мой весенний applicationContext xml-файл?

1 5

1 ответ:

У меня также была проблема с RestEasy SpringContextListener (заполнители свойств ${...} не были обработаны - RESTEASY-787, Spring java config не работал и т. д.).
Поэтому достаточно отбросить RestEasy SpringContextListener и использовать default org.springframework.web.context.ContextLoaderListener или любой другой слушатель, который вам нужен. Вам просто нужно определить Spring bean в вашей конфигурации Spring XML следующим образом:

<bean class="org.jboss.resteasy.plugins.spring.SpringBeanProcessorServletAware"/>

, Чем RestEasy должен работать даже без специальной SpringContextListener. Это работает на меня.