自定义服务异常被抛出为AxisFault

时间:2015-04-17 14:00:07

标签: java web-services soap axis2 soap-client

我们有一个从SOAP Web服务读取的Axis2客户端;使用WSDL2JAVA生成新的客户端存根类并重命名其包时出现问题。生成工具本身并不会导致问题,但WSDL2JAVA并没有为所有类重命名包,所以我自己必须这样做。

有没有想过为这些类重命名包的最佳方法,没有问题?比如以聪明的方式进行String替换?

Web服务在某些情况下抛出业务异常,并且它们直接被调用代码捕获,但是这不再发生,而不是SPECIALException,客户端现在捕获AxisFault。

您可以在下面看到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>

更详细地检查这一点,差异可能是由于生成的Bla ServiceStub 类中的方法populateFaults,其中类名设置为字符串以供稍后通过反射使用。

1 个答案:

答案 0 :(得分:1)

这是通过在所有生成的存根类中进行字符串替换来解决的,而不是更改整个包名称,所以说你在'generation'中使用了'-p com.my.company.network.stubs',然后用于剩余“com.bla.blo.bli”下的软件包,不要重命名为“com.my.company.network.stubs.bli”,而是“com.my.company.network.stubs.bla.blo.bli” “