Looking at the code (I'm using Fuse 3.4) for Servicemix 3.3.1 , which I'm guessing is what fuse 3.4 is based on and the referenced line says:
String container = ((InternalEndpoint) event.getEndpoint()).getComponentNameSpace().getContainerName(); which seems indicate something is missing from the event, I'm not sure why either the endpoint, component namespace or container name would be missing. One thing that seems interesting though, is if this is a remote component registration, shouldn't the endpoint be a RemoteEndpoint rather than an InternalEndpoint? If this doesn't ring a bell for anyone, then maybe I'll hook up a debugger in the morning and see what is causing the NPE on that line (though I'm not sure if that'll help me solve the issue). Ryan On Tue, Aug 25, 2009 at 8:15 PM, Ryan Moquin <[email protected]> wrote: > I've been able to cluster servicemix instances by using a networkconnector > that lists each possible servicemix host that may participate in the cluster > (multicast isn't available). Not all machines will be up and running at all > times. Since I don't have multicast available, I decided to try having the > servicemix instances try to connect to a single activemq instance when they > come online. The only problem, is that when I try this, it seems like > broadcasted messages from the servicemix instances error out. It looks like > the errors only occur when components become registered or deregistered from > a specific servicemix container and notifications of the component > registration/deregistration is sent to other containers. This results in > the other containers not being aware that a component has been added/removed > to/from one of the other containers. Everything seems to work fine when I > cluster servicemix containers using their own activemq instances (though I > do periodically seem to see broadcast message errors, though nothing > critical seems affected). I do have different names for each of the > servicemix containers and I've removed the activemq.xml from each of them so > they don't start a broker. I also reordered the jms flows so that jmsFlow > is first (is that all I have to do? It definitely doesn't seem to work if > jmsFlow isn't first) like this: > > <sm:broker> > <sm:securedBroker authorizationMap="#authorizationMap"> > <sm:flows> > <sm:jmsFlow jmsURL="${activemq.url}" /> > <sm:sedaFlow /> > <sm:jcaFlow connectionManager="#connectionManager" > jmsURL="${activemq.url}" /> > </sm:flows> > </sm:securedBroker> > </sm:broker> > > Here are the error messages I get. I thought JMS flow was to be used for > clustered communications.. I'm not sure why jcaflow ends up used. Is there > anything other than reordering the flows and giving each servicemix > container a name that needs do? > > Thanks for any help! Here are the errors I get when components attempt to > be registered. > > 15:58:29,493 | ERROR | > pool-flow.jca.org.apache.servicemix.JCAFlow-thread-19 | > JCAFlow | mix.jbi.nmr.flow.jca.JCAFlow$3 327 | Error > processing incoming broadcast message > java.lang.NullPointerException > at > org.apache.servicemix.jbi.nmr.flow.jca.JCAFlow$3.onMessage(JCAFlow.java:317) > at > org.jencks.LocalTransactionEndpoint.onMessage(LocalTransactionEndpoint.java:68) > at > org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:123) > at > org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:64) > at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:766) > at > org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:169) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) > 15:58:29,493 | ERROR | ActiveMQ Session Task | JMSFlow | > nmr.flow.jms.AbstractJMSFlow$3 265 | Error processing incoming broadcast > message > java.lang.NullPointerException > at > org.apache.servicemix.jbi.nmr.flow.jms.AbstractJMSFlow$3.onMessage(AbstractJMSFlow.java:254) > at > org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1073) > at > org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:127) > at > org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:197) > at > org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122) > at > org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) > 15:58:29,493 | ERROR | > pool-flow.jca.org.apache.servicemix.JCAFlow-thread-20 | > JCAFlow | mix.jbi.nmr.flow.jca.JCAFlow$3 327 | Error > processing incoming broadcast message > java.lang.NullPointerException > at > org.apache.servicemix.jbi.nmr.flow.jca.JCAFlow$3.onMessage(JCAFlow.java:317) > at > org.jencks.LocalTransactionEndpoint.onMessage(LocalTransactionEndpoint.java:68) > at > org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:123) > at > org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:64) > at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:766) > at > org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:169) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) > 15:58:29,493 | ERROR | ActiveMQ Session Task | JMSFlow | > nmr.flow.jms.AbstractJMSFlow$3 265 | Error processing incoming broadcast > message > java.lang.NullPointerException > at > org.apache.servicemix.jbi.nmr.flow.jms.AbstractJMSFlow$3.onMessage(AbstractJMSFlow.java:254) > at > org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1073) > at > org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:127) > at > org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:197) > at > org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122) > at > org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) > 15:58:29,525 | ERROR | > pool-flow.jca.org.apache.servicemix.JCAFlow-thread-21 | > JCAFlow | mix.jbi.nmr.flow.jca.JCAFlow$3 327 | Error > processing incoming broadcast message > java.lang.NullPointerException > at > org.apache.servicemix.jbi.nmr.flow.jca.JCAFlow$3.onMessage(JCAFlow.java:317) > at > org.jencks.LocalTransactionEndpoint.onMessage(LocalTransactionEndpoint.java:68) > at > org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:123) > at > org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:64) > at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:766) > at > org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:169) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) > 15:58:29,540 | ERROR | ActiveMQ Session Task | JMSFlow | > nmr.flow.jms.AbstractJMSFlow$3 265 | Error processing incoming broadcast > message > java.lang.NullPointerException > at > org.apache.servicemix.jbi.nmr.flow.jms.AbstractJMSFlow$3.onMessage(AbstractJMSFlow.java:254) > at > org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1073) > at > org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:127) > at > org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:197) > at > org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122) > at > org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) > 15:58:29,540 | ERROR | > pool-flow.jca.org.apache.servicemix.JCAFlow-thread-22 | > JCAFlow | mix.jbi.nmr.flow.jca.JCAFlow$3 327 | Error > processing incoming broadcast message > java.lang.NullPointerException > at > org.apache.servicemix.jbi.nmr.flow.jca.JCAFlow$3.onMessage(JCAFlow.java:317) > at > org.jencks.LocalTransactionEndpoint.onMessage(LocalTransactionEndpoint.java:68) > at > org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:123) > at > org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:64) > at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:766) > at > org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:169) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) > 15:58:29,540 | ERROR | ActiveMQ Session Task | JMSFlow | > nmr.flow.jms.AbstractJMSFlow$3 265 | Error processing incoming broadcast > message > java.lang.NullPointerException > at > org.apache.servicemix.jbi.nmr.flow.jms.AbstractJMSFlow$3.onMessage(AbstractJMSFlow.java:254) > at > org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1073) > at > org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:127) > at > org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:197) > at > org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122) > at > org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) > 15:58:29,556 | ERROR | ActiveMQ Session Task | JMSFlow | > nmr.flow.jms.AbstractJMSFlow$3 265 | Error processing incoming broadcast > message > java.lang.NullPointerException > at > org.apache.servicemix.jbi.nmr.flow.jms.AbstractJMSFlow$3.onMessage(AbstractJMSFlow.java:254) > at > org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1073) > at > org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:127) > at > org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:197) > at > org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122) > at > org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) > 15:58:29,556 | ERROR | > pool-flow.jca.org.apache.servicemix.JCAFlow-thread-23 | > JCAFlow | mix.jbi.nmr.flow.jca.JCAFlow$3 327 | Error > processing incoming broadcast message > java.lang.NullPointerException > at > org.apache.servicemix.jbi.nmr.flow.jca.JCAFlow$3.onMessage(JCAFlow.java:317) > at > org.jencks.LocalTransactionEndpoint.onMessage(LocalTransactionEndpoint.java:68) > at > org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:123) > at > org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:64) > at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:766) > at > org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:169) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) >
