示例#1
0
  public static void main(String[] args) {

    RMID rmid = null;

    System.out.println("\nRegression test for bug 4510355\n");

    try {
      TestLibrary.suggestSecurityManager("java.lang.SecurityManager");

      /*
       * Install group class file in codebase.
       */
      System.err.println("install class file in codebase");
      URL groupURL = TestLibrary.installClassInCodebase("MyActivationGroupImpl", "group");
      System.err.println("class file installed");

      /*
       * Start rmid.
       */
      RMID.removeLog();
      rmid = RMID.createRMID();
      String execPolicyOption = "-Dsun.rmi.activation.execPolicy=none";
      rmid.addOptions(new String[] {execPolicyOption});
      rmid.start();

      /*
       * Create and register descriptors for custom group and an
       * activatable object in that group.
       */
      System.err.println("register group");

      Properties p = new Properties();
      p.put("java.security.policy", TestParams.defaultGroupPolicy);

      ActivationGroupDesc groupDesc =
          new ActivationGroupDesc(
              "MyActivationGroupImpl", groupURL.toExternalForm(), null, p, null);
      ActivationGroupID groupID = ActivationGroup.getSystem().registerGroup(groupDesc);

      System.err.println("register activatable object");
      ActivationDesc desc = new ActivationDesc(groupID, "DownloadActivationGroup", null, null);
      Ping obj = (Ping) Activatable.register(desc);

      /*
       * Start group (by calling ping).
       */
      System.err.println("ping object (forces download of group's class)");
      obj.ping();
      System.err.println("TEST PASSED: group's class downloaded successfully");
      System.err.println("shutdown object");
      obj.shutdown();
      System.err.println("TEST PASSED");

    } catch (Exception e) {
      TestLibrary.bomb(e);
    } finally {
      rmid.cleanup();
    }
  }
示例#2
0
 public static void main(String args[]) {
   // INIZIALIZZAZIONI
   String policyGroup = System.getProperty("servers.policy");
   String implCodebase = System.getProperty("servers.impl.codebase");
   String classeserver = System.getProperty("servers.classeserver");
   String trustStore = System.getProperty("javax.net.ssl.trustStore");
   String trustStorePassword = System.getProperty("javax.net.ssl.trustStorePassword");
   String keyStore = System.getProperty("javax.net.ssl.keyStore");
   String keyStorePassword = System.getProperty("javax.net.ssl.keyStorePassword");
   // LANCIO IL SECURITY MANAGER
   System.setSecurityManager(new RMISecurityManager());
   try {
     Properties prop = new Properties();
     prop.put("java.security.policy", policyGroup);
     prop.put("servers.impl.codebase", implCodebase);
     prop.put("java.class.path", "no_classpath");
     prop.put("javax.net.ssl.trustStore", trustStore);
     prop.put("javax.net.ssl.trustStorePassword", trustStorePassword);
     prop.put("javax.net.ssl.keyStore", keyStore);
     prop.put("javax.net.ssl.keyStorePassword", keyStorePassword);
     // FASE 1: CREAZIONE DEL GRUPPO DI ATTIVAZIONE
     ActivationGroupDesc groupDesc = new ActivationGroupDesc(prop, null);
     // FASE 2: REGISTRAZIONE DEL GRUPPO DI ATTIVAZIONE
     ActivationGroupID groupID = ActivationGroup.getSystem().registerGroup(groupDesc);
     System.out.println(
         "Il gruppo e' stato creato,  registrato col sistema d'attivazione, ed ha identificativo = "
             + groupID);
     // FASE 3: CREAZIONE DELL'ACTIVATION DESCRIPTOR ASSOCIATO AL SERVER
     ActivationDesc actDesc = new ActivationDesc(groupID, classeserver, implCodebase, null);
     // FASE 4: REGISTRAZIONE DEL SERVER ATTIVABILE COL SISTEMA
     // D'ATTIVAZIONE
     IGame stub_server = (IGame) Activatable.register(actDesc);
     System.out.println(
         "E' stato creato l'activation descriptor del server che e' stato registrato col demone d'attivazione");
     System.out.println(
         "Il server attivabile che adesso puo' essere acceduto attraverso lo stub: "
             + stub_server);
     System.out.println("Notate come la RemoteRef dello stub sia a null");
     // FASE 5: BINDING DEL SERVER ATTIVABILE SUL REGISTRO RMI
     System.out.println(
         "Faccio il binding dello stub del server attivabile nel registro RMI alla porta 1098 dove gia' si trova registrato il sistema di attivazione ");
     InetAddress ip = InetAddress.getLocalHost();
     String ipp = ip.getHostAddress().toString();
     // String ipp = "157.27.184.217";
     // Registry registry = LocateRegistry.createRegistry(5552, new SslRMIClientSocketFactory(),
     // new SslRMIServerSocketFactory(null, null, true));
     Registry registry =
         LocateRegistry.getRegistry("localhost", 5552, new SslRMIClientSocketFactory());
     registry.rebind("//" + ipp + ":5552/GameServer", (Remote) stub_server);
     // Thread.sleep(10000);
   } catch (Throwable t) {
     t.printStackTrace();
   }
 }
  public RestartCrashedService(ActivationID id, MarshalledObject mobj)
      throws ActivationException, RemoteException {
    this.id = id;
    Activatable.exportObject(this, id, 0);
    ActivateMe obj;
    String responder;
    try {
      Object[] stuff = (Object[]) mobj.get();
      responder = (String) stuff[0];
      System.err.println(responder + " service started");
      obj = (ActivateMe) stuff[1];
    } catch (Exception e) {
      System.err.println("unable to obtain stub from marshalled object");
      return;
    }

    obj.ping(responder);
  }
