我们有一个使用Axis2客户端从SOAP web服务读取的问题。当使用WSDL2JAVA生成新的客户端存根类并重命名它们的包时,出现了问题。生成工具本身并没有引起问题,但是WSDL2JAVA没有为所有类重命名包,所以我不得不自己做这个工作。
有没有什么好的方法可以重命名这些类的包,而不会出现问题?比如以一种聪明的方式进行字符串替换?
Web服务在某些情况下会抛出业务异常,并直接被调用代码捕获,但现在不再发生这种情况,客户端现在捕获AxisFault而不是SPECIALException。
您可以在下面看到XML响应:
有没有什么好的方法可以重命名这些类的包,而不会出现问题?比如以一种聪明的方式进行字符串替换?
Web服务在某些情况下会抛出业务异常,并直接被调用代码捕获,但现在不再发生这种情况,客户端现在捕获AxisFault而不是SPECIALException。
您可以在下面看到XML响应:
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server</faultcode>
<faultstring>Exception message, due to business error.</faultstring>
<detail>
<ns2:SPECIALException
xmlns:ns2="http://com.bla.com/common/exception/xsd/2008/08">
<ns2:code>7</ns2:code>
<ns2:message>Exception message, due to business error.</ns2:message>
</ns2:SPECIALException>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
更详细地检查,差异可能是由于生成的BlaServiceStub类中的populateFaults方法,其中类名被设置为字符串以供通过反射后续使用。