Axis和Axis2开发Web Service的区别

问题描述 投票:0回答:4

在我的项目中,我将不得不开发一些基于Web Service技术的数据输入/输出接口。所以到现在为止我一直在研究它。

我对使用 Java 的 Web 服务感到好奇的是我可以使用或不使用什么库。

当我搜索 java 库时,我发现 Axis2 和 CXF 是非常常见和著名的 java w/s 库。问题是我必须使用包含轴的 RAD 7.0。

Axis 和 Axis2 之间似乎有巨大的变化,不幸的是我不能使用 Axis2。

现在,我的合作伙伴提供了WSDL,我必须实现客户端W/S。 如果我通过 Axis、Axis2 或 CXF 从 WSDL 创建客户端代理代码,它们都是相同的代码吗?

或者如果我必须使用 WSDL 来提供我的 W/S 接口与 Axis,这对 Axis2 或 CXF 用户来说会是问题吗?

在我的情况下,我很新,很害怕使用 Axis。 有人可以给我一些建议吗?

axis2 rad apache-axis
4个回答
3
投票

我发现的其他一些差异:

  • 对于 Axis 2 开发,需要 Java 版本 5 及更高版本。对于轴 1 java 不需要 v5 或更高版本。它适用于 Java v4.

  • Axis 是旧 JAX-RPC 1.1 的 RI,Axis 2 是新 JAX-WS 2.x 的实现

  • Axis 不支持注释,Axis 2 支持注释,因此支持使用注释开发 Web 服务的新方法,例如 @Webservice / @Webmethod 注释。


2
投票

不,它们每个都生成不同的代码。 尽管他们都为了同样的目的而工作。

我个人更喜欢 Axis2 而不是 Axis。

为了了解它们各自的优缺点,您可以通过以下方式: 比较链接


1
投票

根据经验,我确实发现一些 WSDL 可以被 Axis1 解析,但不能被 Axis2 解析,并且 Axis2 发送的一些消息在与 Axis1 一起工作的服务上不起作用。

来自生成的 WSDL 的数组中的细微差别,而不是手写的和重音字符被服务器端以不同方式解释(即使用 CDATA 但并非没有)

就个人而言,我使用从 JDK 生成的任何 wsimport 而不是其他工具,但是一些框架(例如 Curam)需要 axis/axis2


1
投票

有些 WSDL 可以被 Axis1 解析,但不能被 Axis2 解析。 并且 Axis1 在 Java 1.4 版本之前得到支持,之后你会得到与 enum 关键字相关的异常。

使用 -source 5 或更高版本来使用 'enum' 作为关键字。

因为 Axis 正在生成带有 enum 关键字的 java 类。

您可以覆盖这些类和包名称(如在 Axis2 中所做的那样,将枚举包设为常量)并使您自己的 Axis 托管版本与 Java 1.5 或更高版本兼容。 我已经创建了我自己的 axis 托管版本来支持 java 1.5 或更高版本上的遗留 wsdl,它甚至可以使用 java 10.

最好使用 axis 或 axis2,因为它是标准的并且在某些框架或技术上是必需的。

© www.soinside.com 2019 - 2024. All rights reserved.