gpt4 book ai didi

java - 在 WSDL 文件中指定抛出 AxisFault

转载 作者:行者123 更新时间:2023-12-01 15:50:07 25 4
gpt4 key购买 nike

我从 WSDL 文件生成 Web 服务。但我需要在此文件中定义我在 SkeletonInterface 中的方法会出现轴故障异常。类似:

void method() throws AxisFault{....}

我可以通过什么方式做到这一点(在 WSDL 中)。

谢谢。

最佳答案

简而言之,针对您自己的应用程序错误重用 AxisFault 是一种不好的做法。当我看到 AxisFault 时,它表明 Axis autogen 代码内部的某些内容失败了。这可能包括包裹在其中的异常。

首先,我想解决您的伪代码。

void method() throws AxisFault{....}

此伪代码表明您想要一个没有输入、没有输出的方法,但仍然有异常。如果我假设这一点,那么不推荐该设计(我什至不确定是否可能)。如果您希望某件事触发某件事而没有输出,则空输出消息比异常更可取。仅当发生不常见的情况时才应使用异常。

如果您将上面的代码作为一个抽象示例,并且您确实有输入/输出,那么正确的方法是弥补您自己的错误。利用自己的错误可以让你控制行为并更准确地描述失败的原因。您将来可能还需要多个故障,因此在这种情况下使用 AxisFault 并没有什么好处。

<wsdl:definitions ...>
...
<wsdl:message name="MyFault">
<wsdl:part name="parameters" element="def:MyFault">
</wsdl:part>
</wsdl:message>

<wsdl:portType name="MyPortType">
<wsdl:operation name="doStuff">
<wsdl:input message="tns:MyRequest">
</wsdl:input>
<wsdl:output message="tns:MyResponse">
</wsdl:output>
<wsdl:fault name="MyFault" message="tns:MyFault">
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>

<wsdl:binding name="MyBinding" type="tns:MyPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="doStuff">
<soap:operation soapAction="namespace/operationName"/>
<wsdl:input name="MyRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="MyResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="MyFault">
<soap:body use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>

...
</wsdl:definitions>

也就是说,AxisFault 确实发生在 Web 服务操作调用中。对于您的客户端 stub 代码,它应该抛出 RemoteException。如果您查看 autogen Stub 代码,您应该会发现它实际上抛出了一个扩展了 RemoteExceptionAxisFault

关于java - 在 WSDL 文件中指定抛出 AxisFault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6251975/

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