public abstract class

RMIServerImpl

extends Object
implements Closeable RMIServer
java.lang.Object
   ↳ javax.management.remote.rmi.RMIServerImpl
Known Direct Subclasses

Class Overview

An RMI object representing a connector server. Remote clients can make connections using the newClient(Object) method. This method returns an RMI object representing the connection.

User code does not usually reference this class directly. RMI connection servers are usually created with the class RMIConnectorServer. Remote clients usually create connections either with JMXConnectorFactory or by instantiating RMIConnector.

This is an abstract class. Concrete subclasses define the details of the client connection objects, such as whether they use JRMP or IIOP.

Summary

Public Constructors
RMIServerImpl(Map<String, ?> env)

Constructs a new RMIServerImpl.

Public Methods
synchronized void close()

Closes this connection server.

synchronized ClassLoader getDefaultClassLoader()

Gets the default ClassLoader used by this connector server.

synchronized MBeanServer getMBeanServer()

The MBeanServer to which this connector server is attached.

String getVersion()

The version of the RMI Connector Protocol understood by this connector server.

RMIConnection newClient(Object credentials)

Creates a new client connection.

synchronized void setDefaultClassLoader(ClassLoader cl)

Sets the default ClassLoader for this connector server.

synchronized void setMBeanServer(MBeanServer mbs)

Sets the MBeanServer to which this connector server is attached.

abstract Remote toStub()
Returns a remotable stub for this server object.
Protected Methods
void clientClosed(RMIConnection client)

Method called when a client connection created by makeClient is closed.

abstract void closeClient(RMIConnection client)

Closes a client connection made by makeClient.

abstract void closeServer()

Called by close() to close the connector server.

abstract void export()

Exports this RMI object.

abstract String getProtocol()

Returns the protocol string for this object.

abstract RMIConnection makeClient(String connectionId, Subject subject)

Creates a new client connection.

[Expand]
Inherited Methods
From class java.lang.Object
From interface java.io.Closeable
From interface javax.management.remote.rmi.RMIServer

Public Constructors

public RMIServerImpl (Map<String, ?> env)

Constructs a new RMIServerImpl.

Parameters
env the environment containing attributes for the new RMIServerImpl. Can be null, which is equivalent to an empty Map.

Public Methods

public synchronized void close ()

Closes this connection server. This method first calls the closeServer() method so that no new client connections will be accepted. Then, for each remaining RMIConnection object returned by makeClient, its close method is called.

The behavior when this method is called more than once is unspecified.

If closeServer() throws an IOException, the individual connections are nevertheless closed, and then the IOException is thrown from this method.

If closeServer() returns normally but one or more of the individual connections throws an IOException, then, after closing all the connections, one of those IOExceptions is thrown from this method. If more than one connection throws an IOException, it is unspecified which one is thrown from this method.

Throws
IOException if closeServer() or one of the close() calls threw IOException.

public synchronized ClassLoader getDefaultClassLoader ()

Gets the default ClassLoader used by this connector server.

Returns
  • the default ClassLoader used by this connector server.

public synchronized MBeanServer getMBeanServer ()

The MBeanServer to which this connector server is attached. This is the last value passed to setMBeanServer(MBeanServer) on this object, or null if that method has never been called.

Returns
  • the MBeanServer to which this connector is attached.

public String getVersion ()

The version of the RMI Connector Protocol understood by this connector server. This is a string with the following format:

 protocol-version implementation-name
 

The protocol-version is a series of two or more non-negative integers separated by periods (.). An implementation of the version described by this documentation must use the string 1.0 here.

After the protocol version there must be a space, followed by the implementation name. The format of the implementation name is unspecified. It is recommended that it include an implementation version number. An implementation can use an empty string as its implementation name, for example for security reasons.

Returns
  • a string with the format described here.

public RMIConnection newClient (Object credentials)

Creates a new client connection. This method calls makeClient and adds the returned client connection object to an internal list. When this RMIServerImpl is shut down via its close() method, the close() method of each object remaining in the list is called.

The fact that a client connection object is in this internal list does not prevent it from being garbage collected.

Parameters
credentials this object specifies the user-defined credentials to be passed in to the server in order to authenticate the caller before creating the RMIConnection. Can be null.
Returns
  • the newly-created RMIConnection. This is usually the object created by makeClient, though an implementation may choose to wrap that object in another object implementing RMIConnection.
Throws
IOException if the new client object cannot be created or exported.
SecurityException if the given credentials do not allow the server to authenticate the user successfully.
IllegalStateException if getMBeanServer() is null.

public synchronized void setDefaultClassLoader (ClassLoader cl)

Sets the default ClassLoader for this connector server. New client connections will use this classloader. Existing client connections are unaffected.

Parameters
cl the new ClassLoader to be used by this connector server.

public synchronized void setMBeanServer (MBeanServer mbs)

Sets the MBeanServer to which this connector server is attached. New client connections will interact with this MBeanServer. Existing client connections are unaffected.

Parameters
mbs the new MBeanServer. Can be null, but new client connections will be refused as long as it is.
See Also

public abstract Remote toStub ()

Returns a remotable stub for this server object.

Returns
  • a remotable stub.
Throws
IOException if the stub cannot be obtained - e.g the RMIServerImpl has not been exported yet.

Protected Methods

protected void clientClosed (RMIConnection client)

Method called when a client connection created by makeClient is closed. A subclass that defines makeClient must arrange for this method to be called when the resultant object's close method is called. This enables it to be removed from the RMIServerImpl's list of connections. It is not an error for client not to be in that list.

After removing client from the list of connections, this method calls closeClient(client).

Parameters
client the client connection that has been closed.
Throws
IOException if closeClient(RMIConnection) throws this exception.
NullPointerException if client is null.

protected abstract void closeClient (RMIConnection client)

Closes a client connection made by makeClient.

Parameters
client a connection previously returned by makeClient on which the closeClient method has not previously been called. The behavior is unspecified if these conditions are violated, including the case where client is null.
Throws
IOException if the client connection cannot be closed.

protected abstract void closeServer ()

Called by close() to close the connector server. After returning from this method, the connector server must not accept any new connections.

Throws
IOException if the attempt to close the connector server failed.

protected abstract void export ()

Exports this RMI object.

Throws
IOException if this RMI object cannot be exported.

protected abstract String getProtocol ()

Returns the protocol string for this object. The string is rmi for RMI/JRMP and iiop for RMI/IIOP.

Returns
  • the protocol string for this object.

protected abstract RMIConnection makeClient (String connectionId, Subject subject)

Creates a new client connection. This method is called by the public method newClient(Object).

Parameters
connectionId the ID of the new connection. Every connection opened by this connector server will have a different ID. The behavior is unspecified if this parameter is null.
subject the authenticated subject. Can be null.
Returns
  • the newly-created RMIConnection.
Throws
IOException if the new client object cannot be created or exported.