示例#4
0
  private static void setup() {

    try {

      NotActivatableInterface rsi; // Remote server interface

      System.setSecurityManager(new RMISecurityManager());

      rsi = (NotActivatableInterface) Activatable.register(ACTIVATION_DESC);
      System.out.println("Got stub for " + SERVER_OBJECT + " implementation");

      Naming.rebind(SERVER_OBJECT, rsi);
      System.out.println("Exported " + SERVER_OBJECT + " implementation");

    } catch (Exception e) {
      System.err.println("Exception: " + e);
      e.printStackTrace();
    }
  }
示例#5
0
  public static void main(String[] args) {
    System.setSecurityManager(new RMISecurityManager());

    Properties prop = new Properties();
    prop.put("java.security.policy", "java.policy");
    ActivationGroupDesc grp = new ActivationGroupDesc(prop, null);

    try {
      ActivationGroupID agid = ActivationGroup.getSystem().registerGroup(grp);
      ActivationDesc desc = new ActivationDesc(agid, "ActiveEchoServer", args[0], null);

      Echo server = (Echo) Activatable.register(desc);
      System.out.println("Stworzona instancja stub serwera");
      Naming.rebind(args[1], server);
      System.out.println("Setup: zarejestrowalem stub servera");
    } catch (Exception e) {
      System.err.println("Setup wyjatek: " + e.getMessage());
      e.printStackTrace();
    }
    System.exit(0);
  }
  public static void main(String[] args) {

    System.out.println("\nRegression test for bug 4095165, 4140736\n");

    TestLibrary.suggestSecurityManager("java.rmi.RMISecurityManager");

    RMID rmid = null;
    RestartCrashedService unicastObj = null;

    try {
      RMID.removeLog();
      rmid = RMID.createRMID();
      rmid.start();

      /* Cause activation groups to have a security policy that will
       * allow security managers to be downloaded and installed
       */
      final Properties p = new Properties();
      // this test must always set policies/managers in its
      // activation groups
      p.put("java.security.policy", TestParams.defaultGroupPolicy);
      p.put("java.security.manager", TestParams.defaultSecurityManager);

      /*
       * Create unicast object to be contacted when service is activated.
       */
      unicastObj = new RestartCrashedService();
      /*
       * Create and register descriptors for a restartable and
       * non-restartable service (respectively) in a group other than
       * this VM's group.
       */
      System.err.println("Creating descriptors");

      Object[] stuff = new Object[] {RESTARTABLE, unicastObj};
      MarshalledObject restartMobj = new MarshalledObject(stuff);
      ActivationGroupDesc groupDesc = new ActivationGroupDesc(p, null);

      stuff[0] = ACTIVATABLE;
      MarshalledObject activateMobj = new MarshalledObject(stuff);
      ActivationGroupID groupID = ActivationGroup.getSystem().registerGroup(groupDesc);
      ActivationDesc restartableDesc =
          new ActivationDesc(groupID, "RestartCrashedService", null, restartMobj, true);

      ActivationDesc activatableDesc =
          new ActivationDesc(groupID, "RestartCrashedService", null, activateMobj, false);

      System.err.println("Registering descriptors");
      ActivateMe restartableObj = (ActivateMe) Activatable.register(restartableDesc);

      ActivateMe activatableObj = (ActivateMe) Activatable.register(activatableDesc);

      /*
       * Restart rmid; it should start up the restartable service
       */
      rmid.restart();

      /*
       * Wait for service to be automatically restarted.
       */
      int repeat = 1;

      do {

        for (int i = 0; i < 15; i++) {
          synchronized (lock) {
            if (unicastObj.receivedPing(RESTARTABLE) != true) {
              lock.wait(5000);
              if (unicastObj.receivedPing(RESTARTABLE) == true) {
                System.err.println("Test1 passed: rmid " + "restarted service");
                break;
              }
            } else {
              break;
            }
          }
        }

        if (unicastObj.receivedPing(RESTARTABLE) != true)
          TestLibrary.bomb("Test1 failed: service not restarted by timeout", null);

        /*
         * Make sure activatable services wasn't automatically
         * restarted.
         */
        synchronized (lock) {
          if (unicastObj.receivedPing(ACTIVATABLE) != true) {
            lock.wait(5000);
            if (unicastObj.receivedPing(ACTIVATABLE) != true) {
              System.err.println("Test2 passed: rmid did not " + "restart activatable service");
            } else {
              TestLibrary.bomb("Test2 failed: activatable service restarted", null);
            }
          } else {
            TestLibrary.bomb("Test2 failed: activatable service restarted!", null);
          }
        }

        if (repeat > 0) {
          try {
            System.err.println("\nCrash restartable object");
            unicastObj.resetResponders();
            restartableObj.crash();
          } catch (Exception e) {
          }
        }

      } while (repeat-- > 0);

    } catch (Exception e) {
      TestLibrary.bomb("test failed", e);
    } finally {
      ActivationLibrary.rmidCleanup(rmid);
      TestLibrary.unexport(unicastObj);
    }
  }
