Hi 

I've just tested the route following two scenarios and I as far I can see,
the handler works but only when the <transacted/> instruction is removed
from the route.

I wrote down a test bean "testBean" which it throws an exception and I
tested that the route below works and the exceptions are caught. Okay, so
far so good!!!

<route id="ntcs">
                <description>NTCS Oracle Insertion Queue</description>
                <from uri="seda:insertion.queue"/>
                <onException>
                        <exception>java.lang.Exception</exception>
                        <handled>
                                <constant>true</constant>
                        </handled>
                </onException>
                <split shareUnitOfWork="true">
                        <xpath>/ntcs-telemetry/telemetry</xpath>
                        <bean ref="testBean"/>
                </split>
        </route>


However, the same bean but adding <transacted/> to the route, it doesn't
work!

<route id="ntcs">
                <description>NTCS Oracle Insertion Queue</description>
                <from uri="seda:insertion.queue"/>
                
                <onException>
                        <exception>java.lang.Exception</exception>
                        <handled>
                                <constant>true</constant>
                        </handled>
                </onException>
                <transacted/>
                <split shareUnitOfWork="true">
                        <xpath>/ntcs-telemetry/telemetry</xpath>
                        <bean ref="testBean"/>
                </split>
        </route>

2014-01-21 12:45:40,742 | DEBUG | >>>> Endpoint[seda://insertion.queue]
Exchange[JmsMessage[JmsMessageID:
ID:tcs-amq-dev.tng.iac.es-33391-1390308307346-5:1:1:1:1]] |
org.apache.camel.processor.SendProcessor | Camel (camel) thread #0 -
JmsConsumer[ntcs.telemetry.in]
2014-01-21 12:45:40,750 | DEBUG | Transaction begin (0x27d21)
redelivered(false) for (MessageId:
queue_ntcs.telemetry.in_ID_tcs-amq-dev.tng.iac.es-33391-1390308307346-5_1_1_1_1
on ExchangeId: ID-tcs-amq-dev-tng-iac-es-41173-1390308309189-0-2)) |
org.apache.camel.spring.spi.TransactionErrorHandler | Camel (camel) thread
#1 - seda://insertion.queue
2014-01-21 12:45:40,754 | DEBUG | Creating new transaction with name [null]:
PROPAGATION_REQUIRED,ISOLATION_DEFAULT |
org.springframework.jdbc.datasource.DataSourceTransactionManager | Camel
(camel) thread #1 - seda://insertion.queue
2014-01-21 12:45:41,093 | WARN  | Transaction rollback (0x27d21)
redelivered(false) for (MessageId:
queue_ntcs.telemetry.in_ID_tcs-amq-dev.tng.iac.es-33391-1390308307346-5_1_1_1_1
on ExchangeId: ID-tcs-amq-dev-tng-iac-es-41173-1390308309189-0-2) caught:
Could not open JDBC Connection for transaction; nested exception is
java.sql.SQLException: Unable to start the Universal Connection Pool:
oracle.ucp.UniversalConnectionPoolException: Cannot get Connection from
Datasource: java.sql.SQLRecoverableException: IO Error: The Network Adapter
could not establish the connection |
org.apache.camel.spring.spi.TransactionErrorHandler | Camel (camel) thread
#1 - seda://insertion.queue
2014-01-21 12:45:41,094 | WARN  | Error processing exchange.
Exchange[JmsMessage[JmsMessageID:
ID:tcs-amq-dev.tng.iac.es-33391-1390308307346-5:1:1:1:1]]. Caused by:
[org.springframework.transaction.CannotCreateTransactionException - Could
not open JDBC Connection for transaction; nested exception is
java.sql.SQLException: Unable to start the Universal Connection Pool:
oracle.ucp.UniversalConnectionPoolException: Cannot get Connection from
Datasource: java.sql.SQLRecoverableException: IO Error: The Network Adapter
could not establish the connection] |
org.apache.camel.component.seda.SedaConsumer | Camel (camel) thread #1 -
seda://insertion.queue
org.springframework.transaction.CannotCreateTransactionException: Could not
open JDBC Connection for transaction; nested exception is
java.sql.SQLException: Unable to start the Universal Connection Pool:
oracle.ucp.UniversalConnectionPoolException: Cannot get Connection from
Datasource: java.sql.SQLRecoverableException: IO Error: The Network Adapter
could not establish the connection
        at
org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:241)
        at
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:372)
        at
org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128)
        at
org.apache.camel.spring.spi.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:174)
        at
org.apache.camel.spring.spi.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:134)
        at
org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:103)
        at
org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:112)
        at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
        at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
        at
org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:291)
        at
org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:200)
        at
org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:147)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
Caused by: java.sql.SQLException: Unable to start the Universal Connection
Pool: oracle.ucp.UniversalConnectionPoolException: Cannot get Connection
from Datasource: java.sql.SQLRecoverableException: IO Error: The Network
Adapter could not establish the connection
        at
oracle.ucp.util.UCPErrorHandler.newSQLException(UCPErrorHandler.java:488)
        at
oracle.ucp.util.UCPErrorHandler.throwSQLException(UCPErrorHandler.java:163)
        at
oracle.ucp.jdbc.PoolDataSourceImpl.startPool(PoolDataSourceImpl.java:643)
        at
oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:878)
        at
oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:845)
        at
oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:839)
        at
org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:203)
        ... 14 more
Caused by: oracle.ucp.UniversalConnectionPoolException: Cannot get
Connection from Datasource: java.sql.SQLRecoverableException: IO Error: The
Network Adapter could not establish the connection
        at
oracle.ucp.util.UCPErrorHandler.newUniversalConnectionPoolException(UCPErrorHandler.java:368)
        at
oracle.ucp.util.UCPErrorHandler.throwUniversalConnectionPoolException(UCPErrorHandler.java:49)
        at
oracle.ucp.util.UCPErrorHandler.throwUniversalConnectionPoolException(UCPErrorHandler.java:80)
        at
oracle.ucp.jdbc.DataSourceConnectionFactoryAdapter.createConnection(DataSourceConnectionFactoryAdapter.java:102)
        at
oracle.ucp.common.UniversalConnectionPoolImpl$UniversalConnectionPoolInternal.createOnePooledConnectionInternal(UniversalConnectionPoolImpl.java:1584)
        at
oracle.ucp.common.UniversalConnectionPoolImpl$UniversalConnectionPoolInternal.access$600(UniversalConnectionPoolImpl.java:1420)
        at
oracle.ucp.common.UniversalConnectionPoolImpl.createOnePooledConnection(UniversalConnectionPoolImpl.java:498)
        at
oracle.ucp.jdbc.oracle.OracleJDBCConnectionPool.createOnePooledConnection(OracleJDBCConnectionPool.java:127)
:


So, please, I encourage you to test a transacted route instead to see
whether you can reproduce the problem. Just bear in mind that this scenario
works on Camel 2.7.0 for me.



--
View this message in context: 
http://camel.465427.n5.nabble.com/Problem-with-exception-handler-onException-on-Camel-2-12-X-routes-tp5742605p5746276.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to