So we have a non-HA JNDI cluster along with a HornetQ setup that we want to migrate to HA-JNDI. I have followed the documented steps in my test environment - started a two node JBoss cluster that runs the HA-JNDI service. My understanding is that the JBoss server exposes two ports - one for a local JNDI (1099, 1199) and one for the HA-JNDI (1100, 1200). If that's not right can someone please correct me.
Now to setup the HornetQ server, I makes the changes in the run.sh of the HornetQ distribution to point it to the new remote JNDI (the one of 1099 port), and allow my HornetQ clients (my application) to point to the HA-JNDI cluster (the ones running on 1100, 1200). However, my HornetQ server fails to attach its objects to the remote JNDI (1098, 1099) with the following exception:
07:06:10,946 ERROR [org.hornetq.core.server] HQ224005: Unable to deply node [queue: null]: java.lang.RuntimeException: javax.naming.CommunicationException [Root exception is java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: org.hornetq.jms.referenceable.SerializableObjectRefAddr]
at org.hornetq.core.registry.JndiBindingRegistry.bind(JndiBindingRegistry.java:70) [hornetq-server.jar:]
at org.hornetq.jms.server.impl.JMSServerManagerImpl.bindToJndi(JMSServerManagerImpl.java:1655) [hornetq-jms-server.jar:]
at org.hornetq.jms.server.impl.JMSServerManagerImpl.access$400(JMSServerManagerImpl.java:105) [hornetq-jms-server.jar:]
at org.hornetq.jms.server.impl.JMSServerManagerImpl$1.runException(JMSServerManagerImpl.java:606) [hornetq-jms-server.jar:]
at org.hornetq.jms.server.impl.JMSServerManagerImpl.runAfterActive(JMSServerManagerImpl.java:1832) [hornetq-jms-server.jar:]
at org.hornetq.jms.server.impl.JMSServerManagerImpl.createQueue(JMSServerManagerImpl.java:579) [hornetq-jms-server.jar:]
at org.hornetq.jms.server.impl.JMSServerDeployer.deployQueue(JMSServerDeployer.java:171) [hornetq-jms-server.jar:]
at org.hornetq.jms.server.impl.JMSServerDeployer.createAndBindObject(JMSServerDeployer.java:112) [hornetq-jms-server.jar:]
at org.hornetq.jms.server.impl.JMSServerDeployer.deploy(JMSServerDeployer.java:95) [hornetq-jms-server.jar:]
at org.hornetq.core.deployers.impl.XmlDeployer.deploy(XmlDeployer.java:182) [hornetq-server.jar:]
at org.hornetq.core.deployers.impl.FileDeploymentManager.registerDeployer(FileDeploymentManager.java:130) [hornetq-server.jar:]
at org.hornetq.core.deployers.impl.XmlDeployer.start(XmlDeployer.java:212) [hornetq-server.jar:]
at org.hornetq.jms.server.impl.JMSServerManagerImpl.activated(JMSServerManagerImpl.java:244) [hornetq-jms-server.jar:]
at org.hornetq.core.server.impl.HornetQServerImpl.callActivateCallbacks(HornetQServerImpl.java:1368) [hornetq-server.jar:]
at org.hornetq.core.server.impl.HornetQServerImpl.initialisePart2(HornetQServerImpl.java:1591) [hornetq-server.jar:]
at org.hornetq.core.server.impl.HornetQServerImpl.access$1400(HornetQServerImpl.java:169) [hornetq-server.jar:]
Can't seem to really get around this. Seems like I need to configure some serialization between the client and the remote server?