5

我正在为我的项目使用 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 的实现。如果我把这两个上下文监听器。运行应用程序时不会启动 magnolia。

所以根据 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 上下文中注入对 Registry 和 ResteasyProviderFactory 的引用。(也就是说,如果您使用过 RestasyBootstrap 来引导 Resteasy)。

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

4

1 回答 1

3

我也遇到了 RestEasy 的问题(未处理SpringContextListener属性占位符${...}- RESTEASY-787,Spring java config 不起作用等)。
因此,删除 RestEasySpringContextListener并使用默认值org.springframework.web.context.ContextLoaderListener或您需要的任何侦听器就足够了。您只需在 Spring XML 配置中定义 Spring bean,如下所示:

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

即使没有他们的特殊,RestEasy 也应该可以工作SpringContextListener。这个对我有用。

于 2014-03-12T00:03:53.413 回答