示例#7
0
 public DownloadActivationGroup(ActivationID id, MarshalledObject mobj)
     throws ActivationException, RemoteException {
   this.id = id;
   Activatable.exportObject(this, id, 0);
   System.err.println("object activated in group");
 }
  public static void main(String args[]) {
    /*
     * The following line is required with the JDK 1.2 VM so that the
     * VM can exit gracefully when this test completes.  Otherwise, the
     * conservative garbage collector will find a handle to the server
     * object on the native stack and not clear the weak reference to
     * it in the RMI runtime's object table.
     */
    Object dummy1 = new Object();
    RMID rmid = null;

    System.err.println("\nRegression test for bug/rfe 4109103\n");

    try {

      // Set security manager according to the
      // testlibrary.
      TestLibrary.suggestSecurityManager(TestParams.defaultSecurityManager);

      // start an rmid.
      RMID.removeLog();
      rmid = RMID.createRMID(rmidOut, rmidErr, false);
      rmid.start();

      /* Cause activation groups to have a security policy that will
       * allow security managers to be downloaded and installed
       */
      Properties p = new Properties();
      // this test must always set policies/managers in its
      // activation groups
      p.put("java.security.policy", TestParams.defaultGroupPolicy);
      p.put("java.security.manager", TestParams.defaultSecurityManager);

      /* new desc - we will reuse in order to get multiple vms.*/
      System.err.println("Create activation group in this VM");
      ActivationGroupDesc groupDesc = new ActivationGroupDesc(p, null);
      ActivationSystem system = ActivationGroup.getSystem();
      ActivationGroupID groupID = system.registerGroup(groupDesc);
      ActivationGroup.createGroup(groupID, groupDesc, 0);

      ActivationDesc desc = new ActivationDesc("CheckAnnotations", null, null);
      myRMI = (MyRMI) Activatable.register(desc);

      /* The test-
       * Loop a bunch of times to force activator to
       * spawn VMs (groups)
       */
      for (int i = 0; i < 3; i++) {

        // object activated in annotation check via method call
        if (!checkAnnotations(i - 1)) {
          TestLibrary.bomb("Test failed: output improperly annotated.");
        }

        /*
         * Clean up object too.
         */
        System.err.println("Deactivate object via method call");
        myRMI.shutdown();
      }
      System.err.println("\nsuccess: CheckAnnotations test passed ");

    } catch (Exception e) {
      TestLibrary.bomb("\nfailure: unexpected exception ", e);
    } finally {
      try {
        Thread.sleep(4000);
      } catch (InterruptedException e) {
      }

      myRMI = null;
      System.err.println("rmid shut down");
      ActivationLibrary.rmidCleanup(rmid);
    }
  }
