У меня есть несколько 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 ...