[jboss-user] [JBoss jBPM] - BPEL Problem with Fault Handler

Fabiana do-not-reply at jboss.com
Mon Aug 18 06:32:36 EDT 2008


Hi, I'm trying to develop a BPEL process with fault handling. I have a web service wich unzip a file and send a fault message when cannot find the file. The wsdl of this web service is this:

  | <?xml version="1.0" encoding="UTF-8"?><wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:schema="http://www.xxx.it/xxx/schema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://www.xxx.it/xxx/schema">
  |   <wsdl:types>
  |     <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.xxx.it/xxx/schema" elementFormDefault="qualified" targetNamespace="http://www.xxx.it/xxx/schema">
  |     <element name="UnzipXPostFileRequest">
  |         <complexType>
  |             <sequence>
  |                 <element maxOccurs="1" minOccurs="1" name="idFile" type="long"/>
  |             </sequence>
  |         </complexType>
  | 
  |     </element>
  |     
  |     <element name="UnzipXPostFileResponse">
  |         <complexType>
  |             <sequence>
  |                 <element maxOccurs="1" minOccurs="1" name="nomeFileDati" type="tns:TipoNomePathFile"/>
  |                 <element maxOccurs="1" minOccurs="1" name="pathFileDati" type="tns:TipoNomePathFile"/>
  |                 <element maxOccurs="1" minOccurs="0" name="nomeFileIndice" type="tns:TipoNomePathFile"/>
  |                 <element maxOccurs="1" minOccurs="0" name="pathFileIndice" type="tns:TipoNomePathFile"/>
  |             </sequence>
  | 
  |         </complexType>
  |     </element>
  | 
  |     <element name="ParseXMLIndiceRequest">
  |         <complexType>
  |             <sequence>
  |                 <element maxOccurs="1" minOccurs="1" name="idFile" type="long"/>
  |                 <element maxOccurs="1" minOccurs="1" name="nomeFileIndice" type="tns:TipoNomePathFile"/>
  |                 <element maxOccurs="1" minOccurs="1" name="pathFileIndice" type="tns:TipoNomePathFile"/>
  | 
  |             </sequence>
  |         </complexType>
  |     </element>
  | 
  | 	<element name="ParseXMLIndiceResponse">
  |         <complexType>
  |             <sequence>
  |                 <element maxOccurs="1" minOccurs="1" name="nomeFileIndice" type="tns:TipoNomePathFile"/>
  |                 <element maxOccurs="1" minOccurs="1" name="pathFileIndice" type="tns:TipoNomePathFile"/>
  | 
  |             </sequence>
  |         </complexType>
  |     </element>
  | 
  | 	<element name="UnzipXPostFileFault">
  |         <complexType>
  |             <sequence>
  |                 <element name="customField" type="string"/>
  |             </sequence>
  | 
  |         </complexType>
  |     </element>
  |            
  |     <simpleType name="TipoNomePathFile">
  | 		<annotation>
  | 			<documentation>Definisce il nome o il percorso di un file</documentation>
  | 		</annotation>
  |  		<restriction base="string">
  |  			<minLength value="1"/>
  | 
  |  			<maxLength value="255"/>
  |  			<pattern value="[a-zA-Z0-9_\\/. ]+"/>
  |  		</restriction>
  | 	</simpleType>
  | </schema>
  |   </wsdl:types>
  |   <wsdl:message name="UnzipXPostFileRequest">
  |     <wsdl:part element="schema:UnzipXPostFileRequest" name="UnzipXPostFileRequest">
  |     </wsdl:part>
  | 
  |   </wsdl:message>
  |   <wsdl:message name="ParseXMLIndiceRequest">
  |     <wsdl:part element="schema:ParseXMLIndiceRequest" name="ParseXMLIndiceRequest">
  |     </wsdl:part>
  |   </wsdl:message>
  |   <wsdl:message name="UnzipXPostFileFault">
  |     <wsdl:part element="schema:UnzipXPostFileFault" name="UnzipXPostFileFault">
  |     </wsdl:part>
  |   </wsdl:message>
  | 
  |   <wsdl:message name="ParseXMLIndiceResponse">
  |     <wsdl:part element="schema:ParseXMLIndiceResponse" name="ParseXMLIndiceResponse">
  |     </wsdl:part>
  |   </wsdl:message>
  |   <wsdl:message name="UnzipXPostFileResponse">
  |     <wsdl:part element="schema:UnzipXPostFileResponse" name="UnzipXPostFileResponse">
  |     </wsdl:part>
  |   </wsdl:message>
  |   <wsdl:portType name="XPostWS">
  | 
  |     <wsdl:operation name="UnzipXPostFile">
  |       <wsdl:input message="schema:UnzipXPostFileRequest" name="UnzipXPostFileRequest">
  |     </wsdl:input>
  |       <wsdl:output message="schema:UnzipXPostFileResponse" name="UnzipXPostFileResponse">
  |     </wsdl:output>
  |       <wsdl:fault message="schema:UnzipXPostFileFault" name="UnzipXPostFileFault">
  |     </wsdl:fault>
  |     </wsdl:operation>
  |     <wsdl:operation name="ParseXMLIndice">
  | 
  |       <wsdl:input message="schema:ParseXMLIndiceRequest" name="ParseXMLIndiceRequest">
  |     </wsdl:input>
  |       <wsdl:output message="schema:ParseXMLIndiceResponse" name="ParseXMLIndiceResponse">
  |     </wsdl:output>
  |     </wsdl:operation>
  |   </wsdl:portType>
  |   <wsdl:binding name="XPostWSBinding" type="schema:XPostWS">
  |     <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
  |     <wsdl:operation name="UnzipXPostFile">
  | 
  |       <soap:operation soapAction=""/>
  |       <wsdl:input name="UnzipXPostFileRequest">
  |         <soap:body use="literal"/>
  |       </wsdl:input>
  |       <wsdl:output name="UnzipXPostFileResponse">
  |         <soap:body use="literal"/>
  |       </wsdl:output>
  |       <wsdl:fault name="UnzipXPostFileFault">
  |         <soap:fault name="UnzipXPostFileFault" use="literal"/>
  | 
  |       </wsdl:fault>
  |     </wsdl:operation>
  |     <wsdl:operation name="ParseXMLIndice">
  |       <soap:operation soapAction=""/>
  |       <wsdl:input name="ParseXMLIndiceRequest">
  |         <soap:body use="literal"/>
  |       </wsdl:input>
  |       <wsdl:output name="ParseXMLIndiceResponse">
  |         <soap:body use="literal"/>
  | 
  |       </wsdl:output>
  |     </wsdl:operation>
  |   </wsdl:binding>
  |   <wsdl:service name="XPostWSService">
  |     <wsdl:port binding="schema:XPostWSBinding" name="XPostWSPort">
  |       <soap:address location="http://localhost:8080/xxxx-server/xxxxWS"/>
  |     </wsdl:port>
  |   </wsdl:service>
  | </wsdl:definitions>
  | 

