JAX-WS、Axis2和CXF之间的区别

148

三者之间的区别是什么?

  1. JAX-WS
  2. Axis2
  3. CXF

这三个都可以用来在Java中创建Web服务。
据我所知,JAX-WS是一种规范,而Axis2和CXF是实现方式。但是,如果我没记错的话,Java 1.6具有JAX-WS的实现。

因此,人们可以使用Java 1.6开发JAX-WS Web服务,而无需使用Axis2或CXF。那么,Axis2、CXF有什么用处呢?

4个回答

155

JDK中内置的JAX-WS实现只是基本的SOAP功能。如果需要更复杂的WS-*功能,例如WS-Security、WS-RM、WS-Policy等,您需要使用其中一种替代方案,如CXF、Metro或Axis2。这也取决于您正在尝试集成的内容。例如,CXF具有一流的Spring支持以及非常好的OSGi支持。

CXF除了JAX-WS之外还有其他功能。它还有一个符合规范的JAX-RS实现,并且很好地支持将服务公开为REST和SOAP。如果需要这种类型的功能,它还具有符合W3C标准的SOAP / JMS实现。基本上,从JDK内置的JAX-WS实现中无法获得太多东西。

另请参阅:

Apache CXF和Axis之间的区别


1
谢谢,非常有帮助。所以对于基本的Web服务,我可以使用Java 1.6来实现。在Java 1.5中是否有JAX-WS的实现?还是它是在1.6之后添加的?如果我需要额外的功能,我可以选择CXF吗? - Maverick Riz
5
它是在1.6版本中添加的。如果你需要1.5版本的支持,你需要获取CXF或JAX-WS参考实现或类似产品。 - Daniel Kulp
7
大多数情况下,如果您从内置于JDK中的JAX-WS实现开始,随时可以将CXF插入其中,它仍然可以正常工作。 - Daniel Kulp
1
我有一点疑问。Metro不是内置在JDK中的JAX-WS实现吗?还是说,Metro比内置在JDK中的JAX-WS实现更复杂? - Dexter

19

简而言之。

WSDL WS-* 不依赖于语言。

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

Apache CXFApache Axis 2 是 JAX-WS 的两个实现。它们也提供了 JAX-RS 实现,以便您可以构建 Restful 服务。

CXF 与 Spring 和 Camel (camel-cxf) 集成更好。而且,Axis 2 似乎没有一个活跃的发布版本。


15

3
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。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接