Hi,

How does your DeadLetterErrorHandler looks like ?
I just wrote an simple test case on the camel-cxf[1] and the camel can get the exception when the server is down.

BTW, can you show me the full stack trace ?
[1] http://svn.apache.org/viewvc?rev=1245288&view=rev

Willem

On Fri Feb 17 08:13:55 2012, ychawla wrote:
Hello All,
Consider a simple camel route like this that invokes a one way service:

     <camel:route errorHandlerRef="myDeadLetterErrorHandler">
       <camel:from uri="inputDir"/>
                <camel:setHeader
headerName="operationName"><constant>opName</constant></camel:setHeader>
                 <camel:setHeader
headerName="operationNamespace"><constant>opNamespace</constant></camel:setHeader>
                 <camel:to uri="cxf:bean:myService?dataFormat=PAYLOAD"/>

     </camel:route>

If the endpoint you are invoking is down, CXF will throw an exception:

Caused by: java.net.ConnectException: Connection refused
         at java.net.PlainSocketImpl.socketConnect(Native Method)[:1.6.0_29]
         at
java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)[:1.6.0_29]
         at
java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)[:1.6.0_29]
         at
java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)[:1.6.0_29]
         at
java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)[:1.6.0_29]

I thought that the error handler that I set on the route would handle this
for me and I could configure the retries and retry interval.  However, this
exception never makes it back to the exchange on the route.

I tried to set up a CXF phase interceptor to handle this, but I was unable
to put the CXF exception onto the Camel exchange.  Please see this related
post on the CXF list for more details on the interceptor configuration:

http://cxf.547215.n5.nabble.com/CXF-Camel-JMS-Endpoint-exception-handling-td4471174.html#a5490748

I also tried to grab the out of band headers from the exchanges and check
the HTTP status for a 200 response, but these appear to only be available in
POJO mode.  I figured I could throw an exception for a status other than 200
since I have a one way service.

I find this strange.  Should an exception thrown in the CXF interceptor
chain makes it way back to the Camel exchange?  Am I missing something here?

Thanks,
Yogesh

--
View this message in context: 
http://camel.465427.n5.nabble.com/Propogate-CXF-Exception-to-Camel-tp5491102p5491102.html
Sent from the Camel - Users mailing list archive at Nabble.com.



--
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog:    http://willemjiang.blogspot.com (English)
         http://jnn.javaeye.com (Chinese)
Twitter: willemjiang
Weibo: willemjiang

Reply via email to