不带弹簧的 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
【讨论】:
只使用您可以在没有 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 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
当从控制器启动的作业失败时,如何防止弹簧批处理关闭应用程序?