1

我正在重构构建自下而上 Web 服务的客户端代码的方式。现有构建通过在 JBoss 4.2 上部署 Web 服务并针对http://devserver.url?wsdl执行 Axis 2 AntCodegenTask 来创建 Java 客户端代码。如果开发服务器已关闭或具有过时的 wsdl,则此方法将失败。(只要 wsdl 更改,Crusie Control 就会失败。)

我需要针对 Web 服务类本身构建客户端代码,而不必指向 Web 服务的部署。我使用 java2wsdl 从 Web 服务类生成 wsdl,然后使用相同的 AntCodegenTask 生成客户端类。

问题是 java2wsdl 创建的 wsdl 与 JBoss 在http://devserver.url?wsdl中显示的不同。其中一些命名空间是不同的,AntCodegenTask 步骤不会将这些命名空间转换为正确的包结构。

我必须让最终的包结构成为客户端代码所期望的。现有的 AntCodegenTask 使用 namespacetopackages="..." 来实现这一点,但是当我对 java2wsdl 生成的 wsdl 执行相同的 AntCodegenTask 时,它不会将命名空间转换为包名。

为什么在 JBoss 中部署 Web 服务时,Axis 会显示与从 java2wsdl 生成的不同的 wsdl?

有没有办法使用 Axis 从 Web 服务类创建客户端代码而不生成中间 wsdl?

java2wsdl 和 wsdl2java Ant 任务的文档有点参差不齐。Axis 2 v 1.4.1 在不同的包中为 AntCodegenTask 和 2 个 Java2WSDLTasks 提供了 Ant 任务。Axis 2 安装包括 wsdl2java 和 java2wsdl 的二进制文件,但没有 codegen 二进制文件。也许 AntCodegenTask 和 wsdl2java 是一样的。

有没有人有这样的东西可以与 Axis 2 一起使用?

4

1 回答 1

0

在 JBoss 服务器上部署 web 服务。保存本地 WSDL 文件并将其作为参数传递给 Ant 任务。希望生成的类是正确的,但是 Axis 2 可能不喜欢使用 JBoss 生成的 WSDL。

在这种情况下,使用 JBoss 提供的 wsconsume.bat 而不是 AXIS ant 任务。

始终使用生成的 WSDL 文件,将其与应用程序打包等,因为即使是不同版本的 JBoss 也会产生不同的 WSDL 文件。

Axis 总是有点糟糕,如果可以的话(我现在不是那么明显......)使用 Apache CXF 或本机 JBoss 实现。

于 2012-02-24T13:00:09.603 回答