Marios Trivizas created CAMEL-7151:
--------------------------------------

             Summary: camel-sjms NullPointerException when adding new route 
with Sjms as producer.
                 Key: CAMEL-7151
                 URL: https://issues.apache.org/jira/browse/CAMEL-7151
             Project: Camel
          Issue Type: Bug
    Affects Versions: 2.13.0
            Reporter: Marios Trivizas


The following exception is thrown when adding new route programmatically with 
Sjms as producer:

java.lang.NullPointerException
        at 
java.util.concurrent.ArrayBlockingQueue.checkNotNull(ArrayBlockingQueue.java:145)
        at 
java.util.concurrent.ArrayBlockingQueue.offer(ArrayBlockingQueue.java:296)
        at java.util.AbstractQueue.add(AbstractQueue.java:95)
        at 
java.util.concurrent.ArrayBlockingQueue.add(ArrayBlockingQueue.java:283)
        at 
org.apache.camel.component.sjms.jms.ObjectPool.fillPool(ObjectPool.java:55)
        at 
org.apache.camel.component.sjms.SjmsProducer.doStart(SjmsProducer.java:139)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:407)
        at 
org.apache.camel.impl.ProducerCache.acquireProducer(ProducerCache.java:123)
        at 
org.apache.camel.processor.SendProcessor.doStart(SendProcessor.java:191)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:59)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:89)
        at 
org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:79)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:59)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:89)
        at 
org.apache.camel.processor.RedeliveryErrorHandler.doStart(RedeliveryErrorHandler.java:1154)
        at 
org.apache.camel.support.ChildServiceSupport.start(ChildServiceSupport.java:41)
        at 
org.apache.camel.support.ChildServiceSupport.start(ChildServiceSupport.java:28)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:59)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:89)
        at 
org.apache.camel.processor.interceptor.DefaultChannel.doStart(DefaultChannel.java:155)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:59)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:61)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:89)
        at 
org.apache.camel.processor.MulticastProcessor.doStart(MulticastProcessor.java:984)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:59)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:89)
        at 
org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:79)
        at 
org.apache.camel.processor.FilterProcessor.doStart(FilterProcessor.java:80)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:59)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:61)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:89)
        at 
org.apache.camel.processor.ChoiceProcessor.doStart(ChoiceProcessor.java:171)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:59)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:89)
        at 
org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:79)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:59)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:89)
        at 
org.apache.camel.processor.RedeliveryErrorHandler.doStart(RedeliveryErrorHandler.java:1154)
        at 
org.apache.camel.support.ChildServiceSupport.start(ChildServiceSupport.java:41)
        at 
org.apache.camel.support.ChildServiceSupport.start(ChildServiceSupport.java:28)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:59)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:89)
        at 
org.apache.camel.processor.interceptor.DefaultChannel.doStart(DefaultChannel.java:155)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:59)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:61)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:89)
        at 
org.apache.camel.processor.MulticastProcessor.doStart(MulticastProcessor.java:984)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:59)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:89)
        at 
org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:79)
        at 
org.apache.camel.processor.FilterProcessor.doStart(FilterProcessor.java:80)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:59)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:89)
        at 
org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:79)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:59)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:89)
        at 
org.apache.camel.processor.RedeliveryErrorHandler.doStart(RedeliveryErrorHandler.java:1154)
        at 
org.apache.camel.support.ChildServiceSupport.start(ChildServiceSupport.java:41)
        at 
org.apache.camel.support.ChildServiceSupport.start(ChildServiceSupport.java:28)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:59)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:89)
        at 
org.apache.camel.processor.interceptor.DefaultChannel.doStart(DefaultChannel.java:155)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:59)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:103)
        at 
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:89)
        at 
org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:79)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74)
        at 
org.apache.camel.impl.RouteService.startChildService(RouteService.java:329)
        at org.apache.camel.impl.RouteService.warmUp(RouteService.java:158)
        at 
org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelContext.java:2109)
        at 
org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:2039)
        at 
org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:2061)
        at 
org.apache.camel.impl.DefaultCamelContext.startRouteService(DefaultCamelContext.java:1938)
        at 
org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:772)
        at 
org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:1914)
        at 
org.apache.camel.impl.DefaultCamelContext.addRouteDefinitions(DefaultCamelContext.java:707)
        at 
org.apache.camel.builder.RouteBuilder.populateRoutes(RouteBuilder.java:337)
        at 
org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:264)
        at 
org.apache.camel.impl.DefaultCamelContext.addRoutes(DefaultCamelContext.java:669)
        at 
de.groupon.jms.DynamicRoutesManager.addRoute(DynamicRoutesManager.java:178)

