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 的区别的主要内容,如果未能解决你的问题,请参考以下文章