[jboss-user] [JBoss jBPM] - BPEL Problem: Fault Handler
agusgr
do-not-reply at jboss.com
Wed Nov 7 06:30:15 EST 2007
Hi, I'm trying to develop a BPEL process with fault handling. I have a DNS web service wich send a fault message when cannot resolve an URL. The wsdl from this service is this:<?xml version="1.0" encoding="UTF-8"?>
| <wsdl:definitions targetNamespace="http://dns"
| xmlns:apachesoap="http://xml.apache.org/xml-soap"
| xmlns:impl="http://dns" xmlns:intf="http://dns"
| xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
| xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
| xmlns:xsd="http://www.w3.org/2001/XMLSchema">
| <!--WSDL created by Apache Axis version: 1.3
| Built on Oct 05, 2005 (05:23:37 EDT)-->
| <wsdl:types>
| <schema elementFormDefault="qualified"
| targetNamespace="http://dns" xmlns="http://www.w3.org/2001/XMLSchema">
| <element name="getIPByURL">
| <complexType>
| <sequence>
| <element name="request" type="impl:DNSRequestData"/>
| </sequence>
| </complexType>
| </element>
| <complexType name="DNSRequestData">
| <sequence>
| <element name="URL" nillable="true" type="xsd:string"/>
| </sequence>
| </complexType>
| <element name="getIPByURLResponse">
| <complexType>
| <sequence>
| <element name="getIPByURLReturn" type="impl:DNSResponseData"/>
| </sequence>
| </complexType>
| </element>
| <complexType name="DNSResponseData">
| <sequence>
| <element name="IP" nillable="true" type="xsd:string"/>
| </sequence>
| </complexType>
| <complexType name="DNSFault">
| <sequence>
| <element name="MESSAGE" nillable="true" type="xsd:string"/>
| </sequence>
| </complexType>
| <element name="fault" type="impl:DNSFault"/>
| </schema>
| </wsdl:types>
|
| <wsdl:message name="getIPByURLRequest">
|
| <wsdl:part element="impl:getIPByURL" name="parameters"/>
|
| </wsdl:message>
|
| <wsdl:message name="DNSFault">
|
| <wsdl:part element="impl:fault" name="fault"/>
|
| </wsdl:message>
|
| <wsdl:message name="getIPByURLResponse">
|
| <wsdl:part element="impl:getIPByURLResponse" name="parameters"/>
|
| </wsdl:message>
|
| <wsdl:portType name="DNS">
|
| <wsdl:operation name="getIPByURL">
|
| <wsdl:input message="impl:getIPByURLRequest" name="getIPByURLRequest"/>
|
| <wsdl:output message="impl:getIPByURLResponse" name="getIPByURLResponse"/>
|
| <wsdl:fault message="impl:DNSFault" name="DNSFault"/>
|
| </wsdl:operation>
|
| </wsdl:portType>
|
| <wsdl:binding name="DNSSoapBinding" type="impl:DNS">
|
| <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
| <wsdl:operation name="getIPByURL">
|
| <wsdlsoap:operation soapAction=""/>
|
| <wsdl:input name="getIPByURLRequest">
|
| <wsdlsoap:body use="literal"/>
|
| </wsdl:input>
|
| <wsdl:output name="getIPByURLResponse">
|
| <wsdlsoap:body use="literal"/>
|
| </wsdl:output>
|
| <wsdl:fault name="DNSFault">
|
| <wsdlsoap:fault name="DNSFault" use="literal"/>
|
| </wsdl:fault>
|
| </wsdl:operation>
|
| </wsdl:binding>
|
| <wsdl:service name="DNSService">
|
| <wsdl:port binding="impl:DNSSoapBinding" name="DNS">
|
| <wsdlsoap:address location="http://localhost:4040/DNSWebService/services/DNS"/>
|
| </wsdl:port>
|
| </wsdl:service>
|
| </wsdl:definitions>
|
|
In the BPEL code I have this:<bpws:faultHandlers>
| <bpws:catch faultName="ns1:DNSFault">
| <bpws:sequence name="HiddenSequence">
| <bpws:assign name="LoadErrorMessage" validate="no">
| <bpws:copy>
| <bpws:from>'Error in Service'</bpws:from>
| <bpws:to>$output.outputparam/tns:City</bpws:to>
| </bpws:copy>
| <bpws:copy>
| <bpws:from>'Error in Service'</bpws:from>
| <bpws:to>$output.outputparam/tns:Country</bpws:to>
| </bpws:copy>
| </bpws:assign>
| <bpws:reply name="SendErrorMessage" operation="getURLInfo" partnerLink="client" portType="tns:BPELService" variable="output"/>
| </bpws:sequence>
| </bpws:catch>
| </bpws:faultHandlers>
The proces is deployed and works well when there is no fault, but when the DNS service send a fault message, I got this:
anonymous wrote : 2007-11-07 12:14:18,234 DEBUG [org.jbpm.bpel.integration.jms.StartListener] caught exception while passing control to process, searching for handler
| org.jbpm.bpel.BpelException: no wsdl fault matches the contents of the soap detail element: org.jboss.ws.soap.DetailImpl at 17a35c[[detail: null]]
| at org.jbpm.bpel.integration.client.SoapClient.readFault(SoapClient.java:497)
| at org.jbpm.bpel.integration.client.SoapClient.call(SoapClient.java:115)
| at org.jbpm.bpel.integration.jms.JmsIntegrationService.invoke(JmsIntegrationService.java:242)
| at org.jbpm.bpel.graph.basic.Invoke.execute(Invoke.java:46)
| at org.jbpm.bpel.graph.def.Activity.enter(Activity.java:105)
| at org.jbpm.graph.def.Transition.take(Transition.java:151)
| at org.jbpm.graph.def.Node.leave(Node.java:393)
| at org.jbpm.bpel.graph.def.Activity.leave(Activity.java:184)
| at org.jbpm.bpel.graph.basic.Assign.execute(Assign.java:55)
| at org.jbpm.bpel.graph.def.Activity.enter(Activity.java:105)
| at org.jbpm.graph.def.Transition.take(Transition.java:151)
| at org.jbpm.graph.def.Node.leave(Node.java:393)
| at org.jbpm.bpel.graph.def.Activity.leave(Activity.java:184)
| at org.jbpm.bpel.graph.struct.ProcessInstanceStarter.visit(ProcessInstanceStarter.java:66)
| at org.jbpm.bpel.graph.basic.Receive.accept(Receive.java:81)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:185)
| at org.jbpm.bpel.graph.basic.Receive$$EnhancerByCGLIB$$9222be5b.accept()
| at org.jbpm.bpel.graph.struct.ProcessInstanceStarter.visit(ProcessInstanceStarter.java:100)
| at org.jbpm.bpel.graph.struct.Sequence.accept(Sequence.java:104)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:185)
| at org.jbpm.bpel.graph.def.Activity$$EnhancerByCGLIB$$9e9c8226.accept()
| at org.jbpm.bpel.graph.struct.ProcessInstanceStarter.visit(ProcessInstanceStarter.java:54)
| at org.jbpm.bpel.graph.def.BpelDefinition.messageReceived(BpelDefinition.java:111)
| at org.jbpm.bpel.integration.jms.StartListener.onMessage(StartListener.java:124)
| at org.jboss.mq.SpyMessageConsumer.run(SpyMessageConsumer.java:696)
| at java.lang.Thread.run(Thread.java:595)
| 2007-11-07 12:14:18,234 ERROR [org.jbpm.bpel.integration.jms.StartListener] could not start process instance
| org.jbpm.bpel.BpelException: no wsdl fault matches the contents of the soap detail element: org.jboss.ws.soap.DetailImpl at 17a35c[[detail: null]]
| at org.jbpm.bpel.integration.client.SoapClient.readFault(SoapClient.java:497)
| at org.jbpm.bpel.integration.client.SoapClient.call(SoapClient.java:115)
| at org.jbpm.bpel.integration.jms.JmsIntegrationService.invoke(JmsIntegrationService.java:242)
| at org.jbpm.bpel.graph.basic.Invoke.execute(Invoke.java:46)
| at org.jbpm.bpel.graph.def.Activity.enter(Activity.java:105)
| at org.jbpm.graph.def.Transition.take(Transition.java:151)
| at org.jbpm.graph.def.Node.leave(Node.java:393)
| at org.jbpm.bpel.graph.def.Activity.leave(Activity.java:184)
| at org.jbpm.bpel.graph.basic.Assign.execute(Assign.java:55)
| at org.jbpm.bpel.graph.def.Activity.enter(Activity.java:105)
| at org.jbpm.graph.def.Transition.take(Transition.java:151)
| at org.jbpm.graph.def.Node.leave(Node.java:393)
| at org.jbpm.bpel.graph.def.Activity.leave(Activity.java:184)
| at org.jbpm.bpel.graph.struct.ProcessInstanceStarter.visit(ProcessInstanceStarter.java:66)
| at org.jbpm.bpel.graph.basic.Receive.accept(Receive.java:81)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:185)
| at org.jbpm.bpel.graph.basic.Receive$$EnhancerByCGLIB$$9222be5b.accept()
| at org.jbpm.bpel.graph.struct.ProcessInstanceStarter.visit(ProcessInstanceStarter.java:100)
| at org.jbpm.bpel.graph.struct.Sequence.accept(Sequence.java:104)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:185)
| at org.jbpm.bpel.graph.def.Activity$$EnhancerByCGLIB$$9e9c8226.accept()
| at org.jbpm.bpel.graph.struct.ProcessInstanceStarter.visit(ProcessInstanceStarter.java:54)
| at org.jbpm.bpel.graph.def.BpelDefinition.messageReceived(BpelDefinition.java:111)
| at org.jbpm.bpel.integration.jms.StartListener.onMessage(StartListener.java:124)
| at org.jboss.mq.SpyMessageConsumer.run(SpyMessageConsumer.java:696)
| at java.lang.Thread.run(Thread.java:595)
The fault message that I receive is this:
anonymous wrote : <soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
| <soapenv:Header/>
| <soapenv:Body>
| <env:Fault xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
| soapenv:Server.generalException
|
|
| <ns1:exceptionName xmlns:ns1='http://xml.apache.org/axis/'>dns.DNSFault</ns1:exceptionName>
| <ns2:hostname xmlns:ns2='http://xml.apache.org/axis/'>medea</ns2:hostname>
|
| </env:Fault></soapenv:Body></soapenv:Envelope>
I'm using the JBoss AS 4.05 and the BPEL engine jbpm-bpel.1.1.Beta3. To develop the DNS web service I use the Eclipse WTP 3.2 version.
I think that the fault message is not correct, but I don't know well what kind of fault messages expects the bpel engine.
Any ideas??
Thank you all and sorry for the long post
Agus
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4102479#4102479
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4102479
More information about the jboss-user
mailing list