java.lang.Object javax.management.remote.rmi.RMIServerImpl
表示连接器服务器的 RMI 对象。远程客户端可使用 newClient(Object)
方法进行连接。此方法返回表示此连接的 RMI 对象。
用户代码不经常直接引用此类。RMI 连接服务器通常使用 RMIConnectorServer
类创建。远程客户端通常使用 JMXConnectorFactory
或通过实例化 RMIConnector
创建连接。
这是一个抽象类。由具体的子类定义客户端连接对象的细节,例如使用的是 JRMP 还是 IIOP。
构造方法摘要 | |
---|---|
RMIServerImpl(Map<String,?> env) 构造一个新的 RMIServerImpl 。 |
方法摘要 | |
---|---|
protected void |
clientClosed(RMIConnection client) 关闭由 makeClient 创建的客户端连接时调用的方法。 |
void |
close() 关闭此连接服务器。 |
protected abstract void |
closeClient(RMIConnection client) 关闭由 makeClient 建立的客户端连接。 |
protected abstract void |
closeServer() 由 close() 调用以关闭连接器服务器。 |
protected abstract void |
export() 导出此 RMI 对象。 |
ClassLoader |
getDefaultClassLoader() 获得此连接器服务器使用的默认 ClassLoader 。 |
MBeanServer |
getMBeanServer() 此连接器服务器所连接的 MBeanServer 。 |
protected abstract String |
getProtocol() 返回该对象的协议字符串。 |
String |
getVersion() 此连接器服务器能识别的 RMI 连接协议版本。 |
protected abstract RMIConnection |
makeClient(String connectionId, Subject subject) 创建一个新的客户端连接。 |
RMIConnection |
newClient(Object credentials) 创建一个新的客户端连接。 |
void |
setDefaultClassLoader(ClassLoader cl) 设置此连接器服务器的默认 ClassLoader 。 |
void |
setMBeanServer(MBeanServer mbs) 设置此连接器服务器所连接的 MBeanServer 。 |
abstract Remote |
toStub() 返回此服务器对象的可远程化的 stub。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public RMIServerImpl(Map<String,?> env)
构造一个新的 RMIServerImpl
。
env
- 包含新的
RMIServerImpl
属性的环境。可以为 null,它等效于一个空映射。
方法详细信息 |
---|
protected abstract void export() throws IOException
导出此 RMI 对象。
IOException
- 如果无法导出此 RMI 对象。
public abstract Remote toStub() throws IOException
IOException
- 如果无法获得 stub,例如 RMIServerImpl 尚未导出。
public void setDefaultClassLoader(ClassLoader cl)
设置此连接器服务器的默认 ClassLoader
。新客户端连接将使用此 classloader。现有客户端连接不受影响。
cl
- 此连接器服务器将使用的新
ClassLoader
。
getDefaultClassLoader()
public ClassLoader getDefaultClassLoader()
获得此连接器服务器使用的默认 ClassLoader
。
ClassLoader
。
setDefaultClassLoader(java.lang.ClassLoader)
public void setMBeanServer(MBeanServer mbs)
设置此连接器服务器所连接的 MBeanServer
。新的客户端连接将与此 MBeanServer
交互。现有客户端连接不受影响。
mbs
- 新的
MBeanServer
。可以为 null,但将在尽可能长的时间内重用新的客户端连接。
getMBeanServer()
public MBeanServer getMBeanServer()
此连接器服务器所连接的 MBeanServer
。这是传递给此对象上的 setMBeanServer(javax.management.MBeanServer)
的最后一个值,或者如果从未调用过该方法,则为 null。
MBeanServer
。
setMBeanServer(javax.management.MBeanServer)
public String getVersion()
RMIServer
复制的描述
此连接器服务器能识别的 RMI 连接协议版本。这是一个具有以下格式的字符串:
protocol-version implementation-name
protocol-version
是由句点 (.
) 分隔的两个或多个非负整数组成的序列。这里,此文档描述的这一版本的实现必须使用字符串 1.0
。
协议版本后面必须有一个空格,然后是实现名称。实现名称的格式未指定。建议在其中包含一个实现版本号。例如,出于安全原因,实现可使用空字符串作为其实现名称。
RMIServer
中的
getVersion
public RMIConnection newClient(Object credentials) throws IOException
创建一个新的客户端连接。此方法调用 makeClient
并将返回的客户端连接对象添加到一个内部列表中。当此 RMIServerImpl
使用其 close()
方法被关闭时,将调用列表中剩余的每个对象的 close()
方法。
即使事实上一个客户端连接对象位于内部列表中,也不影响对其进行垃圾回收。
credentials
- 此对象指定用户定义的凭据,其传入此服务器以便在创建
RMIConnection
之前验证调用者。可以为 null。
RMIConnection
。这通常是由
makeClient
创建的对象,尽管实现可能选择将该对象包装在另一个实现
RMIConnection
的对象中。
IOException
- 如果无法创建或导出新的客户端对象。
SecurityException
- 如果给定的凭据不允许服务器成功地验证用户。
IllegalStateException
- 如果
getMBeanServer()
为 null。
protected abstract RMIConnection makeClient(String connectionId, Subject subject) throws IOException
创建一个新的客户端连接。此方法由公共方法 newClient(Object)
调用。
connectionId
- 新连接的 ID。由此连接器服务器打开的每个连接将具有不同的 ID。如果此参数为 null,则行为不明确。
subject
- 经验证的 subject。可以为 null。
RMIConnection
。
IOException
- 如果无法创建或导出新的客户端对象。
protected abstract void closeClient(RMIConnection client) throws IOException
关闭由 makeClient
建立的客户端连接。
client
- 由
makeClient
以前返回的一个连接,以前尚未在其上调用过
closeClient
方法。如果违反这些条件,包括
client
为 null 的情况,则行为不明确。
IOException
- 如果无法关闭客户端连接。
protected abstract String getProtocol()
返回该对象的协议字符串。对于 RMI/JRMP,该字符串为 rmi
;对于 RMI/IIOP,该字符串为 iiop
。
protected void clientClosed(RMIConnection client) throws IOException
关闭由 makeClient
创建的客户端连接时调用的方法。调用结果对象的 close
方法时,定义 makeClient
的子类必须安排此要调用的方法。这方便从 RMIServerImpl
的连接列表中将其移除。client
不在该列表中并不表示错误。
从连接列表中移除 client
后,此方法调用 closeClient(client)
。
client
- 已关闭的客户端连接。
IOException
- 如果
closeClient(javax.management.remote.rmi.RMIConnection)
抛出此异常。
NullPointerException
- 如果
client
为 null。
public void close() throws IOException
关闭此连接服务器。此方法首先调用 closeServer()
方法以便不接受任何新的客户端连接。然后对由 makeClient
返回的其余每个 RMIConnection
对象调用其 close
方法。
多次调用此方法时,行为不明确。
如果 closeServer()
抛出 IOException
,会关闭每个单独的连接,然后从此方法抛出 IOException
。
如果 closeServer()
正常返回,但有一个或多个单独连接抛出 IOException
,则在关闭所有的连接后,从此方法抛出其中的一个 IOException
。如果有多个连接抛出 IOException
,则无法确定哪一个异常是从此方法抛出的。
IOException
- 如果
closeServer()
或
RMIConnection.close()
之一调用抛出了
IOException
。
protected abstract void closeServer() throws IOException
由 close()
调用以关闭连接器服务器。从此方法返回后,连接器服务器不接受任何新的连接。
IOException
- 如果关闭连接器服务器的尝试失败。