In the BPEL code I have this inline fault handler:

  |         <bpws:invoke inputVariable="unzipXPostFileRequest" name="Invoke"
  |             operation="UnzipXPostFile"
  |             outputVariable="unzipXPostFileResponse"            
  |             partnerLink="xPostWS" portType="ns0:XPostWS">
  |             <bpws:catch faultMessageType="ns0:UnzipXPostFileFault"
  |                 faultName="ns0:UnzipXPostFileFault" faultVariable="unzipXPostFileFault">
  |                 <bpws:sequence>
  |                     <bpws:assign name="Assign2" validate="no">
  |                         <bpws:copy>
  |                             <bpws:from><![CDATA[concat($input.payload, "Errore")]]></bpws:from>
  |                             <bpws:to part="payload" variable="input">
  |                                 <bpws:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:input]]></bpws:query>
  |                             </bpws:to>
  |                         </bpws:copy>
  |                     </bpws:assign>
  |                 </bpws:sequence>
  |             </bpws:catch>
  |         </bpws:invoke>
  | 

The process is deployed and works well when there is no fault, but when the service send a fault message, I got this:
anonymous wrote : 
  | 11:31:20,107 WARN  [ProxyWarnLog] Narrowing proxy to class org.jbpm.bpel.variable.def.MessageType - this operation breaks ==
  | 11:31:20,107 ERROR [GraphElement] action threw exception: org.jbpm.bpel.graph.exe.FaultInstance at d246ce[name={http://www.xxxx.it/xxxx/schema}UnzipXPostFileFault,message=org.jbpm.bpel.variable.exe.MessageValue@126a8dc[type=org.jbpm.bpel.variable.def.MessageType@1183a79[name={http://www.xxxx.it/xxxx/schema}UnzipXPostFileFault],parts={UnzipXPostFileFault=[UnzipXPostFileFault: null]}]]
  | org.jbpm.bpel.graph.exe.BpelFaultException: org.jbpm.bpel.graph.exe.FaultInstance at d246ce[name={http://www.xxxx.it/xxxx/schema}UnzipXPostFileFault,message=org.jbpm.bpel.variable.exe.MessageValue@126a8dc[type=org.jbpm.bpel.variable.def.MessageType@1183a79[name={http://www.xxxx.it/xxxx/schema}UnzipXPostFileFault],parts={UnzipXPostFileFault=[UnzipXPostFileFault: null]}]]
  | 	at org.jbpm.bpel.integration.client.SoapClient.call(SoapClient.java:112)
  | 	at org.jbpm.bpel.integration.jms.JmsIntegrationService.invoke(JmsIntegrationService.java:182)
  | 	at org.jbpm.bpel.integration.def.InvokeAction.execute(InvokeAction.java:76)
  | 	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.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:173)
  | 	at org.jbpm.graph.def.Action_$$_javassist_159.execute(Action_$$_javassist_159.java)
  | 	at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:264)
  | 	at org.jbpm.graph.def.Node.execute(Node.java:339)
  | 	at org.jbpm.bpel.graph.def.Activity.enter(Activity.java:110)
  | 	at org.jbpm.graph.def.Transition.take(Transition.java:151)
  | 	at org.jbpm.graph.def.Node.leave(Node.java:394)
  | 	at org.jbpm.bpel.graph.def.Activity.leave(Activity.java:200)
  | 	at org.jbpm.bpel.graph.basic.Assign.execute(Assign.java:47)
  | 	at org.jbpm.bpel.graph.def.Activity.enter(Activity.java:110)
  | 	at org.jbpm.graph.def.Transition.take(Transition.java:151)
  | 	at org.jbpm.graph.def.Node.leave(Node.java:394)
  | 	at org.jbpm.bpel.graph.def.Activity.leave(Activity.java:200)
  | 	at org.jbpm.bpel.graph.basic.Receive.messageReceived(Receive.java:53)
  | 	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.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:173)
  | 	at org.jbpm.bpel.graph.basic.Receive_$$_javassist_29.messageReceived(Receive_$$_javassist_29.java)
  | 	at org.jbpm.bpel.integration.def.ReceiveAction.deliverMessage(ReceiveAction.java:99)
  | 	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.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:173)
  | 	at org.jbpm.bpel.integration.def.ReceiveAction_$$_javassist_103.deliverMessage(ReceiveAction_$$_javassist_103.java)
  | 	at org.jbpm.bpel.integration.jms.StartListener.deliverRequest(StartListener.java:222)
  | 	at org.jbpm.bpel.integration.jms.StartListener.onMessage(StartListener.java:168)
  | 	at org.jboss.mq.SpyMessageConsumer.run(SpyMessageConsumer.java:682)
  | 	at java.lang.Thread.run(Thread.java:595)
  | 

This is the fault message that I receive:

  | <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  |    <SOAP-ENV:Header/>
  |    <SOAP-ENV:Body>
  |       <SOAP-ENV:Fault>
  |          <faultcode>SOAP-ENV:Server</faultcode>
  |          <faultstring>Server error</faultstring>
  |          <detail>
  |             <UnzipXPostFileFault xmlns="http://www.xxxx.it/xxxx/schema">
  |                <customField>100</customField>
  |             </UnzipXPostFileFault>
  |          </detail>
  |       </SOAP-ENV:Fault>
  |    </SOAP-ENV:Body>
  | </SOAP-ENV:Envelope>
  | 

I'm using the JBoss 4.2.2.GA  and the BPEL engine jbpm-bpel.1.1.GA To develop the web service I use Spring Web Services (first contract). 
Any ideas?
Thank you all and sorry for the long post,
Fabiana

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4171020#4171020

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4171020



More information about the jboss-user mailing list