test/java/rmi/testlibrary/RMID.java

Print this page
rev 9296 : 8034999: change rmidRunning to a simple lookup
Reviewed-by: XXX

*** 26,45 **** --- 26,49 ---- */ import java.io.*; import java.rmi.*; import java.rmi.activation.*; + import java.rmi.registry.*; /** * Utility class that creates an instance of rmid with a policy * file of name <code>TestParams.defaultPolicy</code>. * * Activation groups should run with the same security manager as the * test. */ public class RMID extends JavaVM { + private static final String SYSTEM_NAME = ActivationSystem.class.getName(); + // "java.rmi.activation.ActivationSystem" + public static String MANAGER_OPTION="-Djava.security.manager="; /** Test port for rmid */ private final int port;
*** 205,214 **** --- 209,236 ---- public void slowStart() throws IOException { start(60000); } + /** + * Looks up the activation system in the registry on the given port, + * returning its stub, or null if it's not present. This method differs from + * ActivationGroup.getSystem() because this method looks on a specific port + * instead of using the java.rmi.activation.port property like + * ActivationGroup.getSystem() does. This method also returns null instead + * of throwing exceptions. + */ + public static ActivationSystem lookupSystem(int port) { + mesg("getting activation system"); + try { + return (ActivationSystem)LocateRegistry.getRegistry(port).lookup(SYSTEM_NAME); + } catch (RemoteException | NotBoundException ex) { + mesg("couldn't get activation system: " + ex); + return null; + } + } + public void start(long waitTime) throws IOException { // if rmid is already running, then the test will fail with // a well recognized exception (port already in use...).
*** 236,247 **** return; } waitTime -= rmidStartSleepTime; // Checking if rmid is present ! if (ActivationLibrary.rmidRunning(port)) { ! /** * We need to set the java.rmi.activation.port value as the * activation system will use the property to determine the * port #. The activation system will use this value if set. * If it isn't set, the activation system will set it to an * incorrect value. --- 258,269 ---- return; } waitTime -= rmidStartSleepTime; // Checking if rmid is present ! if (lookupSystem(port) != null) { ! /* * We need to set the java.rmi.activation.port value as the * activation system will use the property to determine the * port #. The activation system will use this value if set. * If it isn't set, the activation system will set it to an * incorrect value.
*** 272,299 **** * process object (destroy does though). */ public static void shutdown(int port) { try { ! ActivationSystem system = null; ! ! try { ! mesg("getting a reference to the activation system"); ! system = (ActivationSystem) Naming.lookup("//:" + ! port + ! "/java.rmi.activation.ActivationSystem"); ! mesg("obtained a reference to the activation system"); ! } catch (RemoteException re) { ! mesg("could not contact registry while trying to shutdown activation system"); ! } catch (java.net.MalformedURLException mue) { ! } if (system == null) { TestLibrary.bomb("reference to the activation system was null"); } - system.shutdown(); } catch (RemoteException re) { mesg("shutting down the activation daemon failed"); } catch (Exception e) { mesg("caught exception trying to shutdown rmid"); mesg(e.getMessage()); --- 294,310 ---- * process object (destroy does though). */ public static void shutdown(int port) { try { ! ActivationSystem system = lookupSystem(port); if (system == null) { TestLibrary.bomb("reference to the activation system was null"); } + system.shutdown(); } catch (RemoteException re) { mesg("shutting down the activation daemon failed"); } catch (Exception e) { mesg("caught exception trying to shutdown rmid"); mesg(e.getMessage());