供应商向我提供了一组他们可以加入的消息(我已经在SoapUI中进行了测试,它确实有效 - 好吧)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"xmlns:urn="urn:SAMPLE">
<soapenv:Header/>
<soapenv:Body>
<urn:CustomEnvelope>
问题是,在使用CustomEnvelope
的地方我会期待任何方法名称(类似urn:calculateSum
)。
当我尝试使用Axis2生成java客户端时,与使用ADB数据绑定方法的情况相比,我得到了无法编译的代码。当我使用另一个时,我在我的Stub对象上只有一个名为(例如)calculateSum
的方法,并且生成的消息与预期的模式(而不是CustomEnvelope
)不对应使用了{{ 1}}。
我的问题是。你知道这种奇怪的格式是什么意思吗?你有什么建议如何整合这样奇怪的WS?我考虑使用JAXB创建整个XML(供应商提供了XSD文件)并使用标准Java API发送到WS或创建SOAPMessages。但我不确定什么是最好的溶剂。
谢谢,Ondrej
答案 0 :(得分:1)
我在Axis 2客户端存根生成期间遇到了这个问题,它为您提供了无法编译的代码。错误发生在ADBDataSource
类。
如果这是你的问题,那么这就是解决方案。我在项目中做了什么,我们使用WebSphere作为Web应用程序服务器,它在项目的类路径中包含一个jar文件(Something)ThinClient.jar
。
现在这个jar也包含了一个名为ADBDataSource
的类,但它是一个抽象类。这与我们的存根冲突,因为它创建了ADBDataSource
的对象。
我建议你试着找出你有没有这样的罐子。
解决方案
从类路径中移除(Something)ThinClient.jar
或具有相同类别的人。
如果删除(Something)ThinClient.jar
会产生问题,那么改变方法并使用Jax-W而不是Axis 2,这是Java自己的一部分。 (这就是我所做的。)