不带弹簧的 CXF [关闭]

Posted

技术标签:

【中文标题】不带弹簧的 CXF [关闭]【英文标题】:CXF without Spring [closed] 【发布时间】:2010-10-15 22:48:28 【问题描述】:

是否可以在没有 Spring 的情况下将 CXF 与 Tomcat 一起使用?如果有,怎么做?

【问题讨论】:

【参考方案1】:

我想你的意思是用 CFX 创建一个可以在 Tomcat 中运行的 Web 服务?这是完全可能的,Spring 是可选的。如果您不想使用,则不必使用它。

【讨论】:

好吧,我相信他问的是如何做到这一点,而不仅仅是能否做到。【参考方案2】:

CXF 旨在与弹簧一起使用。很奇怪你想在没有它的情况下使用它。

您可以尝试 NoSpringServletServer 并使用 ServerFactoryBean 或 JaxWS API。

这是NoSpringServletServer的代码。

但是您将仍然需要 spring 作为依赖项。基本的 JaxWS 可以在没有 spring 的情况下完成。但是对于几乎任何其他东西,您至少需要 spring-core.jar

【讨论】:

实际上,我正在考虑构建一个 web 应用程序,将其部署为 tomcat 中的 war 文件,而不是独立服务器。所以我也不需要 Jetty。 webapp 部署在 tomcat 上,就像在任何其他 servlet 容器中一样(几乎)。该示例显示了一个独立的服务器,但可以从 web.xml 引用 servlet。 CXFNonSpringServlet 扩展了你知道的 Servlet。 该链接似乎不再有效。这是另一个信息来源:cxf.apache.org/docs/… 为什么要在没有 Spring 的情况下使用 CXF 会很奇怪?假设你还没有在你的应用程序中使用 Spring,那么它就是一大堆依赖项,只是为了让 web 服务正常工作。完全可以在没有 Spring Core 的情况下运行 CXF。您编写的代码更多,但 XML 更少,所以这是一种权衡。【参考方案3】:

我认为在Tomcat中完全独立于spring使用CXF是不可能的。

原因是当我为一个最低限度的 CXF webservice 做一个 Maven 依赖树列表 (mvn dependency:tree) 时,列出了以下内容(这表明它需要 Spring)

     +- org.apache.cxf:cxf-rt-core:jar:2.2.2:compile
[INFO] |  |  +- com.sun.xml.bind:jaxb-impl:jar:2.1.9:compile

[INFO] |  |  +- org.springframework:spring-core:jar:2.5.5:compile

[INFO] |  |  +- org.apache.geronimo.specs:geronimo-javamail_1.4_spec:jar:1.6:compile

    org.apache.cxf:cxf-rt-transports-http:jar:2.2.2:compile
[INFO]    \- org.springframework:spring-web:jar:2.5.5:compile

[INFO]       +- commons-logging:commons-logging:jar:1.1.1:compile

【讨论】:

只使用 org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet 我同意依赖树仍然具有传递的spring依赖,同意@bercolax,通过编程可以避免spring api XML配置【参考方案4】:

您可以在没有 Spring 的情况下以编程方式配置 CXF。请参阅代码示例here。将 Web 应用程序上下文路径与端点扩展(代码示例中的 Greeter)放在一起,将在浏览器中显示一个摘要页面,其中包含指向 WSDL 的链接。

不需要 Spring,CXF 占用空间非常小。我发现唯一需要的罐子(对于 CXF 2.2.1):

XmlSchema-1.4.5.jar cxf-2.2.3.jar wsdl4j-1.6.2.jar

我相信对于某些配置,neethi-2.0.4.jar 可能也是必需的,但我并不需要它。

玩得开心!

【讨论】:

以上是关于不带弹簧的 CXF [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

集成框架.NET,如骆驼/弹簧集成[关闭]

关闭或停止后重新加载弹簧上下文

Hibernate 二级缓存在运行几个弹簧测试时关闭

当从控制器启动的作业失败时,如何防止弹簧批处理关闭应用程序?

寻找带有 Angular 4 和更多一个弹簧启动应用程序的示例 [关闭]

使用弹簧安全性在后端启用 CORS 的正确方法是啥。在 REST 框架的项目中也使用 Apache cxf