Here is my code:
{code}
public static RouteBuilder buildRoute(final DynamicRoute route, final 
CamelContext camelContext, final boolean autoStartup) throws Exception {
                InitialContext ic = 
getInitialContext(route.getSourceEndpoint().getHost(), 
route.getSourceEndpoint().getJndiPort());
                ConnectionFactory srcConnectionFactory = 
(ConnectionFactory)ic.lookup("/connectionFactory/local/" + 
route.getSourceEndpoint().getJndiConnectionFactoryName());
                
((HornetQJMSConnectionFactory)srcConnectionFactory).setReconnectAttempts(-1);
                
((HornetQJMSConnectionFactory)srcConnectionFactory).setRetryInterval(1000);
                
((HornetQJMSConnectionFactory)srcConnectionFactory).setConnectionTTL(120000);
                
((HornetQJMSConnectionFactory)srcConnectionFactory).setClientFailureCheckPeriod(2000);
                
((HornetQJMSConnectionFactory)srcConnectionFactory).setCallTimeout(60000);
                
((HornetQJMSConnectionFactory)srcConnectionFactory).setConsumerWindowSize(4194304);
                
((HornetQJMSConnectionFactory)srcConnectionFactory).setInitialConnectAttempts(-1);
                
((HornetQJMSConnectionFactory)srcConnectionFactory).setUseGlobalPools(false);
                
((HornetQJMSConnectionFactory)srcConnectionFactory).setScheduledThreadPoolMaxSize(5);
                
((HornetQJMSConnectionFactory)srcConnectionFactory).setThreadPoolMaxSize(5);
                camelContext.addComponent(route.getSourceEndpoint().getName(), 
JmsComponent.jmsComponentAutoAcknowledge(srcConnectionFactory));
                ic.close();

                RouteBuilder newRouteBuilder;
                if (route.getDestinationEndpoint().isNull()) {
                        newRouteBuilder = new RouteBuilder() {
                                @Override
                                public void configure() {
                                        
errorHandler(deadLetterChannel("log:de.groupon.jms.route.deadletter." + 
route.getName() + 
"?level=ERROR&showBody=true&showHeaders=true&showExchangePattern=false&showBodyType=false").maximumRedeliveries(3).redeliveryDelay(500)
                                                        
.retryAttemptedLogLevel(LoggingLevel.WARN).retriesExhaustedLogLevel(LoggingLevel.ERROR)
                                                        
.log("de.groupon.jms.route.error." + route.getName()));
                                        
from(route.getSourceEndpoint().getCamelUri()).routeId(route.getName()).autoStartup(autoStartup)
                                                        
.filter().method(route.getFilterChain(), "filterMessage")
                                                        
.process(route.getTransformer())
                                                        
.choice().when(body().isNotNull())
                                                                
.to("log:de.groupon.jms.route." + route.getName() + 
"?level=INFO&showBody=true&showHeaders=true&showExchangePattern=false&showBodyType=false").stop()
                                                        .otherwise()
                                                        .stop();
                                }
                        };
                } else {
                        JmsEndpoint dstEndpoint = (JmsEndpoint) 
route.getDestinationEndpoint();
                        ic = getInitialContext(dstEndpoint.getHost(), 
dstEndpoint.getJndiPort());
                        ConnectionFactory dstConnectionFactory = 
(ConnectionFactory)ic.lookup("/connectionFactory/local/" + 
dstEndpoint.getJndiConnectionFactoryName());
                        
((HornetQJMSConnectionFactory)dstConnectionFactory).setReconnectAttempts(-1);
                        
((HornetQJMSConnectionFactory)dstConnectionFactory).setRetryInterval(1000);
                        
((HornetQJMSConnectionFactory)dstConnectionFactory).setConnectionTTL(120000);
                        
((HornetQJMSConnectionFactory)dstConnectionFactory).setClientFailureCheckPeriod(2000);
                        
((HornetQJMSConnectionFactory)dstConnectionFactory).setCallTimeout(60000);
                        
((HornetQJMSConnectionFactory)dstConnectionFactory).setConsumerWindowSize(4194304);
                        
((HornetQJMSConnectionFactory)dstConnectionFactory).setInitialConnectAttempts(-1);
                        
((HornetQJMSConnectionFactory)dstConnectionFactory).setUseGlobalPools(false);
                        
((HornetQJMSConnectionFactory)dstConnectionFactory).setScheduledThreadPoolMaxSize(5);
                        
((HornetQJMSConnectionFactory)dstConnectionFactory).setThreadPoolMaxSize(5);
                        SjmsComponent sjms = new SjmsComponent();
                        sjms.setConnectionFactory(dstConnectionFactory);
                        camelContext.addComponent(dstEndpoint.getName(), sjms);
                        ic.close();

                        newRouteBuilder = new RouteBuilder() {
                                @Override
                                public void configure() {
                                        
errorHandler(deadLetterChannel("log:de.groupon.jms.route.deadletter." + 
route.getName() + 
"?level=ERROR&showBody=true&showHeaders=true&showExchangePattern=false&showBodyType=false").maximumRedeliveries(3).redeliveryDelay(500)
                                                        
.retryAttemptedLogLevel(LoggingLevel.WARN).retriesExhaustedLogLevel(LoggingLevel.ERROR)
                                                        
.log("de.groupon.jms.route.error." + route.getName()));
                                        
from(route.getSourceEndpoint().getCamelUri()).routeId(route.getName()).autoStartup(autoStartup)
                                                
.filter().method(route.getFilterChain(), "filterMessage")
                                                .process(route.getTransformer())
                                                
.choice().when(body().isNotNull())
                                                        
.to(ExchangePattern.InOnly, route.getDestinationEndpoint().getCamelUri())
                                                        
.to("log:de.groupon.jms.route." + route.getName() + 
"?level=INFO&showBody=true&showHeaders=true&showExchangePattern=false&showBodyType=false")
                                                        .stop()
                                                .otherwise()
                                                        .stop();
                                }
                        };
                }
                return newRouteBuilder;
        }
{code}



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to