java - Camel : Use of netty:tcp and JDBC components -


i have following camel route listen message tcp socket , send body database.

from("netty:tcp://localhost:5150?sync=false&keepalive=true")     .transform().simple("insert mytable (data) values (\"${in.body}\");")      .to("jdbc:mydb"); 

and following send message first:

from("direct:input").to("netty:tcp://localhost:5150?sync=false&keepalive=true");

i tested junit this:

@runwith(springjunit4classrunner.class) @contextconfiguration(locations = "classpath:applicationcontext.xml") public class outputroutestest {    @autowired   protected camelcontext camelcontext;    @endpointinject(uri = "direct:input")   private producertemplate template;    @test   @dirtiescontext   public void testtcpsend() throws exception {     string body = "foo?";      notifybuilder notify = new notifybuilder(camelcontext).whendone(1).create();     try {       template.sendbody(body);     } {       template.stop();     }     boolean matches = notify.matches(5, timeunit.seconds);     asserttrue(matches);    } } 

when start test have following stacktrace:

12:05:36.502 [camel (camel-1) thread #22 - nettyorderedworker] error o.a.c.processor.defaulterrorhandler - failed delivery (messageid: id-m249-52364-1373537133834-0-3 on exchangeid: id-m249-52364-1373537133834-0-4). exhausted after delivery attempt: 3 caught: java.sql.sqlexception: data source closed java.sql.sqlexception: data source closed     @ org.apache.commons.dbcp.basicdatasource.createdatasource(basicdatasource.java:1362) ~[commons-dbcp-1.4.jar:1.4]     @ org.apache.commons.dbcp.basicdatasource.getconnection(basicdatasource.java:1044) ~[commons-dbcp-1.4.jar:1.4]     @ org.apache.camel.component.jdbc.jdbcproducer.processingsqlbysettingautocommit(jdbcproducer.java:76) ~[camel-jdbc-2.11.0.jar:2.11.0]     @ org.apache.camel.component.jdbc.jdbcproducer.process(jdbcproducer.java:63) ~[camel-jdbc-2.11.0.jar:2.11.0]     @ org.apache.camel.util.asyncprocessorconverterhelper$processortoasyncprocessorbridge.process(asyncprocessorconverterhelper.java:61) ~[camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.util.asyncprocessorhelper.process(asyncprocessorhelper.java:73) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.impl.interceptsendtoendpoint$1.process(interceptsendtoendpoint.java:164) ~[camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.util.asyncprocessorhelper.process(asyncprocessorhelper.java:73) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.sendprocessor$2.doinasyncproducer(sendprocessor.java:122) ~[camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.impl.producercache.doinasyncproducer(producercache.java:298) ~[camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.sendprocessor.process(sendprocessor.java:117) ~[camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.util.asyncprocessorhelper.process(asyncprocessorhelper.java:73) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.delegateasyncprocessor.processnext(delegateasyncprocessor.java:99) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.delegateasyncprocessor.process(delegateasyncprocessor.java:90) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.management.instrumentationprocessor.process(instrumentationprocessor.java:72) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.util.asyncprocessorhelper.process(asyncprocessorhelper.java:73) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.delegateasyncprocessor.processnext(delegateasyncprocessor.java:99) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.delegateasyncprocessor.process(delegateasyncprocessor.java:90) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.interceptor.backlogtracerinterceptor.process(backlogtracerinterceptor.java:84) ~[camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.util.asyncprocessorhelper.process(asyncprocessorhelper.java:73) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.delegateasyncprocessor.processnext(delegateasyncprocessor.java:99) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.delegateasyncprocessor.process(delegateasyncprocessor.java:90) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.interceptor.traceinterceptor.process(traceinterceptor.java:91) ~[camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.util.asyncprocessorhelper.process(asyncprocessorhelper.java:73) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.redeliveryerrorhandler.processerrorhandler(redeliveryerrorhandler.java:390) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.redeliveryerrorhandler.process(redeliveryerrorhandler.java:273) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.routecontextprocessor.processnext(routecontextprocessor.java:46) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.delegateasyncprocessor.process(delegateasyncprocessor.java:90) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.interceptor.defaultchannel.process(defaultchannel.java:335) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.util.asyncprocessorhelper.process(asyncprocessorhelper.java:73) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.pipeline.process(pipeline.java:117) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.pipeline.process(pipeline.java:80) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.routecontextprocessor.processnext(routecontextprocessor.java:46) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.delegateasyncprocessor.process(delegateasyncprocessor.java:90) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.unitofworkprocessor.processasync(unitofworkprocessor.java:150) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.unitofworkprocessor.process(unitofworkprocessor.java:117) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.routeinflightrepositoryprocessor.processnext(routeinflightrepositoryprocessor.java:48) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.delegateasyncprocessor.process(delegateasyncprocessor.java:90) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.util.asyncprocessorhelper.process(asyncprocessorhelper.java:73) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.delegateasyncprocessor.processnext(delegateasyncprocessor.java:99) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.processor.delegateasyncprocessor.process(delegateasyncprocessor.java:90) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.management.instrumentationprocessor.process(instrumentationprocessor.java:72) [camel-core-2.11.0.jar:2.11.0]     @ org.apache.camel.component.netty.handlers.serverchannelhandler.processasynchronously(serverchannelhandler.java:118) [camel-netty-2.11.0.jar:2.11.0]     @ org.apache.camel.component.netty.handlers.serverchannelhandler.messagereceived(serverchannelhandler.java:102) [camel-netty-2.11.0.jar:2.11.0]     @ org.jboss.netty.channel.simplechannelupstreamhandler.handleupstream(simplechannelupstreamhandler.java:70) [netty-3.6.5.final.jar:na]     @ org.jboss.netty.channel.defaultchannelpipeline.sendupstream(defaultchannelpipeline.java:564) [netty-3.6.5.final.jar:na]     @ org.jboss.netty.channel.defaultchannelpipeline$defaultchannelhandlercontext.sendupstream(defaultchannelpipeline.java:791) [netty-3.6.5.final.jar:na]     @ org.jboss.netty.handler.execution.channelupstreameventrunnable.dorun(channelupstreameventrunnable.java:43) [netty-3.6.5.final.jar:na]     @ org.jboss.netty.handler.execution.channeleventrunnable.run(channeleventrunnable.java:67) [netty-3.6.5.final.jar:na]     @ org.jboss.netty.handler.execution.orderedmemoryawarethreadpoolexecutor$childexecutor.run(orderedmemoryawarethreadpoolexecutor.java:314) [netty-3.6.5.final.jar:na]     @ java.util.concurrent.threadpoolexecutor$worker.runtask(threadpoolexecutor.java:885) [na:1.6.0_05]     @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:907) [na:1.6.0_05]     @ java.lang.thread.run(thread.java:619) [na:1.6.0_05] 12:05:36.503 [camel (camel-1) thread #22 - nettyorderedworker] debug org.apache.camel.processor.pipeline - message exchange has failed: breaking out of pipeline exchange: exchange[message: insert mytable (data) values ("foo?");] exception: java.sql.sqlexception: data source closed 12:05:37.473 [camel (camel-1) thread #23 - shutdowntask] debug o.a.c.impl.defaultshutdownstrategy - route: route2 preparing shutdown complete. 

the message received camel route can't sent database. seems connection problem database, tried replacing tcp endpoint "direct:output" , data have been inserted in base.

where wrong ? think may have misunderstood way use netty:tcp component. help.

i'm using camel 2.11 , spring 3.1.2

can try setting

  .to("jdbc:mydb?resetautocommit=false"); 

Comments