我们拥有目前由C#客户端使用的Axis2 POJO服务,我们正在添加Java客户端。生成等效存根变得有点困难。
我们使用.NET wsdl工具生成类,该工具可以选择在多个服务之间共享类型。
http://mymachine/appname/services/Service1?wsdl
http://mymachine/appname/services/Service2?wsdl
...ect
对于C#客户端,我们使用Visual Studio附带的wsdl工具,生活很美好
wsdl /n:MyPackage /out:ourservice-webservice.cs /sharetypes "http://mymachine/appname/services/Service1?wsdl" "http://mymachine/appname/services/Service2?wsdl"
现在我们正在尝试添加Java客户端,并且使用wsdl2java生成的代码遇到问题
wsdl2java -uri http://mymachine/appname/services/Service1?wsdl -uw -or -o src -p MyPackage
wsdl2java -uri http://mymachine/appname/services/Service2?wsdl -uw -or -o src -p MyPackage
这似乎有效,直到我尝试使用Service1和Service2中的一个使用MyTransaction类型的调用。
现在,生成的存根将其显示为Service1Stub.MyTransaction和Service2Stub.MyTransaction,它们当然是不同的类型。
这是一个问题,因为我们必须在两个服务之间来回移动对象。我假设有一个简单的解决方法我错过了吗?
答案 0 :(得分:0)
正如您所指出的,数据绑定类(MyTransaction
等)正在生成为存根类的内部类。因此,每个存根都有自己的MyTransaction
类副本,与另一个副本不兼容。
wsdl2java 参数-u
将导致数据绑定类作为常规类生成,每个类都在自己的文件中。如果两个MyTransaction
定义实际上相同,则 wsdl2java 将为每个MyTransaction
对象生成相同的类文件,并且您将能够共享{{1两个服务之间的对象。
This page详细描述了 wsdl2java 参数。