/* * Copyright (c) 1996, 2002, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package java.rmi.server; import java.rmi.*; import sun.rmi.server.UnicastServerRef; import sun.rmi.runtime.Log; /** * The <code>RemoteServer</code> class is the common superclass to server * implementations and provides the framework to support a wide range * of remote reference semantics. Specifically, the functions needed * to create and export remote objects (i.e. to make them remotely * available) are provided abstractly by <code>RemoteServer</code> and * concretely by its subclass(es). * * @author Ann Wollrath * @since JDK1.1 */ public abstract class RemoteServer extends RemoteObject { /* indicate compatibility with JDK 1.1.x version of class */ private static final long serialVersionUID = -4100238210092549637L; /** * Constructs a <code>RemoteServer</code>. * @since JDK1.1 */ protected RemoteServer() { super(); } /** * Constructs a <code>RemoteServer</code> with the given reference type. * * @param ref the remote reference * @since JDK1.1 */ protected RemoteServer(RemoteRef ref) { super(ref); } /** * Returns a string representation of the client host for the * remote method invocation being processed in the current thread. * * @return a string representation of the client host * * @throws ServerNotActiveException if no remote method invocation * is being processed in the current thread * * @since JDK1.1 */ public static String getClientHost() throws ServerNotActiveException { return sun.rmi.transport.tcp.TCPTransport.getClientHost(); } /** * Log RMI calls to the output stream <code>out</code>. If * <code>out</code> is <code>null</code>, call logging is turned off. * * <p>If there is a security manager, its * <code>checkPermission</code> method will be invoked with a * <code>java.util.logging.LoggingPermission("control")</code> * permission; this could result in a <code>SecurityException</code>. * * @param out the output stream to which RMI calls should be logged * @throws SecurityException if there is a security manager and * the invocation of its <code>checkPermission</code> method * fails * @see #getLog * @since JDK1.1 */ public static void setLog(java.io.OutputStream out) { logNull = (out == null); UnicastServerRef.callLog.setOutputStream(out); } /** * Returns stream for the RMI call log. * @return the call log * @see #setLog * @since JDK1.1 */ public static java.io.PrintStream getLog() { return (logNull ? null : UnicastServerRef.callLog.getPrintStream()); } // initialize log status private static boolean logNull = !UnicastServerRef.logCalls; }