- 所有已实现的接口:
Closeable
,AutoCloseable
,Remote
,RMIServer
- 已知子类:
RMIIIOPServerImpl
,RMIJRMPServerImpl
表示连接器服务的 RMI 对象。远程客户端可以使用 newClient(Object)
方法建立连接。此方法返回表示连接的 RMI 对象。
用户代码通常不直接引用此类。 RMI 连接服务通常使用类 RMIConnectorServer
创建。远程客户端通常使用 JMXConnectorFactory
或通过实例化 RMIConnector
创建连接。
这是一个抽象类。具体的子类定义了客户端连接对象的细节。
- 自从:
- 1.5
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述protected void
clientClosed
(RMIConnection client) makeClient
创建的客户端连接关闭时调用的方法。void
close()
关闭此连接服务。protected abstract void
closeClient
(RMIConnection client) 关闭makeClient
建立的客户端连接。protected abstract void
由close()
调用以关闭连接器服务。protected abstract void
export()
导出此 RMI 对象。获取此连接器服务使用的默认值ClassLoader
。此连接器服务连接到的MBeanServer
。protected abstract String
返回此对象的协议字符串。此连接器服务理解的 RMI 连接器协议的版本。protected abstract RMIConnection
makeClient
(String connectionId, Subject subject) 创建新的客户端连接。创建新的客户端连接。void
为此连接器服务设置默认值ClassLoader
。void
设置此连接器服务所连接的MBeanServer
。abstract Remote
toStub()
返回此服务对象的远程存根。
-
构造方法详细信息
-
RMIServerImpl
构造一个新的
RMIServerImpl
.- 参数:
env
- 包含新RMIServerImpl
属性的环境。可以为null,相当于一个空的Map。
-
-
方法详情
-
export
导出此 RMI 对象。
- 抛出:
IOException
- 如果无法导出此 RMI 对象。
-
toStub
返回此服务对象的远程存根。- 返回:
- 一个远程存根。
- 抛出:
IOException
- 如果无法获取存根 - 例如 RMIServerImpl 尚未导出。
-
setDefaultClassLoader
为此连接器服务设置默认值
ClassLoader
。新的客户端连接将使用这个类加载器。现有客户端连接不受影响。- 参数:
cl
- 此连接器服务要使用的新ClassLoader
。- 参见:
-
getDefaultClassLoader
获取此连接器服务使用的默认值
ClassLoader
。- 返回:
-
此连接器服务使用的默认
ClassLoader
。 - 参见:
-
setMBeanServer
设置此连接器服务所连接的
MBeanServer
。新的客户端连接将与此MBeanServer
交互。现有客户端连接不受影响。- 参数:
mbs
- 新的MBeanServer
。可以为空,但只要为空,新的客户端连接就会被拒绝。- 参见:
-
getMBeanServer
此连接器服务连接到的
MBeanServer
。这是传递给此对象上的setMBeanServer(javax.management.MBeanServer)
的最后一个值,如果从未调用过该方法,则为 null。- 返回:
-
该连接器所连接的
MBeanServer
。 - 参见:
-
getVersion
从接口RMIServer
复制的描述此连接器服务理解的 RMI 连接器协议的版本。这是一个具有以下格式的字符串:
protocol-version implementation-name
protocol-version
是一系列由句点 (.
) 分隔的两个或多个非负整数。本文档描述的版本的实现必须在此处使用字符串1.0
。在协议版本之后必须有一个空格,然后是实现名称。实现名称的格式未指定。建议它包含一个实现版本号。例如出于安全原因,实现可以使用空字符串作为其实现名称。
- 指定者:
getVersion
在接口RMIServer
中- 返回:
- 具有此处描述的格式的字符串。
-
newClient
创建新的客户端连接。此方法调用
makeClient
并将返回的客户端连接对象添加到内部列表。当通过其close()
方法关闭此RMIServerImpl
时,将调用列表中剩余的每个对象的close()
方法。客户端连接对象在此内部列表中的事实并不能阻止它被垃圾收集。
- 指定者:
newClient
在接口RMIServer
中- 参数:
credentials
- 此对象指定要传递到服务的用户定义凭据,以便在创建RMIConnection
之前对调用者进行身份验证。可以为空。- 返回:
-
新创建的
RMIConnection
。这通常是由makeClient
创建的对象,尽管实现可能会选择将该对象包装在另一个实现RMIConnection
的对象中。 - 抛出:
IOException
- 如果无法创建或导出新的客户端对象。SecurityException
- 如果给定的凭据不允许服务成功验证用户。IllegalStateException
- 如果getMBeanServer()
为空。
-
makeClient
protected abstract RMIConnection makeClient(String connectionId, Subject subject) throws IOException 创建新的客户端连接。此方法由公共方法
newClient(Object)
调用。- 参数:
connectionId
- 新连接的 ID。此连接器服务打开的每个连接都将具有不同的 ID。如果此参数为空,则行为未指定。subject
- 经过身份验证的主题。可以为空。- 返回:
-
新创建的
RMIConnection
。 - 抛出:
IOException
- 如果无法创建或导出新的客户端对象。
-
closeClient
关闭
makeClient
建立的客户端连接。- 参数:
client
- 之前由makeClient
返回的连接,之前未在其上调用closeClient
方法。如果违反这些条件,则行为未指定,包括client
为 null 的情况。- 抛出:
IOException
- 如果无法关闭客户端连接。
-
getProtocol
返回此对象的协议字符串。对于 RMI/JRMP,字符串是
rmi
。- 返回:
- 此对象的协议字符串。
-
clientClosed
makeClient
创建的客户端连接关闭时调用的方法。定义makeClient
的子类必须安排在调用结果对象的close
方法时调用此方法。这使得它可以从RMIServerImpl
的连接列表中删除。client
不在该列表中并不是错误。从连接列表中删除
client
后,此方法调用closeClient(client)
。- 参数:
client
- 已关闭的客户端连接。- 抛出:
IOException
- 如果closeClient(javax.management.remote.rmi.RMIConnection)
抛出此异常。NullPointerException
- 如果client
为空。
-
close
关闭此连接服务。此方法首先调用
closeServer()
方法,因此不会接受新的客户端连接。然后,对于makeClient
返回的每个剩余RMIConnection
对象,调用其close
方法。多次调用此方法时的行为未指定。
如果
closeServer()
抛出IOException
,各个连接仍然关闭,然后IOException
从此方法中抛出。如果
closeServer()
正常返回,但一个或多个单独的连接抛出IOException
,则在关闭所有连接后,将从此方法抛出其中一个IOException
。如果多个连接抛出IOException
,则未指定从该方法抛出哪一个。- 指定者:
close
在接口AutoCloseable
中- 指定者:
close
在接口Closeable
中- 抛出:
IOException
- 如果closeServer()
或RMIConnection.close()
调用之一抛出IOException
。
-
closeServer
由
close()
调用以关闭连接器服务。从此方法返回后,连接器服务不得接受任何新连接。- 抛出:
IOException
- 如果尝试关闭连接器服务失败。
-