Hello, This application connects to JMS and routes the message to a websocket endpoint. Every 15th message or so, the following exception is raised:
Exception: [Camel (TwitterApp1) thread #1 - JmsConsumer[Event::WebM::Communication::Twitter::1.1::TweetReceived]] EndpointMessageListener WARN Execution of JMS message listener failed. Caused by: [org.apache.camel.RuntimeCamelException - java.lang.ArrayIndexOutOfBoundsException] org.apache.camel.RuntimeCamelException: java.lang.ArrayIndexOutOfBoundsException at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1344) at org.apache.camel.component.jms.EndpointMessageListener$EndpointMessageListenerAsyncCallback.done(EndpointMessageListener.java:186) at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:107) at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:562) at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:500) at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:468) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:325) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1096) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1088) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:985) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) Caused by: java.lang.ArrayIndexOutOfBoundsException Route: <beans profile="TwitterApp"> <camelContext id="TwitterApp1" xmlns="http://camel.apache.org/schema/spring" autoStartup="true"> <propertyPlaceholder id="twitterProperties" location="twitterApp.properties" /> <endpoint id="webappWebsocketNERVEndpointOut" uri="websocket://{{wsHost}}:{{wsPort}}/nerv-tweet-fromJMS?staticResources=classpath:.&sendToAll=true" /> <endpoint id="twitterProducer" uri="twitter://timeline/user?consumerKey={{consumerKey}}&consumerSecret={{consumerSecret}}&accessToken={{accessToken}}&accessTokenSecret={{accessTokenSecret}}" /> <onException> <exception>org.apache.camel.RuntimeCamelException</exception> <exception>java.lang.ArrayIndexOutOfBoundsException</exception> <handled> <constant>true</constant> </handled> <to id="streamOut" uri="stream:out" /> <transform> <simple>In exception loop!</simple> </transform> <to id="streamOutSimple" uri="stream:out" /> </onException> <route id="TweetReceivedFromJMS"> <from id="NERVJMS1" uri="nervJMS1:topic:Event::WebM::Communication::Twitter::1.1::TweetReceived" /> <transform> <simple>JMS Channel processing tweet event from @${header.Status$User$ScreenName} at ${header.$Event$Start}</simple> </transform> <to uri="webappWebsocketNERVEndpointOut" /> </route> </camelContext> NERVJMS1 bean: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> <beans profile="suite-wide"> <bean id="nervJMS1" class="org.apache.camel.component.jms.JmsComponent"> <property name="connectionFactory" ref="cachedConnectionFactory" /> <property name="destinationResolver" ref="defaultDestinationResolver" /> </bean> <bean id="cachedConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> <property name="targetConnectionFactory" ref="jndiObjectFactoryBean" /> <property name="sessionCacheSize" value="2000" /> <property name="cacheProducers" value="false" /> </bean> <bean id="jndiObjectFactoryBean" class="org.springframework.jndi.JndiObjectFactoryBean" depends-on="defaultDestinationResolver"> <property name="jndiTemplate" ref="jndiTemplateNirvana" /> <property name="jndiName" ref="eventFactory" /> </bean> <bean id="defaultDestinationResolver" class="com.softwareag.eda.jndi.NervResolver" depends-on="jndiTemplateNirvana" init-method="init"> <property name="jndiTemplate" ref="jndiTemplateNirvana" /> <property name="classLoader"> <null /> </property> </bean> <bean id="jndiTemplateNirvana" class="org.springframework.jndi.JndiTemplate"> <property name="environment"> <map> <entry key="java.naming.factory.initial" value="com.pcbsys.nirvana.nSpace.NirvanaContextFactory" /> <entry key="java.naming.provider.url" value="nsp://localhost:9000" /> <entry key="connectionFactory" value-ref="eventFactory" /> </map> </property> </bean> <bean id="eventFactory" class="java.lang.String"> <constructor-arg value="EventFactory" /> </bean> </beans> </beans> Two questions: 1. How to prevent the exception from happening? 2. Why does the exception handler not capture the exception? -- View this message in context: http://camel.465427.n5.nabble.com/java-lang-ArrayIndexOutOfBoundsException-when-receiving-from-JMS-tp5744262.html Sent from the Camel - Users mailing list archive at Nabble.com.