У меня есть 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>
Из (большого) поиска в Google я думаю, что смогу сделать это, бросив исключение 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 (но у меня больше опыта с этим, чем с чем-либо еще). Если вы предлагаете альтернативу, обратите внимание, что мне нужно в методе веб-службы вызвать другую (аутентифицированную) веб-службу, и я смог заставить ее работать только в Axis1.4...