/* * 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 * 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.
*/
publicclass UnderscoreHost extends UnicastRemoteObject implements Remote { privatestaticfinal String HOSTNAME = "foo_bar"; privatestaticfinal String NAME = "name"; /* * The socket factory captures the host name of the parsed URL, and * then connects to the local host.
*/ privatestaticclass HostVerifyingSocketFactory extends RMISocketFactory {
String host;
publicsynchronized Socket createSocket(String host, int port) throws IOException { if (this.host == null) { // Only set it the first time, subsequent DGC dirty calls // will be local host this.host = host;
} returnnew Socket("localhost", port);
} public ServerSocket createServerSocket(int port) throws IOException { returnnew ServerSocket(port);
}
}
public UnderscoreHost() throws RemoteException {};
publicstaticvoid main(String args[]) {
UnderscoreHost t = null; try {
HostVerifyingSocketFactory hvf = new HostVerifyingSocketFactory();
RMISocketFactory.setSocketFactory(hvf);
Registry r = TestLibrary.createRegistryOnEphemeralPort(); int port = TestLibrary.getRegistryPort(r);
t = new UnderscoreHost();
r.rebind(NAME, t);
Naming.lookup("rmi://" + HOSTNAME + ":" + port + "/" + NAME); /* * This test is coded to pass whether java.net.URI obeys * RFC 2396 or RFC 3986 (see 5085902, 6394131, etc.). * * If java.net.URI obeys RFC 3986, so host names may * contain underscores, then the Naming.lookup invocation * should succeed-- but the host actually connected to * must equal HOSTNAME.
*/ if (!hvf.host.equals(HOSTNAME)) { thrownew RuntimeException( "java.rmi.Naming Parsing error:" +
hvf.host + ":" + HOSTNAME);
}
} catch (MalformedURLException e) { /* * If java.net.URI obeys RFC 2396, so host names must not * contain underscores, then the Naming.lookup invocation * should throw MalformedURLException-- so this is OK.
*/
} catch (IOException ioe) {
TestLibrary.bomb(ioe);
} catch (java.rmi.NotBoundException nbe) {
TestLibrary.bomb(nbe);
} finally {
TestLibrary.unexport(t);
}
}
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.