I am trying to implement a remote notification listener. My MBean works ok, and 
i can access it remotely, but i want to add a listener to be notified on state 
changes.

The code i have for the remote side is 

  | MBeanServerConnection settingsServer = (MBeanServerConnection) 
ctx.lookup("jmx/invoker/RMIAdaptor");
  | ObjectName sServer = new ObjectName("flytxt:service=settings");
  | if (settingsServer.isRegistered(sServer)) {
  |   String server = InetAddress.getLocalHost().getHostName();
  |   settings = (Document) settingsServer.invoke(sServer, "getSettings",
  |                         new Object[] { "ROOT/TRANSPORT/SERVER="+ server },
  |                         new String[] { "java.lang.String" });
  |   ((RMIAdaptor)settingsServer).addNotificationListener(sServer, this,
  |                     new AllNotificationFilter("ROOT/TRANSPORT/SERVER"), 
this);
  | 

The MBean itself is an EJB3 MBean, here is a snippit of the code

  | @Service(objectName = "flytxt:service=settings")
  | public class Settings implements SettingsMBean , NotificationBroadcaster{
  |   private NotificationBroadcasterSupport broadcaster = new 
NotificationBroadcasterSupport();
  | 
  |   public void addNotificationListener(NotificationListener listener, 
NotificationFilter filter, Object handback)
  |          throws IllegalArgumentException {
  |     broadcaster.addNotificationListener(listener, filter, handback);
  |   }
  | 
  |   public void removeNotificationListener(NotificationListener listener)
  |          throws ListenerNotFoundException {
  |     broadcaster.removeNotificationListener(listener);
  |   }
  | 
  |   public MBeanNotificationInfo[] getNotificationInfo() {
  |     return new MBeanNotificationInfo[] { new MBeanNotificationInfo(
  |                new String[] { "settings.server" }, Notification.class
  |                .getName(), "Settings Notification") };
  |   }
  | 
  |   public void broadcast() {
  |     broadcaster.sendNotification(new Notification("ROOT/TRANSPORT/SERVER", 
this,
  |                 notificationSequence++, "settings updated"));
  |     broadcaster.sendNotification(new Notification("STOP", this,
  |                 notificationSequence++, "settings updated"));
  |   }
  | }
  | 

when i run the code on the client side i get the following error


  | 08:25:10,189 INFO  [STDOUT] javax.management.RuntimeOperationsException
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.mx.server.MBeanServerImpl.addNotificationListener(MBeanServerImpl.java:724)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.jmx.connector.invoker.InvokerAdaptorService.addNotificationListener(InvokerAdaptorService.java:288)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.jmx.connector.invoker.InvokerAdaptorService.invoke(InvokerAdaptorService.java:236)
  | 08:25:10,189 INFO  [STDOUT]         at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  | 08:25:10,189 INFO  [STDOUT]         at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  | 08:25:10,189 INFO  [STDOUT]         at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 08:25:10,189 INFO  [STDOUT]         at 
java.lang.reflect.Method.invoke(Method.java:585)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:118)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.jmx.connector.invoker.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:87)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.invocation.jrmp.server.JRMPProxyFactory.invoke(JRMPProxyFactory.java:164)
  | 08:25:10,189 INFO  [STDOUT]         at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  | 08:25:10,189 INFO  [STDOUT]         at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  | 08:25:10,189 INFO  [STDOUT]         at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 08:25:10,189 INFO  [STDOUT]         at 
java.lang.reflect.Method.invoke(Method.java:585)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
  | 08:25:10,189 INFO  [STDOUT]         at 
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
  | 08:25:10,204 INFO  [STDOUT]         at 
org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(LocalInvoker.java:155)
  | 08:25:10,204 INFO  [STDOUT]         at 
org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:104)
  | 08:25:10,204 INFO  [STDOUT]         at 
org.jboss.invocation.InvokerInterceptor.invokeLocal(InvokerInterceptor.java:179)
  | 08:25:10,204 INFO  [STDOUT]         at 
org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:165)
  | 08:25:10,204 INFO  [STDOUT]         at 
org.jboss.jmx.connector.invoker.client.InvokerAdaptorClientInterceptor.invoke(InvokerAdaptorClientInterceptor.java:51)
  | 08:25:10,204 INFO  [STDOUT]         at 
org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:55)
  | 08:25:10,204 INFO  [STDOUT]         at 
org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:59)
  | 08:25:10,204 INFO  [STDOUT]         at 
org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:86)
  | 08:25:10,204 INFO  [STDOUT]         at 
$Proxy98.addNotificationListener(Unknown Source)
  | 08:25:10,204 INFO  [STDOUT]         at 
com.flytxt.transport.jmx.TransportServer.loadSettings(TransportServer.java:426)
  | 08:25:10,204 INFO  [STDOUT]         at 
com.flytxt.transport.jmx.TransportServer.process(TransportServer.java:125)
  | 08:25:10,204 INFO  [STDOUT]         at 
com.flytxt.transport.jmx.TransportServer$WaitAndRun.run(TransportServer.java:103)
  | 08:25:10,204 INFO  [STDOUT] Caused by: java.lang.IllegalArgumentException: 
The MBean named exists but does not implement the NotificationBroadcaster 
interface.
  | 

I don't know if this is a bug or if i am doing something wrong, but it seems to 
me that the remote interface does not support the NotificationBroadcaster 
interface, so i tried having the MBean interface extend the 
NotificationBroadcaster interface, and that made no difference.

If anyone can help me it would be much appreciated as at the moment i am having 
to write my own communications packages to send updates between the different 
servers, and as jboss already supports this, it would rather not have to.

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3898884#3898884

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3898884


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
JBoss-user mailing list
JBoss-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to