Axis 2 java2wsdl 创建的 wsdl 与 JBoss 在 ?wsdl URL 中显示的不同

发布于 2024-07-17 02:00:49 字数 1122 浏览 4 评论 0原文

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

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

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

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

当 Web 服务部署在 JBoss 中时,为什么 Axis 显示的 wsdl 与从 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 一起使用?

I'm refactoring the way the client code for a bottom-up web service is built. The existing build creates the Java client code by using a deployment of the web service on JBoss 4.2 and executing the Axis 2 AntCodegenTask against http://devserver.url?wsdl. This method fails if the development server is down or has outdated wsdl. (Crusie Control fails whenever the wsdl changes.)

I need to build the client code against the web service class itself instead of having to point to a deployment of the web service. I use java2wsdl to generate wsdl from the web service class and then use the same AntCodegenTask to generate the client classes.

The problem is that wsdl created by java2wsdl is different than what JBoss displays in http://devserver.url?wsdl. Among other things, some of the namespaces are different and the AntCodegenTask step doesn't convert these namespaces into the correct package structure.

I've got to get the final package structure to be what the client code expects. The existing AntCodegenTask uses namespacetopackages="..." to accomplish that, but when I execute the same AntCodegenTask to the wsdl generated by java2wsdl it doesn't convert the namespaces to the package name.

Why would Axis show different wsdl when the web service is deployed in JBoss than it generates from java2wsdl?

Is there a way to use Axis to create the client code from the web service class without generating the intermediate wsdl?

The documentation for the java2wsdl and wsdl2java Ant tasks is a little bit spotty. Axis 2 v 1.4.1 gives Ant tasks for AntCodegenTask and 2 Java2WSDLTasks in different packages. The Axis 2 installation includes binaries for wsdl2java and java2wsdl, but no codegen binary. Maybe AntCodegenTask is the same as wsdl2java.

Has anyone got something like this to work with Axis 2?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白衬杉格子梦 2024-07-24 02:00:49

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

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

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

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

Deploy webservice on JBoss server. Save locally WSDL file and pass it as a parameter to Ant task. Hopefully generated classes would be correct, however it may happen that Axis 2 would not like to work with JBoss generated WSDL.

In that case use wsconsume.bat provided with JBoss instead of AXIS ant task.

Always use that once generated WSDL file, package it with application, etc, since even different versions of JBoss produce different WSDL files.

Axis always sort of sucked, if you can (I now it is not so obvious...) use Apache CXF or native JBoss implementation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文