没有Spring ContextLoadListener的Resteasy和Spring集成

时间:2013-07-15 14:04:25

标签: spring resteasy magnolia

我正在为我的项目使用Resteasy和Spring。正如Resteasy文件所说:http://docs.jboss.org/resteasy/docs/3.0.1.Final/userguide/html_single/index.html#RESTEasy_Spring_Integration

我需要在web.xml文件中添加一个监听器:

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

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

然而,在我的项目中,我们还使用了一个名为magnolia的cms,而magnolia也有一个SpringContextLoaderListener的实现。如果我把两个上下文监听器。当我运行应用程序时,玉兰花不会启动。

所以根据Resteasy文件说:

  

如果不使用Spring ContextLoaderListener创建bean工厂,则可以通过分配org.jboss.resteasy.plugins.spring.SpringBeanProcessor的实例来手动注册RESTeasy BeanFactoryPostProcessor。您可以从ServletContext属性org.jboss.resteasy.spi.ResteasyProviderFactory和org.jboss.resteasy.spi.Registry获取ResteasyProviderFactory和Registry的实例。 (真的是这些类的字符串FQN)。还有一个org.jboss.resteasy.plugins.spring.SpringBeanProcessorServletAware,它将自动从Servlet Context注入对Registry和ResteasyProviderFactory的引用。 (也就是说,如果你使用RestasyBootstrap训练Resteasy)。

有没有人知道如何在不使用Resteasy ContextLoaderListener的情况下实现这一目标?我需要在spring applicationContext xml文件中添加什么内容?

1 个答案:

答案 0 :(得分:3)

我也遇到过RestEasy SpringContextListener的问题(属性占位符${...}没有被处理 - RESTEASY-787,Spring java配置没有工作等等。 )。
因此,它足以放弃RestEasy SpringContextListener并使用默认的org.springframework.web.context.ContextLoaderListener或您需要的任何监听器。您只需在Spring XML配置中定义Spring bean,如下所示:

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

如果没有他们的特殊SpringContextListener,那么RestEasy应该可以工作。它对我有用。