Ode cannot handle own defined wsdl faults -----------------------------------------
Key: ODE-194 URL: https://issues.apache.org/jira/browse/ODE-194 Project: ODE Issue Type: Bug Components: Axis2 Integration Affects Versions: 1.1 Environment: Windows XP SP2 Tomcat 5.5.23 Ode 1.1 Reporter: Jens Goldhammer Priority: Critical Fix For: 1.1.1 Attachments: cisTest2.zip Ok, I have made further analysis. I tested the service with a generated axis2-client and I see that I am getting back the fault correctly, i.e. I can access the self-defined faultcode, faultActor and so on. My wsdl definition for this wsdl fault contains following: <xsd:element name="faultCode" type="xsd:string"> <xsd:annotation> <xsd:documentation> faultCode consists of a five letter identifier plus a three digit id (serial number). For example, "GENEX001" is a generic error and "AUTEX001" is a authenification error </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="faultString" type="xsd:string"> <xsd:annotation> <xsd:documentation> corresponding description of the faultCode </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="faultActor" type="xsd:string"> <xsd:annotation> <xsd:documentation> element displays url of the webservice where the exception occured </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="faultDetail" type="xsd:string"> <xsd:annotation> <xsd:documentation> element pictures the actual exception message and complete stack trace. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="LogFault"> <xsd:annotation> <xsd:documentation> fault element for handling errors during the logservice </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element ref="types:faultCode"/> <xsd:element ref="types:faultString"/> <xsd:element ref="types:faultActor"/> <xsd:element ref="types:faultDetail"/> </xsd:sequence> </xsd:complexType> </xsd:element> I send a response and I am getting back following response: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <soapenv:Fault> <faultcode>soapenv:Server</faultcode> <faultstring>LogFaultException</faultstring> <detail> <ns2:LogFault xmlns:ns2="http://cis.log.interface.de.ibm.com/types"> <s547:faultCode xmlns:s547="http://cis.de.ibm.com/simpleTypes">LOGEX002</s547:faultCode> <s548:faultString xmlns:s548="http://cis.de.ibm.com/simpleTypes">Database for LogService not available.</s548:faultString> <s549:faultActor xmlns:s549="http://cis.de.ibm.com/simpleTypes">logRun</s549:faultActor> <s550:faultDetail xmlns:s550="http://cis.de.ibm.com/simpleTypes">no stacktrace.</s550:faultDetail> </ns2:LogFault> </detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope> I have tested it with an autogenerated axis-client and a junit-testmethod. If the logfaultexception is thrown by the service, I can output the faultActor, faultString, detail and code in the catch-block. /** * Auto generated test method */ public void testlogRun() { LogRunResponseVO logRun = null; try { com.ibm.de.cis.log.client.CisLogServiceStub stub = new com.ibm.de.cis.log.client.CisLogServiceStub( endpoint); com.ibm.de.cis.log.client.CisLogServiceStub.LogRunRequestVO logRunRequestVO18 = (com.ibm.de.cis.log.client.CisLogServiceStub.LogRunRequestVO) getTestObject(com.ibm.de.cis.log.client.CisLogServiceStub.LogRunRequestVO.class); logRunRequestVO18.setEmptyparam( logRun = stub.logRun(logRunRequestVO18); } catch (AxisFault e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } catch (LogFaultException e) { LogFault fault = e.getFaultMessage(); System.out.println("Actor: " + fault.getFaultActor()); System.out.println("Code:" + fault.getFaultCode()); System.out.println("Detail:" + fault.getFaultDetail()); System.out.println("FaultString:" + fault.getFaultString()); e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } System.out.println(logRun.getRunId()); } Question is why Ode cannot access these information? Following stacktrace is available in Ode. <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><addr:To xmlns:addr="http://www.w3.org/2005/08/addressing">http://localhost:8180/cisLogWeb/services/cisLogService</addr:To><addr:Action xmlns:addr="http://www.w3.org/2005/08/addressing">http://cis.log.interface.de.ibm.com/service/logRun</addr:Action><addr:ReplyTo xmlns:addr="http://www.w3.org/2005/08/addressing"><addr:Address>http://www.w3.org/2005/08/addressing/anonymous</addr:Address></addr:ReplyTo><addr:MessageID xmlns:addr="http://www.w3.org/2005/08/addressing">uuid:hqejbhcnphr2n1qwgjen65</addr:MessageID></soapenv:Header><soapenv:Body><axis2ns2:LogRunRequestVO xmlns:axis2ns2="http://cis.log.interface.de.ibm.com/types" xmlns:types="http://cis.log.interface.de.ibm.com/types"> <xsd:emptyparam xmlns:xsd="http://cis.de.ibm.com/simpleTypes">true</xsd:emptyparam> </axis2ns2:LogRunRequestVO></soapenv:Body></soapenv:Envelope> 10:48:58,462 DEBUG [SessionOutHandler] <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><addr:To xmlns:addr="http://www.w3.org/2005/08/addressing">http://localhost:8180/cisLogWeb/services/cisLogService</addr:To><addr:Action xmlns:addr="http://www.w3.org/2005/08/addressing">http://cis.log.interface.de.ibm.com/service/logRun</addr:Action><addr:ReplyTo xmlns:addr="http://www.w3.org/2005/08/addressing"><addr:Address>http://www.w3.org/2005/08/addressing/anonymous</addr:Address></addr:ReplyTo><addr:MessageID xmlns:addr="http://www.w3.org/2005/08/addressing">uuid:hqejbhcnphr2n1qwgjen65</addr:MessageID></soapenv:Header><soapenv:Body><axis2ns2:LogRunRequestVO xmlns:axis2ns2="http://cis.log.interface.de.ibm.com/types" xmlns:types="http://cis.log.interface.de.ibm.com/types"> <xsd:emptyparam xmlns:xsd="http://cis.de.ibm.com/simpleTypes">true</xsd:emptyparam> </axis2ns2:LogRunRequestVO></soapenv:Body></soapenv:Envelope> DEBUG - GeronimoLog.debug(66) | Found a header in incoming message, checking if there are endpoints there. 10:48:59,503 DEBUG [SessionInHandler] Found a header in incoming message, checking if there are endpoints there. ERROR - GeronimoLog.error(108) | Error sending message (mex={PartnerRoleMex#hqejbhcnphr2n1qwgjen64 [PID {http://com.ibm.de.cis/archive}cisArchive-40] calling [EMAIL PROTECTED](...)}): LogFaultException org.apache.axis2.AxisFault: LogFaultException at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:486) at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:343) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163) at org.apache.ode.axis2.ExternalService$1$1.call(ExternalService.java:148) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) at java.util.concurrent.FutureTask.run(FutureTask.java:123) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) at java.lang.Thread.run(Thread.java:595) 10:48:59,513 ERROR [ExternalService] Error sending message (mex={PartnerRoleMex#hqejbhcnphr2n1qwgjen64 [PID {http://com.ibm.de.cis/archive}cisArchive-40] calling [EMAIL PROTECTED](...)}): LogFaultException org.apache.axis2.AxisFault: LogFaultException at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:486) at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:343) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163) at org.apache.ode.axis2.ExternalService$1$1.call(ExternalService.java:148) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) at java.util.concurrent.FutureTask.run(FutureTask.java:123) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) at java.lang.Thread.run(Thread.java:595) DEBUG - GeronimoLog.trace(54) | Mex[hqejbhcnphr2n1qwgjen64].setPortOp(...) 10:48:59,663 DEBUG [MessageExchangeImpl] Mex[hqejbhcnphr2n1qwgjen64].setPortOp(...) For more details are avialable, see http://www.nabble.com/Error-handling-in-bpel-processes-tf4555881.html -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.