1 /*
   2  * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 /*
  25  * @test
  26  * @bug 4251878
  27  * @summary change in default URL port causes regression in java.rmi.Naming
  28  * @author Dana Burns
  29  * @library ../testlibrary
  30  * @modules java.rmi/sun.rmi.registry
  31  *          java.rmi/sun.rmi.server
  32  *          java.rmi/sun.rmi.transport
  33  *          java.rmi/sun.rmi.transport.tcp
  34  * @build TestLibrary
  35  * @run main/othervm DefaultRegistryPort
  36  * @key intermittent
  37  */
  38 
  39 /*
  40  * Ensure that the default registry port for java.rmi.Naming URLs
  41  * is 1099. Test creates a registry on port 1099 and then does a
  42  * lookup with a Naming URL that uses the default port. Test fails
  43  * if the lookup yields a NotBoundException. If the registry could
  44  * not be created, a fallback strategy of using an existing one is
  45  * tried.
  46  */
  47 
  48 import java.rmi.Naming;
  49 import java.rmi.Remote;
  50 import java.rmi.registry.LocateRegistry;
  51 import java.rmi.registry.Registry;
  52 
  53 public class DefaultRegistryPort {
  54 
  55     public static void main(String args[]) {
  56 
  57         Registry registry = null;
  58         try {
  59 
  60             System.err.println(
  61                 "Starting registry on default port REGISTRY_PORT=" +
  62                 Registry.REGISTRY_PORT);
  63 
  64             registry = LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
  65 
  66             System.err.println("Created registry=" + registry);
  67 
  68         } catch(java.rmi.RemoteException e) {
  69 
  70             try {
  71 
  72                 System.err.println(
  73                     "Failed to create a registry, try using existing one");
  74                 registry = LocateRegistry.getRegistry();
  75 
  76                 System.err.println("Found registry=" + registry);
  77 
  78             } catch (Exception ge) {
  79 
  80                 TestLibrary.bomb(
  81                     "Test Failed: cound not find or create a registry");
  82             }
  83 
  84         }
  85 
  86         try {
  87 
  88             if (registry != null) {
  89 
  90                 registry.rebind("myself", registry);
  91 
  92                 Remote myself = Naming.lookup("rmi://localhost/myself");
  93 
  94                 System.err.println("Test PASSED");
  95 
  96             } else {
  97 
  98                 TestLibrary.bomb(
  99                     "Test Failed: cound not find or create a registry");
 100 
 101             }
 102 
 103         } catch(java.rmi.NotBoundException e) {
 104 
 105             TestLibrary.bomb(
 106                 "Test Failed: could not find myself");
 107 
 108         } catch(Exception e) {
 109 
 110             e.printStackTrace();
 111             TestLibrary.bomb(
 112                 "Test failed: unexpected exception");
 113 
 114         }
 115 
 116     }
 117 
 118 }