Salve gente.
qualcuno di voi ha familgiarità con webservice e soap:fault?
ora, abbiamo generato un wsdl che contiene il nostro errore. dal wsdl si generano le classi, ci si mette l'implementazione con i vari fault:
ovviamente faultType è il nostro errore che è definito nel wsdl così:codice:throw new faultType("Questo è l'errore");
ora, quando si richiama il servizio, se c'è un fault viene restituito questo:codice:<wsdl:message name="faultType"> <wsdl:part name="faultInfo" type="xsd:string" /> </wsdl:message>
e per averlo nella classe java si deve farecodice:<soapenv:Fault> <faultcode>soapenv:Server.generalException</faultcode> <faultstring/> <detail> <faultInfo >Questo è l'errore</faultInfo> <ns1:exceptionName xmlns:ns1="http://xml.apache.org/axis/">_1._0._0._127.axis.services.Profile.faultType</ns1:exceptionName> <ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">pc-stefano</ns2:hostname> </detail> </soapenv:Fault>
Il problema è che il servizio non da un FaultType (cioè il nostro tipo) ma un AxisFault che all'interno di details contiene il campo di FaultType (che è faultInfo).codice:try { //codice } catch (org.apache.axis.AxisFault e) { //QUESTA VARIABILE CONTIENE LA STRINGA e.getFaultDetails()[0].getTextContent(); }
ora, come si sistema? eventualmente si può utilizzare sempre l'AxisFault senza definirsi un tipo degli errori? se si, come si crea il WSDL?

Rispondi quotando