C# 用于为webservice创建java存根的库

C# 用于为webservice创建java存根的库,c#,java,web-services,code-generation,stub,C#,Java,Web Services,Code Generation,Stub,我想知道是否有人可以推荐一个好的库来生成java Web服务存根作为客户端 目前,我正在使用一种产品,它嵌入了一个只需要WSDL的生成器,然后创建所需的类和方法 我的问题是它会抛出警告,不会为我尝试使用的某些Web服务创建任何方法 真正的问题是它没有解释问题是什么(这样我就可以和Web服务的所有者一起修改它),也没有让我修改输出,这样我就可以自己解决问题 然而,webservices的所有者(因为这种情况发生在几个不同的ws上)说,他们的ws运行得很好,实际上,如果我使用它们,它们确实可以工作

我想知道是否有人可以推荐一个好的库来生成java Web服务存根作为客户端

目前,我正在使用一种产品,它嵌入了一个只需要WSDL的生成器,然后创建所需的类和方法

我的问题是它会抛出警告,不会为我尝试使用的某些Web服务创建任何方法

真正的问题是它没有解释问题是什么(这样我就可以和Web服务的所有者一起修改它),也没有让我修改输出,这样我就可以自己解决问题

然而,webservices的所有者(因为这种情况发生在几个不同的ws上)说,他们的ws运行得很好,实际上,如果我使用它们,它们确实可以工作

我快速浏览了一下soapUI it self使用的库,我看起来很有希望

我知道应该有哪些方法来完成这项工作,但我担心的是,我失败的生成器已经在使用该库了(这让我觉得它会再次失败)

最近我不知道这两个库是生成java源代码存根还是只有类似的方法

Object [] args = ...;
service.inkvoke("updateCustomer", args );
当我想要的是:

CustomerWs cws = ....
cws.updateCustomer(custId, custName, custAddress /*etc*/ );
那么,有谁有一个好的ws-stubs生成器可以推荐


我将自己动手编写代码,但这肯定需要几天时间才能被接受

Apache Axis 2是一个不错的选择。。。虽然你可能需要玩一点左右,以获得正确的。这也许是最常见的方法。您使用的工具可能基于轴1

作为metro()的一部分的最新JAX-WS是一个非常好的抽象层。需要进行一些调整,但对我来说,这比其他一些选项直观得多。

您当前使用的是什么?我使用Axis Wsdl2Java作为Ant任务。它生成您想要的存根类型。虽然在Eclipse中设置用于运行构建的类路径有点困难(我需要跟踪并包含一些JAR),但效果很好。在我的ant构建文件中,它如下所示:

<taskdef name="axis-wsdl2java" classname="org.apache.axis.tools.ant.wsdl.Wsdl2javaAntTask" />
<target name="foo">
<axis-wsdl2java
              output="${build.dir}"
              testcase="false"
              verbose="true"
              typemappingversion="1.2"
              url="http://ws.domain.com/url/of/WebService?wsdl" />
<!-- Compile, etc... -->
</target>

当你提到“Axis”时要特别小心:它在2006年初被放弃,因为线程安全错误导致死锁和CPU旋转(我们都经历过这两种情况)。你会对使用它深感遗憾。是一个完整的重写,可能值得一看。但我建议你先看看和

更新:以下是和上的错误报告。这是三年前Cyrille Le Clerc的,从未承诺过


我们用纯Java重新编码客户端,消除了死锁和旋转。然后Axis服务器拒绝与我们对话,并返回HTTP 500错误。我们需要错误地宣称我们是Axis的客户,以获得适当的回应。SOAP互操作性并不是Axis 1团队的首要任务。

我喜欢ApacheCXF—它通过插件与Maven很好地集成,而且确实有效。我已经使用它生成客户端存根代码有一段时间了,在我工作的上一家公司,他们也将它用于WS-s的服务器部分


在我与CXF+Maven+Subversion合作的上一个项目中,我们没有在Subversion中包含生成的类,只有WSDL文件的一个副本—存根类是在Maven的“生成”目标中生成的。

我肯定会建议使用基于标准的API。这将意味着JAX-WSAPI的。ApacheCXF和Metro是两个主要的JAX-WS实现,尽管JBoss也有一个实现。Axis2具有未经认证的实现,但不支持代码生成

使用基于标准的API的最佳部分是,如果您在产品上遇到问题,您可以尝试其他方法。在我看到的许多情况下,另一个产品也不起作用,但会发出不同的错误消息或类似消息,帮助诊断我们自己的代码或wsdl中确实存在问题


而且,JAX-WS是直接构建到Java6中的。如果您计划在Java6上运行,您可以使用它,而不必处理额外的JAR之类的问题。

我正在使用Axis(间接地),但它失败了。还有其他建议吗?我会直接试试。Axis几乎是标准配置。-1:当心!!Axis1存在可怕的线程安全漏洞(死锁和CPU旋转),于2006年4月被放弃。Axis2是一个完全不同的代码库,值得一看。我会先试试ApacheCXF或Glassfish的Metro。我想我会试试Axis。至少我能够获得错误消息,而不是静默失败(或说“生成失败”)…:感谢您对wsdl2java的充分引用。我想你至少为我节省了几个小时。我想听听你从WSDL->client开始的经验。我们将Metro用于内部Web服务,但我们很少使用它;我们不是一个很好的Java商店。我们使用它作为我们向客户提供的Web服务的示例代码。除了运行时依赖于实际的WSDL文件(这比什么都麻烦)之外,大多数事情都非常简单。