【问题标题】:CXF and Google Guice using JAX-RS + JAX-WS使用 JAX-RS + JAX-WS 的 CXF 和 Google Guice
【发布时间】:2011-09-09 22:18:17
【问题描述】:

我想将 CXF 与 Google Guice 集成。我已经在我的项目中使用 Guice,我想避免添加额外的依赖项。

CXF 是我的选择,因为其中一项要求是能够向服务用户提供 XML、JSON、JSONP 和 SOAP 接口,而无需重复代码(现在我们有特定于 SOAP 的类,对于我们使用的 XML Struts 和 JSON 我们编写了自己的解析器,我知道,我也觉得很脏)。

无论如何,afaik,CXF 可以满足这个要求,所以我似乎被 CXF 卡住了。

关于如何将 Guice 与 CXF 集成的任何想法、指示或建议?我曾想过扩展 CXFNonSpringJaxrsServlet 类并将 Guice 加入其中,但不知何故,我似乎正在做一些其他人已经做过的事情。

【问题讨论】:

    标签: jax-ws cxf jax-rs guice


    【解决方案1】:

    这是我一直在使用的 (cxf-2.5.0)。

    @Singleton
    public class WebServiceServlet extends CXFNonSpringServlet {
        private static final long serialVersionUID = 1L;
        private final SamaService samaService;
    
        @Inject
        public WebServiceServlet(SamaService samaService) {
            this.samaService = samaService;
        }
    
        @Override
        protected void loadBus(ServletConfig sc) {
            super.loadBus(sc);
            BusFactory.setDefaultBus(getBus());
            Endpoint.publish("/Data.asmx", samaService);
        }
    }
    

    【讨论】:

    • 我做了一个类似的 servlet,但在 loadBus() 中使用了注入器而不是注入服务。代码贴在这里:code.google.com/p/guice-cxf/issues/detail?id=1
    • 为什么是BusFactory.setDefaultBus(getBus())这一行?在您的示例中似乎没有必要,可以正常工作。
    【解决方案2】:

    在 CXF 2.4.x 中,CXF 不再使用 Spring 进行内部配置。因此,你几乎可以在没有 Spring 的情况下做任何事情。

    配置部分绝对是个问题。然而,所有的 spring 配置都只是 CXF API 的薄包装。因此,您可以通过 API 配置几乎所有内容。您可能只需要再挖掘一点。

    例如,在 CXF 2.4 中,我们现在已经开始支持在 OSGi 中使用 Blueprint 而不是 Spring。蓝图支持不需要任何 Spring 的东西,而是从中建模的。

    【讨论】:

    • 有可能,你是对的...... CXF 是可配置的(从拦截器到调用器再到总线工厂),你可以连接 Guice。系统测试和测试用例提供了很多这样的例子。
    【解决方案3】:

    你有问题。 CXF 完全依赖于 Spring,因为它是由 Spring 内部配置的并且非常广泛地使用 Spring 的设施。因此,我认为尝试将 CXF 从 Spring 中剔除以便您可以使用 Guice 是不切实际的; 最少,您必须使用自定义 Guice 提供程序复制所有配置,但它仍然无法工作(CXF 的一部分使用 Spring 的一些 Web 层)。

    您可以尝试在代码中使用 Spring 的 JavaConfig 样式。这大部分类似于 Guice 所做的事情(据我所知)。或者我想你可以尝试在同一个应用程序中使用两个独立的 DI 框架……尽管这对我来说就像是一个“搞笑”失败的机会。

    【讨论】:

      猜你喜欢
      • 2011-06-29
      • 2011-12-16
      • 1970-01-01
      • 2013-03-15
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多