You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by "Matthieu Riou (JIRA)" <ji...@apache.org> on 2007/05/30 00:07:22 UTC

[jira] Closed: (ODE-87) Fault handling in JBI

     [ https://issues.apache.org/jira/browse/ODE-87?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matthieu Riou closed ODE-87.
----------------------------


> Fault handling in JBI
> ---------------------
>
>                 Key: ODE-87
>                 URL: https://issues.apache.org/jira/browse/ODE-87
>             Project: Ode
>          Issue Type: Bug
>          Components: JBI Integration
>    Affects Versions: Incubator
>            Reporter: Alex Boisvert
>            Assignee: Maciej Szefler
>             Fix For: Incubator
>
>
> Alexander Logvinov <al...@softech.ru> reported on ode-user@ the following bug on 12/22/06:
> Hi,
> I've got a problem with handling SOAP fault in my BPEL process.
> I run ODE as a service engine in Servicemix.
> My BPEL process calls the web service that runs in Tomcat. The service is implemented using XFire.
> It has the following operation (this WSDL is generated by XFire):
>     <wsdl:portType name="WarehousePortType">
>          <wsdl:operation name="OrderBook">
>                 <wsdl:input name="OrderBookRequest" message="tns:OrderBookRequest"/>
>                 <wsdl:output name="OrderBookResponse" message="tns:OrderBookResponse"/>
>                 <wsdl:fault name="OrderException" message="tns:OrderException"/>
>          </wsdl:operation>
>     </wsdl:portType>
> that can throw the following fault:
>     <wsdl:message name="OrderException">
>         <wsdl:part name="OrderException" element="tns:OrderException"/>
>     </wsdl:message>
> ... of the following type:
>     <xsd:complexType name="OrderException">
>         <xsd:sequence>
>             <xsd:element minOccurs="0" name="orderMessage" nillable="true" type="xsd:string"/>
>         </xsd:sequence>
>     </xsd:complexType>
>     <xsd:element name="OrderException" type="tns:OrderException"/>
> My BPEL invokes this operation with the following code:
>         <scope name="Scope1">
>             <faultHandlers>
>                 <catchAll>
>                     <empty/>
>                 </catchAll>
>             </faultHandlers>
>             <invoke name="callWarehouse"
>                     partnerLink="warehousePartnerLink"
>                     operation="OrderBook"
>                     portType="warehouse:WarehousePortType"
>                     inputVariable="orderBookIn"
>                     outputVariable="orderBookOut"/>
>         </scope>
> The service replies with the following fault:
> <soap:Envelope
>         xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
>         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>     <soap:Body>
>         <soap:Fault>
>             <faultcode>soap:Server</faultcode>
>             <faultstring>unknown book: Design Patterns</faultstring>
>             <detail>
>                 <OrderException xmlns="http://Warehouse.HelloBook.softech.com">
>                     <orderMessage>There was an error processing the order.</orderMessage>
>                 </OrderException>
>             </detail>
>         </soap:Fault>
>     </soap:Body>
> </soap:Envelope>
> The log contains the following:
> It receives the full SOAP message from the server:
> 21:44:44,508 | DEBUG | Thread-13  | header                   | apache.commons.httpclient.Wire   69 | << "HTTP/1.1 500 Internal Server Error[\r][\n]"
> 21:44:44,524 | DEBUG | Thread-13  | header                   | apache.commons.httpclient.Wire   69 | << "Content-Type: text/xml;charset=UTF-8[\r][\n]"
> 21:44:44,524 | DEBUG | Thread-13  | header                   | apache.commons.httpclient.Wire   69 | << "Transfer-Encoding: chunked[\r][\n]"
> 21:44:44,524 | DEBUG | Thread-13  | header                   | apache.commons.httpclient.Wire   69 | << "Date: Fri, 22 Dec 2006 18:44:44 GMT[\r][\n]"
> 21:44:44,524 | DEBUG | Thread-13  | header                   | apache.commons.httpclient.Wire   69 | << "Server: Apache-Coyote/1.1[\r][\n]"
> 21:44:44,524 | DEBUG | Thread-13  | header                   | apache.commons.httpclient.Wire   69 | << "Connection: close[\r][\n]"
> 21:44:44,524 | DEBUG | Thread-13  | content                  | apache.commons.httpclient.Wire   83 | << "1"
> 21:44:44,524 | DEBUG | Thread-13  | content                  | apache.commons.httpclient.Wire   83 | << "e"
> 21:44:44,524 | DEBUG | Thread-13  | content                  | apache.commons.httpclient.Wire   83 | << "9"
> 21:44:44,524 | DEBUG | Thread-13  | content                  | apache.commons.httpclient.Wire   83 | << "[\r]"
> 21:44:44,524 | DEBUG | Thread-13  | content                  | apache.commons.httpclient.Wire   69 | << "[\n]"
> 21:44:44,539 | DEBUG | Thread-13  | content                  | apache.commons.httpclient.Wire   83 | << "<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>unknown book: Design Patterns</faultstring><detail><OrderException xmlns="http://Warehouse.HelloBook.softech.com"><orderMessage>There was an error processing the order.</orderMessage></OrderException></detail></soap:Fault>&
> lt;/soap:Body></soap:Envelope>"
> Then the fault message is truncated and the JBI message will not contain faultstring and faultcode:
> 21:44:44,555 | DEBUG | Thread-12  | DeliveryChannelImpl      | .messaging.DeliveryChannelImpl  300 | Accepted: InOut[
>   id: ID:alogvinov-3320-1166813006883-6:0
>   status: Active
>   role: consumer
>   service: {http://Warehouse.HelloBook.softech.com}Warehouse
>   endpoint: WarehouseHttpPort
>   operation: {http://Warehouse.HelloBook.softech.com}OrderBook
>   in: <?xml version="1.0" encoding="UTF-8"?><OrderBook xmlns="http://Warehouse.HelloBook.softech.com" xmlns:warehouse="http://Warehouse.HelloBook.softech.com">
> 							<customerID>123</customerID>
> 							<bookName>Design Patterns</bookName>
> 						</OrderBook>
>   fault: <?xml version="1.0" encoding="UTF-8"?><OrderException xmlns="http://Warehouse.HelloBook.softech.com"><orderMessage>There was an error processing the order.</orderMessage></OrderException>
> ]
> After a while I've got an error:
> 21:44:44,899 | ERROR | pool-3-thread-2 | Receiver                 | org.apache.ode.jbi.Receiver$1   192 | Error processing JBI message.
> java.lang.AssertionError: todo
> 	at org.apache.ode.jbi.OdeConsumer$2.call(OdeConsumer.java:199)
> 	at org.apache.ode.jbi.OdeConsumer$2.call(OdeConsumer.java:183)
> 	at org.apache.ode.bpel.scheduler.quartz.QuartzSchedulerImpl.execTransaction(QuartzSchedulerImpl.java:212)
> 	at org.apache.ode.jbi.OdeConsumer.outResponse(OdeConsumer.java:182)
> 	at org.apache.ode.jbi.OdeConsumer.onJbiMessageExchange(OdeConsumer.java:134)
> 	at org.apache.ode.jbi.JbiMessageExchangeEventRouter.onJbiMessageExchange(JbiMessageExchangeEventRouter.java:40)
> 	at org.apache.ode.jbi.Receiver$1.run(Receiver.java:190)
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
> 	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)
> It seems that it is raised by the following code in OdeConsumer.java
>     Fault jbiFlt = jbiMex.getFault();
>     if (jbiFlt != null) {
>         // TODO: How are we supposed to figure out the fault type exactly?
>         throw new AssertionError("todo");
>     }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.