示例#9
0
  public static void main(String args[]) {

    sameGroup = true;

    RMID rmid = null;

    System.err.println("\nRegression test for bug/rfe 4179055\n");

    try {
      TestLibrary.suggestSecurityManager("java.lang.SecurityManager");

      registry = java.rmi.registry.LocateRegistry.createRegistry(TestLibrary.REGISTRY_PORT);

      // must run with java.lang.SecurityManager or the test
      // result will be nullified if running with a build where
      // 4180392 has not been fixed.
      String smClassName = System.getSecurityManager().getClass().getName();
      if (!smClassName.equals("java.lang.SecurityManager")) {
        TestLibrary.bomb("Test must run with java.lang.SecurityManager");
      }

      // start an rmid.
      RMID.removeLog();
      rmid = RMID.createRMID();
      rmid.start();

      // rmid.addOptions(new String[] {"-C-Djava.rmi.server.logCalls=true"});

      // Ensure that activation groups run with the correct
      // security manager.
      //
      Properties p = new Properties();
      p.put("java.security.policy", TestParams.defaultGroupPolicy);
      p.put("java.security.manager", "java.lang.SecurityManager");

      // This action causes the following classes to be created
      // in this VM (RMI must permit the creation of these classes):
      //
      // sun.rmi.server.Activation$ActivationSystemImpl_Stub
      // sun.rmi.server.Activation$ActivationMonitorImpl_Stub
      //
      System.err.println("Create activation group, in a new VM");
      ActivationGroupDesc groupDesc = new ActivationGroupDesc(p, null);
      ActivationSystem system = ActivationGroup.getSystem();
      ActivationGroupID groupID = system.registerGroup(groupDesc);

      System.err.println("register activatable");
      // Fix for: 4271615: make sure activation group runs in a new VM
      ActivationDesc desc = new ActivationDesc(groupID, "StubClassesPermitted", null, null);
      canCreateStubs = (CanCreateStubs) Activatable.register(desc);

      // ensure registry stub can be passed in a remote call
      System.err.println("getting the registry");
      registry = canCreateStubs.getRegistry();

      // make sure a client cant load just any sun.* class, just
      // as a sanity check, try to create a class we are not
      // allowed to access but which was passed in a remote call
      try {
        System.err.println("accessing forbidden class");
        Object secureRandom = canCreateStubs.getForbiddenClass();

        TestLibrary.bomb(
            "test allowed to access forbidden class," + " sun.security.provider.SecureRandom");
      } catch (java.security.AccessControlException e) {

        // Make sure we received a *local* AccessControlException
        ByteArrayOutputStream bout = new ByteArrayOutputStream();
        PrintStream ps = new PrintStream(bout);
        e.printStackTrace(ps);
        ps.flush();
        String trace = new String(bout.toByteArray());
        if ((trace.indexOf("exceptionReceivedFromServer") >= 0) || trace.equals("")) {
          throw e;
        }
        System.err.println("received expected local access control exception");
      }

      // make sure that an ActivationGroupID can be passed in a
      // remote call; this is slightly more inclusive than
      // just passing a reference to the activation system
      System.err.println("returning group desc");
      canCreateStubs.returnGroupID();

      // Clean up object
      System.err.println("Deactivate object via method call");
      canCreateStubs.shutdown();

      System.err.println("\nsuccess: StubClassesPermitted test passed ");

    } catch (Exception e) {
      TestLibrary.bomb("\nfailure: unexpected exception ", e);
    } finally {
      try {
        Thread.sleep(4000);
      } catch (InterruptedException e) {
      }

      canCreateStubs = null;
      ActivationLibrary.rmidCleanup(rmid);
      System.err.println("rmid shut down");
    }
  }