gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:35:56 24 4
gpt4 key购买 nike

我们有一个 Axis2 客户端从 SOAP 网络服务读取数据;使用 WSDL2JAVA 生成新的客户端 stub 类并重命名它们的包时出现问题。生成工具本身不会导致问题,但 WSDL2JAVA 不会重命名所有类的包,所以我必须自己做。

关于为这些类重命名包而不会出现问题的最佳方法有什么想法吗?例如以巧妙的方式进行字符串替换?

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 造成的,其中类名被设置为字符串,供以后通过反射使用。

最佳答案

这是通过在所有生成的 stub 类中进行字符串替换解决的,同时不更改整个包名称,所以假设你在生成中使用了'-p com.my.company.network.stubs',然后剩下的'com.bla.blo.bli'下的包,不要重命名为'com.my.company.network.stubs.bli',而是重命名为'com.my.company.network.stubs.bla.blo.bli' '

关于java - 自定义服务异常作为 AxisFault 被抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29701380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com