Hi,

I am trying to get my web application to send a message to the other nodes
in the cluster. I am planning on using JMX to do this.

So far I have been able to query all the information I need but I am unable
to invoke the send command.

I have followed the instructions in an earlier post with the subject
"Cluster and notifications to nodes". In summary here they are again:

a)   mark application as priviliged=true
b)   define and implement your own ClusterMessage
c)   via MbeansServer you got the
Catalina:type=Cluster,host=localhost
mbean and send your
operation ( send(ClusterMessage)).
d)   Register a ClusterListener.


My version of step c looks like:

       Registry registry = Registry.getRegistry(null, null);
       MBeanServer server = registry.getMBeanServer();
       ObjectName cluster = new
ObjectName("simple-cluster:type=Cluster,host=localhost");
       server.invoke(cluster, "send", new Object[] {new
ClusterEventMessage()}, new String[] {"
org.apache.catalina.cluster.ClusterMessage"});

I am using Tomcat 5.5.12.

See below for the exception that I get:

2006-07-18 12:22:53,875 ERROR http-8090-Processor25
jmxtests.SendEventServlet - Cannot find method send with this signature
javax.management.ReflectionException: Cannot find method send with this
signature
   at org.apache.commons.modeler.BaseModelMBean.invoke(BaseModelMBean.java
:490)
   at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(
DynamicMetaDataImpl.java:213)
   at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java :220)
   at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(
DefaultMBeanServerInterceptor.java:815)
   at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java
:784)
   at jmxtests.SendEventServlet.service (SendEventServlet.java:54)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:252)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java :173)
   at org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:213)
   at org.apache.catalina.core.StandardContextValve.invoke(
StandardContextValve.java:178)
   at org.apache.catalina.core.StandardHostValve.invoke (
StandardHostValve.java:126)
   at org.apache.catalina.cluster.tcp.ReplicationValve.invoke(
ReplicationValve.java:247)
   at org.apache.catalina.valves.ErrorReportValve.invoke(
ErrorReportValve.java:105)
   at org.apache.catalina.core.StandardEngineValve.invoke (
StandardEngineValve.java:107)
   at org.apache.catalina.connector.CoyoteAdapter.service(
CoyoteAdapter.java:148)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:868)
   at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(
Http11BaseProtocol.java:663)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
PoolTcpEndpoint.java:527)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java :80)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
ThreadPool.java:684)
   at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.NoSuchMethodException:
org.apache.catalina.cluster.tcp.SimpleTcpCluster.send (
org.apache.catalina.cluster.ClusterMessage)
   at java.lang.Class.getMethod(Class.java:1581)
   at org.apache.commons.modeler.BaseModelMBean.invoke(BaseModelMBean.java
:484)
   ... 20 more

Thanks,
Jon.

Reply via email to