camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hadrian Zbarcea (JIRA)" <j...@apache.org>
Subject [jira] Created: (CAMEL-2292) RejectedExecutionException after restarting camel context
Date Tue, 15 Dec 2009 15:19:52 GMT
RejectedExecutionException after restarting camel context
---------------------------------------------------------

                 Key: CAMEL-2292
                 URL: https://issues.apache.org/activemq/browse/CAMEL-2292
             Project: Apache Camel
          Issue Type: Bug
    Affects Versions: 2.1.0
            Reporter: Hadrian Zbarcea


User reported over the #camel channel the following exception trying to send a message after
the context was stopped and restarted

 "Failed to create Producer for endpoint:". Thats the exception I'm getting
Reason: java.util.concurrent.RejectedExecutionException

{code}
Exception in thread "core" org.apache.camel.FailedToCreateProducerException: Failed to create
Producer for endpoint: Endpoint[activemq://queue:request.lavaOrderProducer.powerTraderServer].
Reason: java.util.concurrent.RejectedExecutionException
	at org.apache.camel.component.jms.JmsProducer.testAndSetRequestor(JmsProducer.java:116)
	at org.apache.camel.component.jms.JmsProducer.processInOut(JmsProducer.java:175)
	at org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:147)
	at org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:179)
	at org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:161)
	at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:146)
	at org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:160)
	at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:98)
	at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:97)
	at com.wjb.producer.lavaData.dispatcher.ServerRequestDispatcher.requestSymbolSectorArray(ServerRequestDispatcher.java:122)
	at com.wjb.producer.core.LavaDataManager.initialize(LavaDataManager.java:64)
	at com.wjb.producer.core.ProducerCore.run(ProducerCore.java:98)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.util.concurrent.RejectedExecutionException
	at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1760)
	at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
	at java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:216)
	at java.util.concurrent.ScheduledThreadPoolExecutor.schedule(ScheduledThreadPoolExecutor.java:366)
	at org.apache.camel.util.DefaultTimeoutMap.schedulePoll(DefaultTimeoutMap.java:156)
	at org.apache.camel.util.DefaultTimeoutMap.<init>(DefaultTimeoutMap.java:52)
	at org.apache.camel.component.jms.requestor.Requestor.<init>(Requestor.java:68)
	at org.apache.camel.component.jms.JmsProducer.testAndSetRequestor(JmsProducer.java:107)
{code}

The following unit tests seems to reproduce the problem:
{code}
ublic final class StartStopTest 
{
	private final GenericApplicationContext applicationContext = new GenericApplicationContext();
	private final int testCount = 3;
	
	@Test
	public void test() throws Exception 
	{		
		//Initialize
		final File propertiesFile = new File(Constants.RESOURCE_DIRECTORY_NAME, Constants.PROPERTIES_FILE_NAME);
		PropertyConfigurator.configure(propertiesFile.getPath());
		
		final File applicationContextFile = new File(Constants.RESOURCE_DIRECTORY_NAME, Constants.CONTEXT_FILE_NAME);

		final Resource applicationContextResource = new FileSystemResource(applicationContextFile);
				
		final AbstractBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(this.applicationContext);
		
		beanDefinitionReader.loadBeanDefinitions(applicationContextResource);
		this.applicationContext.refresh();	
		
		//Begin Testing
		for (int i = 0; i < this.testCount; i++)
		{			
			this.startSendStop();
		    Thread.sleep(3000);
		}		
	}
	
	private void startSendStop() throws Exception
	{
		final SpringCamelContext springCamelContext = (SpringCamelContext)this.applicationContext.getBean(Constants.CAMEL_CONTEXT_NAME);
		final ProducerTemplate producerTemplate;
		final Endpoint serverRequestQueue;
		
		springCamelContext.start();
		
		producerTemplate = springCamelContext.createProducerTemplate();
		serverRequestQueue = springCamelContext.getEndpoint("serverRequestQueue");
		
		final Exchange exchange = producerTemplate.send(serverRequestQueue, new Processor()
		{
			public void process(final Exchange exchange) throws Exception 
			{				
				exchange.setPattern(ExchangePattern.InOut);	
				exchange.getIn().setHeader(ServerJmsServices.REQUEST, ServerJmsServices.GET_SYMBOL_INFO);
				exchange.getIn().setBody("");
			}			
		});
		final String responseString = (String)exchange.getOut().getBody();
		
		Assert.assertTrue(responseString.length() > 0);
		
		springCamelContext.stop();
	}
}


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:camel="http://camel.apache.org/schema/spring"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                           http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
        
    <!-- ActiveMQ component for Camel to use -->   
    <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent" >

        <property name="connectionFactory"> 
            <bean class="org.apache.activemq.ActiveMQConnectionFactory"> 
                <property name="brokerURL" value="tcp://192.168.5.10:61616?daemon=true"
/>
            </bean> 
        </property> 
    </bean> 
           
    <!-- Camel Context -->
    <camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring" autoStartup="false">
  	
    	<camel:endpoint id="serverRequestQueue"	uri="activemq:queue:request.lavaOrderProducer.powerTraderServer"
/>   	
    </camelContext>
</beans>
{code}


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message