ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matthieu Riou" <matth...@offthelip.org>
Subject Re: Error handling in bpel processes
Date Wed, 10 Oct 2007 14:34:40 GMT
Hi Jens,

I've replied to the issue as well. Please make sure to use the 1.1 branch,
the trunk is under development and is not as stable.

Thanks,
Matthieu

On 10/10/07, Jens Goldhammer <Goldhammer.Jens@gmx.net> wrote:
>
>
> I have reopened the fixed issue in JIRA. All details under
>
> https://issues.apache.org/jira/browse/ODE-194?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
> JIRA
>
>
>
> Alex Boisvert wrote:
> >
> > Excellent, I've also created a similar test case... I'm not sure if they
> > trigger the same bug yet but I'll be looking at both of them next week.
> >
> > thanks!!
> > alex
> >
> >
> > On 10/5/07, Jens Goldhammer <Goldhammer.Jens@gmx.net> wrote:
> >>
> >>
> >> Ok, I have opened an issue
> >> (https://issues.apache.org/jira/browse/ODE-194)
> >> and included a minimal runnable example for showing the error.
> >>
> >>
> >> Jens Goldhammer wrote:
> >> >
> >> > 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.CisLogServiceStubstub
> >> =
> >> 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
> >> > org.apache.ode.bpel.epr.URLEndpoint@c88805.logRun(...)}):
> >> > 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
> >> > org.apache.ode.bpel.epr.URLEndpoint@c88805.logRun(...)}):
> >> > 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(...)
> >> >
> >> > Thanks for your help.
> >> > Jens
> >> >
> >> >
> >> > Jens Goldhammer wrote:
> >> >>
> >> >>
> >> >>
> >> >> Alex Boisvert wrote:
> >> >>>
> >> >>> On 10/2/07, Jens Goldhammer <Goldhammer.Jens@gmx.net> wrote:
> >> >>>>
> >> >>>> I believe in my case that Axis2 cannot acces the fault which
the
> >> >>>> service
> >> >>>> responses to ODE back. Here the initial business fault become
an
> ODE
> >> >>>> fault
> >> >>>> and behave as you have described already.
> >> >>>> Or does the stacktrace below has an other meaning?
> >> >>>>
> >> >>>> org.apache.axis2.AxisFault: LogFaultException
> >> >>>>         at
> >> >>>> org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(
> >> Utils.java
> >> >>>> :486)
> >> >>>
> >> >>>
> >> >>> The stacktrace indicates Ode detected the fault and is re-throwing
> >> it.
> >> >>> But
> >> >>> I'm not sure I understand what doesn't work for you.... is it that,
> >> >>>
> >> >>> 1) Your service sends back a Fault (described in WSDL) and you
> can't
> >> >>> catch
> >> >>> it in your process?
> >> >>>
> >> >>> 2) Your service sends back a Fault (not in WSDL) and you use
> >> >>> "faultOnFailure=true" but you can't catch it in your process?
> >> >>>
> >> >>> In either case, if you can simplify your setup and attach your
> files
> >> to
> >> >>> a
> >> >>> Jira issue we could look into things in detail.
> >> >>>
> >> >>> alex
> >> >>>
> >> >>>
> >> >>
> >> >> It is the first point- I send back a fault and I cannot catch it in
> >> >> Ode... and I don´t know why...
> >> >> I see that there is an wsdl fault, but Ode does not execute the
> fault
> >> >> handler for this fault...
> >> >>
> >> >>
> >> >
> >> >
> >>
> >> --
> >> View this message in context:
> >>
> http://www.nabble.com/Error-handling-in-bpel-processes-tf4555881.html#a13055706
> >> Sent from the Apache Ode User mailing list archive at Nabble.com.
> >>
> >>
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/Error-handling-in-bpel-processes-tf4555881.html#a13136987
> Sent from the Apache Ode User mailing list archive at Nabble.com.
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message