diff --git a/jdk/test/java/rmi/activation/rmidViaInheritedChannel/InheritedChannelNotServerSocket.java b/jdk/test/java/rmi/activation/rmidViaInheritedChannel/InheritedChannelNotServerSocket.java index 721ecf84f6f..e2826835e53 100644 --- a/jdk/test/java/rmi/activation/rmidViaInheritedChannel/InheritedChannelNotServerSocket.java +++ b/jdk/test/java/rmi/activation/rmidViaInheritedChannel/InheritedChannelNotServerSocket.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -93,9 +93,8 @@ public class InheritedChannelNotServerSocket { obj = new CallbackImpl(); Callback proxy = (Callback) UnicastRemoteObject.exportObject(obj, 0); - Registry registry = - LocateRegistry.createRegistry( - TestLibrary.INHERITEDCHANNELNOTSERVERSOCKET_REGISTRY_PORT); + Registry registry = TestLibrary.createRegistryOnEphemeralPort(); + int registryPort = TestLibrary.getRegistryPort(registry); registry.bind("Callback", proxy); /* @@ -107,7 +106,8 @@ public class InheritedChannelNotServerSocket { TestLibrary.INHERITEDCHANNELNOTSERVERSOCKET_ACTIVATION_PORT); rmid.addOptions( "--add-exports=java.base/sun.nio.ch=ALL-UNNAMED", - "-Djava.nio.channels.spi.SelectorProvider=InheritedChannelNotServerSocket$SP"); + "-Djava.nio.channels.spi.SelectorProvider=InheritedChannelNotServerSocket$SP", + "-Dtest.java.rmi.rmidViaInheritedChannel.registry.port=" + registryPort); rmid.start(); /* @@ -181,8 +181,9 @@ public class InheritedChannelNotServerSocket { */ try { System.err.println("notify test..."); - Registry registry = - LocateRegistry.getRegistry(TestLibrary.INHERITEDCHANNELNOTSERVERSOCKET_REGISTRY_PORT); + int registryPort = Integer.getInteger( + "test.java.rmi.rmidViaInheritedChannel.registry.port", 0); + Registry registry = LocateRegistry.getRegistry(registryPort); Callback obj = (Callback) registry.lookup("Callback"); obj.notifyTest(); } catch (NotBoundException nbe) { diff --git a/jdk/test/java/rmi/activation/rmidViaInheritedChannel/RmidViaInheritedChannel.java b/jdk/test/java/rmi/activation/rmidViaInheritedChannel/RmidViaInheritedChannel.java deleted file mode 100644 index 4d27bc8fb0c..00000000000 --- a/jdk/test/java/rmi/activation/rmidViaInheritedChannel/RmidViaInheritedChannel.java +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* @test - * @bug 4295885 6824141 - * @summary rmid should be startable from inetd - * @author Ann Wollrath - * - * @library ../../testlibrary - * @modules java.base/sun.nio.ch - * java.rmi/sun.rmi.registry - * java.rmi/sun.rmi.server - * java.rmi/sun.rmi.transport - * java.rmi/sun.rmi.transport.tcp - * @build TestLibrary RMID ActivationLibrary - * @run main/othervm/timeout=240 RmidViaInheritedChannel - * @key intermittent - */ - -import java.io.IOException; -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.ServerSocket; -import java.net.ProtocolFamily; -import java.nio.channels.*; -import java.nio.channels.spi.*; -import java.rmi.Remote; -import java.rmi.NotBoundException; -import java.rmi.activation.ActivationGroup; -import java.rmi.activation.ActivationSystem; -import java.rmi.registry.LocateRegistry; -import java.rmi.registry.Registry; -import java.rmi.server.UnicastRemoteObject; -import static java.net.StandardSocketOptions.SO_REUSEADDR; -import static java.net.StandardSocketOptions.SO_REUSEPORT; - -public class RmidViaInheritedChannel implements Callback { - private static final Object lock = new Object(); - private static boolean notified = false; - - private RmidViaInheritedChannel() {} - - public void notifyTest() { - synchronized (lock) { - notified = true; - System.err.println("notification received."); - lock.notifyAll(); - } - } - - public static void main(String[] args) throws Exception { - System.setProperty("java.rmi.activation.port", - Integer.toString(TestLibrary.RMIDVIAINHERITEDCHANNEL_ACTIVATION_PORT)); - RMID rmid = null; - Callback obj = null; - - try { - /* - * Export callback object and bind in registry. - */ - System.err.println("export callback object and bind in registry"); - obj = new RmidViaInheritedChannel(); - Callback proxy = (Callback) - UnicastRemoteObject.exportObject(obj, 0); - Registry registry = - LocateRegistry.createRegistry( - TestLibrary.RMIDVIAINHERITEDCHANNEL_REGISTRY_PORT); - registry.bind("Callback", proxy); - - /* - * Start rmid. - */ - System.err.println("start rmid with inherited channel"); - RMID.removeLog(); - rmid = RMID.createRMID(System.out, System.err, true, false, - TestLibrary.RMIDVIAINHERITEDCHANNEL_ACTIVATION_PORT); - rmid.addOptions( - "--add-exports=java.base/sun.nio.ch=ALL-UNNAMED", - "-Djava.nio.channels.spi.SelectorProvider=RmidViaInheritedChannel$RmidSelectorProvider"); - if (System.getProperty("os.name").startsWith("Windows") && - System.getProperty("os.version").startsWith("5.")) - { - /* Windows XP/2003 or older - * Need to expand ephemeral range to include RMI test ports - */ - rmid.addOptions(new String[]{ - "-Djdk.net.ephemeralPortRange.low=1024", - "-Djdk.net.ephemeralPortRange.high=64000" - }); - } - rmid.start(); - - /* - * Get activation system and wait to be notified via callback - * from rmid's selector provider. - */ - System.err.println("get activation system"); - ActivationSystem system = ActivationGroup.getSystem(); - System.err.println("ActivationSystem = " + system); - synchronized (lock) { - while (!notified) { - lock.wait(); - } - } - System.err.println("TEST PASSED"); - - } finally { - if (obj != null) { - UnicastRemoteObject.unexportObject(obj, true); - } - if (rmid != null) { - rmid.cleanup(); - } - } - } - - public static class RmidSelectorProvider extends SelectorProvider { - - private final SelectorProvider provider; - private ServerSocketChannel channel = null; - - public RmidSelectorProvider() { - provider = sun.nio.ch.DefaultSelectorProvider.create(); - } - - public DatagramChannel openDatagramChannel() - throws IOException - { - return provider.openDatagramChannel(); - } - - public DatagramChannel openDatagramChannel(ProtocolFamily family) - throws IOException - { - return provider.openDatagramChannel(family); - } - - public Pipe openPipe() - throws IOException - { - return provider.openPipe(); - } - - public AbstractSelector openSelector() - throws IOException - { - return provider.openSelector(); - } - - public ServerSocketChannel openServerSocketChannel() - throws IOException - { - return provider.openServerSocketChannel(); - } - - public SocketChannel openSocketChannel() - throws IOException - { - return provider.openSocketChannel(); - } - - public synchronized Channel inheritedChannel() throws IOException { - System.err.println("RmidSelectorProvider.inheritedChannel"); - if (channel == null) { - /* - * Create server socket channel and bind server socket. - */ - channel = ServerSocketChannel.open(); - ServerSocket serverSocket = channel.socket(); - - // Enable SO_REUSEADDR before binding - serverSocket.setOption(SO_REUSEADDR, true); - - // Enable SO_REUSEPORT, if supported, before binding - if (serverSocket.supportedOptions().contains(SO_REUSEPORT)) { - serverSocket.setOption(SO_REUSEPORT, true); - } - - serverSocket.bind( - new InetSocketAddress(InetAddress.getLocalHost(), - TestLibrary.RMIDVIAINHERITEDCHANNEL_ACTIVATION_PORT)); - System.err.println("serverSocket = " + serverSocket); - - /* - * Notify test that inherited channel was created. - */ - try { - System.err.println("notify test..."); - Registry registry = - LocateRegistry.getRegistry(TestLibrary.RMIDVIAINHERITEDCHANNEL_REGISTRY_PORT); - Callback obj = (Callback) registry.lookup("Callback"); - obj.notifyTest(); - } catch (NotBoundException nbe) { - throw (IOException) - new IOException("callback object not bound"). - initCause(nbe); - } - } - return channel; - } - } -} - -interface Callback extends Remote { - void notifyTest() throws IOException; -} diff --git a/jdk/test/java/rmi/activation/rmidViaInheritedChannel/rmid.security.policy b/jdk/test/java/rmi/activation/rmidViaInheritedChannel/rmid.security.policy index 9ddb55603a0..1d94a375522 100644 --- a/jdk/test/java/rmi/activation/rmidViaInheritedChannel/rmid.security.policy +++ b/jdk/test/java/rmi/activation/rmidViaInheritedChannel/rmid.security.policy @@ -3,4 +3,5 @@ grant { permission java.lang.RuntimePermission "accessClassInPackage.sun.nio.ch"; permission java.net.SocketPermission "*", "connect,accept"; permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + permission java.util.PropertyPermission "test.java.rmi.rmidViaInheritedChannel.registry.port", "read"; };