我正在重构构建自下而上 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 一起使用?