[jboss-remoting-commits] JBoss Remoting SVN: r3867 - remoting2/branches/2.x/src/tests/org/jboss/test/remoting/detection/registry.

jboss-remoting-commits at lists.jboss.org jboss-remoting-commits at lists.jboss.org
Wed Apr 2 01:34:02 EDT 2008


Author: ron.sigal at jboss.com
Date: 2008-04-02 01:34:02 -0400 (Wed, 02 Apr 2008)
New Revision: 3867

Modified:
   remoting2/branches/2.x/src/tests/org/jboss/test/remoting/detection/registry/NetworkRegistryTestCase.java
Log:
JBREM-934: Put MBeanServer.registerMBean() and MBeanServer.addNotificationListener() calls in AccessController.doPrivileged() calls.

Modified: remoting2/branches/2.x/src/tests/org/jboss/test/remoting/detection/registry/NetworkRegistryTestCase.java
===================================================================
--- remoting2/branches/2.x/src/tests/org/jboss/test/remoting/detection/registry/NetworkRegistryTestCase.java	2008-04-02 05:28:45 UTC (rev 3866)
+++ remoting2/branches/2.x/src/tests/org/jboss/test/remoting/detection/registry/NetworkRegistryTestCase.java	2008-04-02 05:34:02 UTC (rev 3867)
@@ -22,6 +22,9 @@
 package org.jboss.test.remoting.detection.registry;
 
 import java.net.InetAddress;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
 
 import junit.framework.TestCase;
 import org.jboss.remoting.InvokerLocator;
@@ -55,28 +58,38 @@
 //      org.apache.log4j.Category.getInstance("org.jboss.remoting.detection").setLevel(XLevel.TRACE);
 //      org.apache.log4j.Category.getInstance("org.jgroups").setLevel(Level.FATAL);
 
+      MBeanServer server1 = null;
+      try
+      {
+          server1 = (MBeanServer) AccessController.doPrivileged( new PrivilegedExceptionAction()
+          {
+             public Object run() throws Exception
+             {
+                 return MBeanServerFactory.createMBeanServer();
+             }
+          });
+      }
+      catch (PrivilegedActionException e)
+      {
+          throw (Exception) e.getCause();
+      }
 
-      MBeanServer server1 = MBeanServerFactory.createMBeanServer();
-
       NetworkRegistry networkRegistry = new NetworkRegistry();
-      server1.registerMBean(networkRegistry, new ObjectName("remoting:type=NetworkRegistry"));
+      registerMBean(server1, networkRegistry, new ObjectName("remoting:type=NetworkRegistry"));
+      addNotificationListener(server1, new ObjectName("remoting:type=NetworkRegistry"), this);
 
-      server1.addNotificationListener(new ObjectName("remoting:type=NetworkRegistry"),
-                                      this, null, null);
-
-      MulticastDetector detector1 = new MulticastDetector();
-
       int port = TestUtil.getRandomPort();
       String host = InetAddress.getLocalHost().getHostAddress();
       String bindAddr = System.getProperty("jrunit.bind_addr", host);
       InvokerLocator locator1 = new InvokerLocator("socket://" + bindAddr + ":" + port);
       Connector connector1 = new Connector(locator1);
       ObjectName obj = new ObjectName("jboss.remoting:type=Connector,transport=" + locator1.getProtocol());
-      server1.registerMBean(connector1, obj);
+      registerMBean(server1, connector1, obj);
       //connector1.create();
       connector1.start();
 
-      server1.registerMBean(detector1, new ObjectName("remoting:type=MultiplexDetector"));
+      MulticastDetector detector1 = new MulticastDetector();
+      registerMBean(server1, detector1, new ObjectName("remoting:type=MulticastDetector"));
       // set config info for detector and start it.
       detector1.start();
 
@@ -85,23 +98,36 @@
       Thread.sleep(3000);
 
       System.out.println("Starting second set.");
+      
+      MBeanServer server2 = null;
+      try
+      {
+          server2 = (MBeanServer) AccessController.doPrivileged( new PrivilegedExceptionAction()
+          {
+             public Object run() throws Exception
+             {
+                 return MBeanServerFactory.createMBeanServer();
+             }
+          });
+      }
+      catch (PrivilegedActionException e)
+      {
+          throw (Exception) e.getCause();
+      }
+      
+      registerMBean(server2, networkRegistry, new ObjectName("remoting:type=NetworkRegistry"));
+      addNotificationListener(server2, new ObjectName("remoting:type=NetworkRegistry"), this);
 
-      MBeanServer server2 = MBeanServerFactory.createMBeanServer();
-      server2.registerMBean(networkRegistry, new ObjectName("remoting:type=NetworkRegistry"));
-      server2.addNotificationListener(new ObjectName("remoting:type=NetworkRegistry"),
-                                      this, null, null);
-
-      MulticastDetector detector2 = new MulticastDetector();
-
       port = TestUtil.getRandomPort();
       InvokerLocator locator2 = new InvokerLocator("socket://" + bindAddr + ":" + port);
       Connector connector2 = new Connector(locator2);
       ObjectName obj2 = new ObjectName("jboss.remoting:type=Connector,transport=" + locator2.getProtocol());
-      server2.registerMBean(connector2, obj2);
+      registerMBean(server2, connector2, obj2);
       //connector2.create();
       connector2.start();
 
-      server2.registerMBean(detector2, new ObjectName("remoting:type=MultiplexDetector"));
+      MulticastDetector detector2 = new MulticastDetector();
+      registerMBean(server2, detector2, new ObjectName("remoting:type=MultiplexDetector"));
       // set config info for detector and start it.
       detector2.start();
 
@@ -174,5 +200,47 @@
 
       }
    }
+   
+   private void registerMBean(final MBeanServer server, final Object obj, final ObjectName name)
+   throws Exception
+   {
+      try
+      {
+         AccessController.doPrivileged( new PrivilegedExceptionAction()
+         {
+            public Object run() throws Exception
+            {
+               server.registerMBean(obj, name);
+               return null;
+            }
+         });
+      }
+      catch (PrivilegedActionException e)
+      {
+         System.out.println(e.getCause());
+         throw (Exception) e.getCause();
+      } 
+   }
 
+   private void addNotificationListener(final MBeanServer server, final ObjectName name, final NotificationListener listener)
+   throws Exception
+   {
+      try
+      {
+         AccessController.doPrivileged( new PrivilegedExceptionAction()
+         {
+            public Object run() throws Exception
+            {
+               server.addNotificationListener(name, listener, null, null);
+               return null;
+            }
+         });
+      }
+      catch (PrivilegedActionException e)
+      {
+         System.out.println(e.getCause());
+         throw (Exception) e.getCause();
+      }  
+   }
+
 }
\ No newline at end of file




More information about the jboss-remoting-commits mailing list