Webサービスの実装を生成するために必要なWSDLがいくつかあります。私はEclipseとAxis1.4を使用しており、Weblogic9.2で実行しています。
サーバースタブの生成はうまくいき、必要なコードを実装しました。ただし、エミュレートしている既存の実装との互換性のために、特定のエラー条件に対してSOAPフォールトを返す必要があります。
つまり、次の例のように、応答のSOAP本体が必要です。
<soapenv:Body>
<soapenv:Fault>
<faultcode xmlns:ns1="foobar">ns1:1234</faultcode>
<faultstring>The supplied parameter name ABCD is not recognised.</faultstring>
<detail>
<FaultDetail>An error processing the web service [MyService]: Unknown parameter:ABCD</FaultDetail>
<ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">planet</ns2:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
(多くの)グーグルから、SOAPFaultExceptionをスローすることでこれを実行できるはずだと思います。ただし、メッセージスタブはjava.rmi.RemoteExceptionのみをスローするため、SOAPFaultExceptionをRemoteExceptionに渡してみました。それは私にこのようなものを与えます:
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>java.rmi.RemoteException: My remote exception; nested exception is:
javax.xml.rpc.soap.SOAPFaultException: soap fault string</faultstring>
<detail>
<ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">myhostname</ns1:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
...つまり、SOAP障害は発生していません。
私は他の多くのものを試しました、そして私はかなり立ち往生しています。それで、誰かが私の環境で、指定できるコンテンツを含むSOAP障害応答を返す方法を(理想的には例を挙げて)教えてもらえますか?
私はAxisを使用することに慣れていません(しかし、私はそれについて何よりも経験があります)。別の方法を提案する場合は、Webサービスメソッドで別の(認証された)Webサービスを呼び出す必要があることに注意してください。これは、Axis1.4でしか機能しません...