I Have using camel 2.2.0 with spring 2.5.6 Tomcat 6 and Atomikos Transaction manager working together. I found error on stopping tomcat like this.
STACKTRACE: java.net.SocketException: socket closed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113) at com.mysql.jdbc.util.ReadAheadInputStream .readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160) at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188) at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1994) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2411) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2916) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723) at com.mysql.jdbc.Connection.execSQL(Connection.java:3283) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1332) at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:882) at com.mysql.jdbc.jdbc2.optional.PreparedStatementWrapper .execute(PreparedStatementWrapper.java:787) at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80) at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement .sqlExecuteUpdate(MappedStatement.java:216) at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement .executeUpdate(MappedStatement.java:94) at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate .update(SqlMapExecutorDelegate.java:457) at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:90) at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.update(SqlMapClientImpl.java:66) at org.apache.camel.component.ibatis.strategy.DefaultIBatisProcessingStategy .commit(DefaultIBatisProcessingStategy.java:42) at org.apache.camel.component.ibatis.IBatisPollingConsumer .processBatch(IBatisPollingConsumer.java:219) at org.apache.camel.component.ibatis.IBatisPollingConsumer.poll(IBatisPollingConsumer.java:179) at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:106) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417) at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask .access$101(ScheduledThreadPoolExecutor.java:65) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask .runPeriodic(ScheduledThreadPoolExecutor.java:146) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask .run(ScheduledThreadPoolExecutor.java:170) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676) at java.lang.Thread.run(Thread.java:595) ** END NESTED EXCEPTION ** Then I do some change in spring context like remove " destroy-method="destroy" " on poolconnectionfactorybean remove "destroy-method="close" "on atomikostransactionmanager and datasource and start and stop again I got random error like this. ERROR: org.apache.camel.component.ibatis.IBatisPollingConsumer - Caused by: [com.ibatis.common.jdbc.exception.NestedSQLException - Could not commit transaction. Cause: com.ibatis.sqlmap.engine.transaction.TransactionException: TransactionManager could not commit. No transaction is started.] com.ibatis.common.jdbc.exception.NestedSQLException: Could not commit transaction. Cause: com.ibatis.sqlmap.engine.transaction.TransactionException: TransactionManager could not commit. No transaction is started. at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.commitTransaction(SqlMapExecutorDelegate.java:719) at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.commitTransaction(SqlMapSessionImpl.java:172) at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.commitTransaction(SqlMapClientImpl.java:148) at org.apache.camel.component.ibatis.strategy.DefaultIBatisProcessingStategy.commit(DefaultIBatisProcessingStategy.java:45) at org.apache.camel.component.ibatis.IBatisPollingConsumer.processBatch(IBatisPollingConsumer.java:219) at org.apache.camel.component.ibatis.IBatisPollingConsumer.poll(IBatisPollingConsumer.java:179) at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:106) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417) at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:146) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:170) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676) at java.lang.Thread.run(Thread.java:595) Caused by: com.ibatis.sqlmap.engine.transaction.TransactionException: TransactionManager could not commit. No transaction is started. at com.ibatis.sqlmap.engine.transaction.TransactionManager.commit(TransactionManager.java:62) at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.commitTransaction(SqlMapExecutorDelegate.java:717) ... 15 more And Caused by: javax.jms.IllegalStateException: The Session is closed at org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:659) at org.apache.activemq.ActiveMQSession.getTransacted(ActiveMQSession.java:470) at org.apache.activemq.pool.PooledSession.getTransacted(PooledSession.java:193) at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.doSendToDestination(JmsConfiguration.java:224) at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.access$100(JmsConfiguration.java:164) at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate$3.doInJms(JmsConfiguration.java:198) at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:471) ... 55 more I turn on debug logging and see destroy sequence of spring bean like this. 31 มี.ค. 2553 19:52:43 org.apache.catalina.core.StandardService stop INFO: Stopping service Catalina 31 มี.ค. 2553 19:52:43 org.apache.catalina.core.ApplicationContext log INFO: Destroying Spring FrameworkServlet 'dispatcher' INFO : org.springframework.web.context.support.XmlWebApplicationContext - Closing org.springframework.web.context.support.xmlwebapplicationcont...@71e2b67c: display name [WebApplicationContext for namespace 'dispatcher-servlet']; startup date [Wed Mar 31 19:50:09 ICT 2010]; parent: org.springframework.web.context.support.xmlwebapplicationcont...@627a4489 DEBUG: org.apache.camel.spring.SpringCamelContext - onApplicationEvent: org.springframework.context.event.contextclosedevent[source=org.springframework.web.context.support.xmlwebapplicationcont...@71e2b67c: display name [WebApplicationContext for namespace 'dispatcher-servlet']; startup date [Wed Mar 31 19:50:09 ICT 2010]; parent: org.springframework.web.context.support.xmlwebapplicationcont...@627a4489] INFO : org.springframework.beans.factory.support.DefaultListableBeanFactory - Destroying singletons in org.springframework.beans.factory.support.defaultlistablebeanfact...@21a79071: defining beans []; parent: org.springframework.beans.factory.support.defaultlistablebeanfact...@24fe2558 INFO : org.springframework.web.context.support.XmlWebApplicationContext - Closing org.springframework.web.context.support.xmlwebapplicationcont...@627a4489: display name [Root WebApplicationContext]; startup date [Wed Mar 31 19:49:53 ICT 2010]; root of context hierarchy DEBUG: org.apache.camel.spring.SpringCamelContext - onApplicationEvent: org.springframework.context.event.contextclosedevent[source=org.springframework.web.context.support.xmlwebapplicationcont...@627a4489: display name [Root WebApplicationContext]; startup date [Wed Mar 31 19:49:53 ICT 2010]; root of context hierarchy] INFO : org.springframework.beans.factory.support.DefaultListableBeanFactory - Destroying singletons in org.springframework.beans.factory.support.defaultlistablebeanfact...@24fe2558: defining beans [identifyClassDAOImp,divisionreceiverinput,menuproductdivisionreceiverinput,employeesreceiverinput,employeehistorydetailreceiverinput,productstaticreceiverinput,creditcardscanreceiverinput,creditcardreceiverinput,promotionMasterreceiverinput,productopeningmasterreceiverinput,purchaseordermasterdivisionreceiverinput,historydocumentofficedivisionreceiverinput,giftvouchercarddivisionreceiverinput,deliveryordermasterreceiverinput,warehouseconfirmreceiverinput,productposmasterreceiverinput,productgroupreceiverinput,uommasterreceiverinput,creditcardtypereceiverinput,toppingmasterreceiverinput,countingstockproductreceiverinput,productmenugroupreceiverinput,packagetypereceiverinput,packageproductfinishreceiverinput,documentgroupreceiverinput,positionreceiverinput,bankreceiverinput,optionmasterreceiverinput,menugroupreceiverinput,menuauthenticatereceiverinput,promotionprodgroupmasterreceiverinput,copromotionmasterreceiverinput,settingaccountcodereceiverinput,divisionorderreceiverinput,userloginaccreceiverinput,menuusergroupaccreceiverinput,historydocumentofficereceiverinput,historydocumentaccountreceiverinput,productplaceorderreceiverinput,processingproductreceiverinput,template,consumerTemplate,camel:beanPostProcessor,camel,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,amqConnectionFactory,poolConnectionFactory,amqConfig,activemq,dataSource,sqlMapClient,ibatis,atomikosTransactionManager,atomikosUserTransaction,transactionManager,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,deliveryOrderMasterDAOImp,divisionDAOImp,giftVoucherCardDivisionDAOImp,historyDocumentAccountDAOImp,historyDocumentOfficeDAOImp,historyDocumentOfficeDivisionDAOImp,invoiceMasterPOSDAOImp,menuProductDivisionDAOImp,movingProductStockDAOImp,packageProductFinishDAOImp,productLotDAOImp,productOpeningMasterDAOImp,productPOSMasterDAOImp,productReceiveInvoiceMasterDAOImp,productReturnMasterDAOImp,productStaticDAOImp,promotionMasterDAOImp,promotionProdGroupMasterDAOImp,purchaseOrderMasterDivisionDAOImp,purchaseOrderMasterPosDAOImp,purchaseRequestOrderMasterDAOImp,registerMachineDAOImp,shiftEndMasterDAOImp,trainInvMasterDAOImp,transactionPurchaseMasterDODAOImp,transactionPurchaseMasterPODAOImp,userLoginAccDAOImp,voucherMasterDAOImp,warehouseConfirmDAOImp,warehouseDAOImp,deliveryOrderMasterEndPoint,divisionEndPoint,giftVoucherCardDivisionEndPoint,historyDocumentAccountEndPoint,historyDocumentOfficeDivisionEndPoint,historyDocumentOfficeEndPoint,invoiceMasterPOSEndPoint,menuProductDivisionEndPoint,movingProductStockEndPoint,packageProductFinishEndPoint,productLotEndPoint,productOpeningMasterEndPoint,productPOSMasterEndPoint,productReceiveInvoiceMasterEndPoint,productReturnMasterEndPoint,productStaticEndPoint,promotionMasterEndPoint,promotionProdGroupMasterEndPoint,purchaseOrderMasterDivisionEndPoint,purchaseOrderMasterPosEndPoint,purchaseRequestOrderMasterEndPoint,registerMachineEndPoint,shiftEndMasterEndPoint,trainInvMasterEndPoint,transactionPurchaseMasterDOEndPoint,transactionPurchaseMasterPOEndPoint,userLoginAccEndPoint,voucherMasterEndPoint,warehouseConfirmEndPoint,warehouseEndPoint,checkStatementProcessor,destinationGenerator,listSpritter,controllerService,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,_messageBrokerHandlerAdapter,_messageBrokerDefaultHandlerMapping,_jsonConfigMapEditorConfigurer,_messageBrokerMessagingProcessor,_flexRemotingAnnotationPostProcessor,_messageBrokerRemotingProcessor,org.springframework.flex.core.ExceptionTranslationAdvice#0,org.springframework.flex.core.EndpointServiceMessagePointcutAdvisor#0,org.springframework.flex.core.MessageInterceptionAdvice#0,org.springframework.flex.core.EndpointServiceMessagePointcutAdvisor#1,_messageBrokerEndpointProcessor,_messageBroker,org.springframework.flex.remoting.RemotingDestinationExporter#0]; root of factory hierarchy DEBUG: org.springframework.beans.factory.support.DisposableBeanAdapter - Invoking destroy() on bean with name 'org.springframework.flex.remoting.RemotingDestinationExporter#0' INFO : org.springframework.flex.remoting.RemotingDestinationExporter - Removing remoting destination 'controllerService' DEBUG: org.springframework.beans.factory.support.DisposableBeanAdapter - Invoking destroy() on bean with name '_messageBroker' 31 มี.ค. 2553 19:52:43 org.apache.catalina.core.ApplicationContext log INFO: Closing Spring root WebApplicationContext DEBUG: org.springframework.beans.factory.support.DisposableBeanAdapter - Invoking destroy() on bean with name 'poolConnectionFactory' DEBUG: org.apache.activemq.pool.PooledConnectionFactory - Stop the PooledConnectionFactory, number of connections in cache: 1 DEBUG: org.apache.activemq.transport.tcp.TcpTransport - Stopping transport tcp:///127.0.0.1:61616 DEBUG: org.apache.camel.spring.spi.TransactionErrorHandler - Transaction commit (0x7512951d) for ExchangeId: d3d2b5de-56a9-45fb-8b30-078006d090b6 DEBUG: org.springframework.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource DEBUG: org.springframework.beans.factory.support.DisposableBeanAdapter - Invoking destroy() on bean with name 'camel' INFO : org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.2.0 (CamelContext:camel) is stopping INFO : org.apache.camel.impl.DefaultShutdownStrategy - Starting to graceful shutdown routes (timeout 300 seconds) DEBUG: org.apache.camel.impl.DefaultShutdownStrategy - There are 1 routes to shutdown DEBUG: org.apache.camel.impl.DefaultShutdownStrategy - Suspend complete for: Consumer[ibatis://getUnProcessInvoiceMasterPOS?consumer.onConsume=updateProcessedInvoiceMasterPOS&statementType=QueryForList] INFO : org.apache.camel.impl.DefaultShutdownStrategy - Route: invoicemasterpossender suspended and shutdown deferred. DEBUG: org.apache.camel.component.ibatis.IBatisPollingConsumer - Stopping consumer: Consumer[ibatis://getUnProcessInvoiceMasterPOS?consumer.onConsume=updateProcessedInvoiceMasterPOS&statementType=QueryForList] DEBUG: org.apache.camel.impl.DefaultShutdownStrategy - Shutdown complete for: Consumer[ibatis://getUnProcessInvoiceMasterPOS?consumer.onConsume=updateProcessedInvoiceMasterPOS&statementType=QueryForList] INFO : org.apache.camel.impl.DefaultShutdownStrategy - Route: invoicemasterpossender shutdown complete. INFO : org.apache.camel.impl.DefaultShutdownStrategy - Graceful shutdown of routes completed in 0 seconds DEBUG: org.apache.camel.management.DefaultManagementAgent - Unregistered MBean with objectname: org.apache.camel:context=Pond-NB/camel,type=consumers,name=IBatisPollingConsumer(0x111f2041) DEBUG: org.apache.camel.component.jms.JmsProducer - Stopping producer: Producer[activemq://queue:allinvoicemasterpos] INFO : org.apache.camel.impl.DefaultInflightRepository - Shutting down with no inflight exchanges. DEBUG: org.apache.camel.impl.SharedProducerServicePool - Stopping service pool: org.apache.camel.impl.sharedproducerservicep...@2fd23e75 DEBUG: org.apache.camel.management.DefaultManagementAgent - Unregistered MBean with objectname: org.apache.camel:context=Pond-NB/camel,type=routes,name="invoicemasterpossender" DEBUG: org.apache.camel.management.DefaultManagementAgent - Unregistered MBean with objectname: org.apache.camel:context=Pond-NB/camel,type=services,name=DefaultInflightRepository(0x3d39ef3a) DEBUG: org.apache.camel.management.DefaultManagementAgent - Unregistered MBean with objectname: org.apache.camel:context=Pond-NB/camel,type=services,name=DefaultTypeConverter(0x695e0163) DEBUG: org.apache.camel.management.DefaultManagementAgent - Unregistered MBean with objectname: org.apache.camel:context=Pond-NB/camel,type=context,name="camel" DEBUG: org.apache.camel.management.DefaultManagementAgent - Unregistered MBean with objectname: org.apache.camel:context=Pond-NB/camel,type=tracer,name=Tracer(0x66cf9bf0) DEBUG: org.apache.camel.management.DefaultManagementAgent - Unregistered MBean with objectname: org.apache.camel:context=Pond-NB/camel,type=endpoints,name="spring-event://default" DEBUG: org.apache.camel.management.DefaultManagementAgent - Unregistered MBean with objectname: org.apache.camel:context=Pond-NB/camel,type=errorhandlers,name="DefaultErrorHandlerBuilder(ref:CamelDefaultErrorHandlerBuilder)" DEBUG: org.apache.camel.management.DefaultManagementAgent - Unregistered MBean with objectname: org.apache.camel:context=Pond-NB/camel,type=components,name="activemq" DEBUG: org.apache.camel.management.DefaultManagementAgent - Unregistered MBean with objectname: org.apache.camel:context=Pond-NB/camel,type=errorhandlers,name="TransactionErrorHandlerBuilder(ref:CamelDefaultErrorHandlerBuilder)" DEBUG: org.apache.camel.management.DefaultManagementAgent - Unregistered MBean with objectname: org.apache.camel:context=Pond-NB/camel,type=producers,name=JmsProducer(0x39d0c448) DEBUG: org.apache.camel.management.DefaultManagementAgent - Unregistered MBean with objectname: org.apache.camel:context=Pond-NB/camel,type=components,name="ibatis" DEBUG: org.apache.camel.management.DefaultManagementAgent - Unregistered MBean with objectname: org.apache.camel:context=Pond-NB/camel,type=endpoints,name="ibatis://getUnProcessInvoiceMasterPOS\?consumer.onConsume=updateProcessedInvoiceMasterPOS&statementType=QueryForList" DEBUG: org.apache.camel.management.DefaultManagementAgent - Unregistered MBean with objectname: org.apache.camel:context=Pond-NB/camel,type=services,name=DefaultShutdownStrategy(0x2688e83d) DEBUG: org.apache.camel.management.DefaultManagementAgent - Unregistered MBean with objectname: org.apache.camel:context=Pond-NB/camel,type=endpoints,name="activemq://queue:allinvoicemasterpos" INFO : org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.2.0 (CamelContext:camel) stopped I am looking around internet and found spring cand use depends-on to order sequence of shutdown process. I try set "depends-on" to camel activemq - ibatis componant no thing change And I cant find the way to set "depends-on" to camelcontext :,( How can I set the order of shutdown process? Thank you in advance. -- View this message in context: http://old.nabble.com/Problem-from-Camelcontext-close-after-poolingconnection%2Ctransactionmanager-and-datasource-tp28095558p28095558.html Sent from the Camel - Users mailing list archive at Nabble.com.