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

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

我的问题是它会抛出警告而不会为我正在尝试使用的某些web服务创建任何方法。

真正的问题是它没有解释问题是什么(因此我可以与网络服务的所有者一起进行修改)也不让我修改输出,这样我就可以解决问题了。

然而,网络服务的所有者(因为这发生在几个不同的ws)说他们的ws运行良好,实际上如果我使用 soapUI 他们实际上工作!!!

我快速浏览了它自己使用的soapUI库,看起来很有希望。

我知道 Axis 应该做的工作,但我担心的是我失败的生成器已经使用该库(这使我的东西再次失败)

最近我不知道这两个库是否生成了java源存根或只有像

这样的方法
Object [] args = ...;
service.inkvoke("updateCustomer", args );

当我想拥有的东西是:

CustomerWs cws = ....
cws.updateCustomer(custId, custName, custAddress /*etc*/ );

那么,任何人都有推荐的 GOOD ws存根生成器?

我要自己手工编码,但肯定需要几天才能接受

有帮助吗?

解决方案

你目前在使用什么?我使用Axis Wsdl2Java作为Ant任务。它会生成所需的存根类型。虽然设置运行构建的类路径很有用,但Eclipse中有点痛苦(我需要追踪并包含一些罐子)。在我的ant buildfile中,它看起来像这样:

<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”时要非常小心: Apache Axis 1 被放弃了2006年初,线程安全漏洞导致死锁和CPU旋转(我们都经历过)。你会深感遗憾地使用它。 Apache Axis 2 是完全重写的,可能值得一看。但我建议你先看看 Apache CXF Glassfish Metro

更新:以下是有关死锁 100%CPU旋转。这是三年前Cyrille Le Clerc的拟议补丁,从未承诺过。

我们通过直接Java重新编码客户端来消除我们的死锁和旋转。然后Axis服务器拒绝与我们交谈,发回HTTP 500错误。我们需要错误地声称我们是Axis客户以获得正确的回复。 SOAP互操作性不是Axis 1团队的优先考虑事项。

我喜欢Apache CXF - 它通过插件与Maven很好地集成,它可以工作。我已经使用它一段时间来生成客户端存根代码,而在我工作的最后一家公司,他们也将它用于WS的服务器部分。

在我使用CXF + Maven + Subversion进行的最后一个项目中,我们没有在Subversion中包含生成的类,只包含WSDL文件的副本 - 存根类是在“生成”中生成的。 Maven的目标。

Apache Axis 2是要走的路......虽然你可能需要玩一下才能做到正确。这可能是最常见的方式。也许您使用的工具基于Axis 1?

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

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

此外,JAX-WS内置于Java6中。如果你打算在Java6上运行,你可以使用它而不必处理额外的jar等。

最新的JAX-WS作为地铁的一部分( http://metro.dev.java.net )是一个非常好的抽象层。需要稍加调整,但对我来说比其他一些选项更直观。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top