| |||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public abstract class RMIServerImpl extends Object implements Closeable, RMIServer
An RMI object representing a connector server. Remote clients can make connections using the {@link #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 {@link RMIConnectorServer}. Remote clients usually create connections either with {@link javax.management.remote.JMXConnectorFactory} or by instantiating {@link RMIConnector}.
This is an abstract class. Concrete subclasses define the details of the client connection objects, such as whether they use JRMP or IIOP.
Constructor Summary | |
---|---|
RMIServerImpl(Map env) Constructs a new RMIServerImpl .
|
Method Summary | |
---|---|
protected void |
clientClosed(RMIConnection client) Method called when a client connection created by javax.management.remote.rmi.RMIServerImpl.makeClient is closed. |
void |
close() Closes this connection server. |
protected abstract void |
closeClient(RMIConnection client) Closes a client connection made by javax.management.remote.rmi.RMIServerImpl.makeClient. |
protected abstract void |
Called by javax.management.remote.rmi.RMIServerImpl.close to close the connector server. |
protected abstract void |
export() Exports this RMI object. |
ClassLoader |
Gets the default ClassLoader used by this connector
server.
|
MBeanServer |
The MBeanServer to which this connector server
is attached.
|
protected abstract String |
Returns the protocol string for this object. |
String |
|
protected abstract RMIConnection |
makeClient(String connectionId, Subject subject) Creates a new client connection. |
RMIConnection |
Creates a new client connection. |
void |
Sets the default ClassLoader for this connector
server.
|
void |
Sets the MBeanServer to which this connector
server is attached.
|
abstract Remote |
toStub() Returns a remotable stub for this server object. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public RMIServerImpl(Map env)
Constructs a new RMIServerImpl
.
env
- the environment containing attributes for the new
RMIServerImpl
. Can be null, which is equivalent
to an empty Map.Method Detail |
---|
protected void clientClosed(RMIConnection client) throws IOException
Method called when a client connection created by {@link
#makeClient makeClient} is closed. A subclass that defines
makeClient
must arrange for this method to be
called when the resultant object's {@link RMIConnection#close()
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 {@link #closeClient
closeClient(client)}.
client
- the client connection that has been closed.IOException
- if {@link #closeClient} throws this
exception.public synchronized void close() throws IOException
Closes this connection server. This method first calls the {@link #closeServer()} method so that no new client connections will be accepted. Then, for each remaining {@link RMIConnection} object returned by {@link #makeClient makeClient}, its {@link RMIConnection#close() close} method is called.
The behavior when this method is called more than once is unspecified.
If {@link #closeServer()} throws an
IOException
, the individual connections are
nevertheless closed, and then the IOException
is
thrown from this method.
If {@link #closeServer()} returns normally but one or more
of the individual connections throws an
IOException
, then, after closing all the
connections, one of those IOException
s is thrown
from this method. If more than one connection throws an
IOException
, it is unspecified which one is thrown
from this method.
IOException
- if {@link #closeServer()} or one of the
{@link RMIConnection#close()} calls threw
IOException
.protected abstract void closeClient(RMIConnection client) throws IOException
Closes a client connection made by {@link #makeClient makeClient}.
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.IOException
- if the client connection cannot be
closed.protected abstract void closeServer() throws IOException
Called by {@link #close()} to close the connector server. After returning from this method, the connector server must not accept any new connections.
IOException
- if the attempt to close the connector
server failed.protected abstract void export() throws IOException
Exports this RMI object.
IOException
- if this RMI object cannot be exported.public synchronized ClassLoader getDefaultClassLoader()
Gets the default ClassLoader
used by this connector
server.
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 {@link
#setMBeanServer} on this object, or null if that method has
never been called.
MBeanServer
to which this connector
is attached.protected abstract String getProtocol()
Returns the protocol string for this object. The string is
rmi
for RMI/JRMP and iiop
for RMI/IIOP.
public String getVersion()
protected abstract RMIConnection makeClient(String connectionId, Subject subject) throws IOException
Creates a new client connection. This method is called by the public method {@link #newClient(Object)}.
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.RMIConnection
.IOException
- if the new client object cannot be
created or exported.public RMIConnection newClient(Object credentials) throws IOException
Creates a new client connection. This method calls {@link
#makeClient makeClient} and adds the returned client connection
object to an internal list. When this
RMIServerImpl
is shut down via its {@link
#close()} method, the {@link RMIConnection#close() 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.
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.RMIConnection
. This is
usually the object created by makeClient
, though
an implementation may choose to wrap that object in another
object implementing RMIConnection
.IOException
- if the new client object cannot be
created or exported.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.
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.
mbs
- the new MBeanServer
. Can be null, but
new client connections will be refused as long as it is.public abstract Remote toStub() throws IOException
IOException
- if the stub cannot be obtained - e.g the
RMIServerImpl has not been exported yet.
| |||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |