JAX-WS、Axis2 和 CXF 的区别

Posted

技术标签:

【中文标题】JAX-WS、Axis2 和 CXF 的区别【英文标题】:Difference between JAX-WS, Axis2 and CXF 【发布时间】:2012-07-18 23:28:34 【问题描述】:

有什么区别:

    JAX-WS Axis2 CXF

这三个都可用于在 Java 中创建 Web 服务。 据我所知,JAX-WS 是一个规范,而 Axis2 和 CXF 是实现,但如果我没记错的话,Java 1.6 已经实现了 JAX-WS。

那么可以使用 Java 1.6 开发 JAX-WS Web 服务而不使用 Axis2 或 CXF 吗?那么Axis2、CXF有什么用呢?

【问题讨论】:

【参考方案1】:

JDK 中内置的 JAX-WS 实现实际上只是基本的肥皂材料。如果您需要任何更复杂的 WS-* 事物,例如 WS-Security、WS-RM、WS-Policy 等...,您需要使用 CXF 或 Metro 或 Axis2 等替代方案之一。它还可能取决于您尝试与之集成的内容。例如,CXF 拥有一流的 Spring 支持以及非常好的 OSGi 支持。

CXF 除了 JAX-WS 之外还有其他东西。它还具有兼容的 JAX-RS 实现,并且非常支持将服务公开为 REST 和 SOAP。如果需要这种类型的东西,则具有符合 W3C 的 SOAP/JMS 实现。基本上,很多东西都不能从 in-jdk JAX-WS impl 中获得。

另见:

Difference between Apache CXF and Axis

【讨论】:

谢谢,帮了大忙。因此,对于基本的 Web 服务内容,我可以使用 java 1.6 来实现。它们是 java 1.5 中 jax-ws 的实现吗?还是1.6之后添加的?如果我需要其他功能,我可以使用 CXF? 它是在 1.6 中添加的。如果您需要 1.5 支持,则需要获取 CXF 或 JAX-WS 参考 impl 或类似的。 而且在大多数情况下,如果您从 in-jdk JAX-WS impl 开始,您可以随时放入 CXF,它仍然可以工作。 我有点怀疑。 Metro 不是内置在 JDK 中的 JAX-WS 实现吗?还是 Metro 比 JDK 中内置的 JAX-WS 实现更复杂?【参考方案2】:

我发现 CXF - 与 Spring 的集成非常容易。此外,它还提供各种功能,例如:

    自定义日志功能 入站和出站拦截器 应用程序级安全性 使用自定义故障轻松处理异常。

如需了解更多详情,请查看此链接:

http://predic8.com/axis2-cxf-jax-ws-comparison.htm

http://www.ibm.com/developerworks/java/library/j-jws11/

而且,我阅读了上面的链接,它对我很有帮助。我希望它也对你有用。

谢谢!

【讨论】:

【参考方案3】:

简而言之。

WSDL WS-* 与语言无关。

JAX-WS 是用于构建 Web 服务的 Java 标准。

Apache CXF 和 Apache Axis 2 是 JAX-WS 的两个实现。他们还提供 JAX-RS 实现,以便您可以构建 Restful 服务。

CXF 与 Spring 和 Camel(camel-cxf) 有更好的集成。 Axis 2 似乎还没有发布。

【讨论】:

【参考方案4】:

Web 服务组织发布了一些指南,即 BP(基本配置文件)1.0 和 BP(基本配置文件)1.1。 基于指南所有语言(Java/.Net)人发布规范与默认实现 在java中基于BP 1.0规范是JAX-RPC和1.0规范是JAX-WS

JAX-WS 默认实现是 RI(参考实现) 根据需求/选择,我们可以更改实现(RI/AXIS-2/CXF)

当我们使用 java 1.6 时,JDK 中的这种情况已经可用,因此不需要任何其他 jar。如果你想使用不同的实现,这种情况需要特定的实现 jar。

Axis-2 和 CXF 来自 Apache

【讨论】:

以上是关于JAX-WS、Axis2 和 CXF 的区别的主要内容,如果未能解决你的问题,请参考以下文章

用JAX-WS在Tomcat中发布WebService

WebService:JAX-WS实现WebService

cxf 入门

真正的轻量级WebService框架——使用JAX-WS(JWS)发布WebService

通过 CXF 在 SSL 上配置 JAX-WS

JAVA开发Web Service几种框架介绍