- 所有已实现的接口:
Closeable,AutoCloseable,Remote,RMIServer
- 已知子类:
RMIIIOPServerImpl,RMIJRMPServerImpl
表示连接器服务的 RMI 对象。远程客户端可以使用 newClient(Object) 方法建立连接。此方法返回表示连接的 RMI 对象。
用户代码通常不直接引用此类。 RMI 连接服务通常使用类 RMIConnectorServer 创建。远程客户端通常使用 JMXConnectorFactory 或通过实例化 RMIConnector 创建连接。
这是一个抽象类。具体的子类定义了客户端连接对象的细节。
- 自从:
- 1.5
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述protected voidclientClosed(RMIConnection client) makeClient创建的客户端连接关闭时调用的方法。voidclose()关闭此连接服务。protected abstract voidcloseClient(RMIConnection client) 关闭makeClient建立的客户端连接。protected abstract void由close()调用以关闭连接器服务。protected abstract voidexport()导出此 RMI 对象。获取此连接器服务使用的默认值ClassLoader。此连接器服务连接到的MBeanServer。protected abstract String返回此对象的协议字符串。此连接器服务理解的 RMI 连接器协议的版本。protected abstract RMIConnectionmakeClient(String connectionId, Subject subject) 创建新的客户端连接。创建新的客户端连接。void为此连接器服务设置默认值ClassLoader。void设置此连接器服务所连接的MBeanServer。abstract RemotetoStub()返回此服务对象的远程存根。
-
构造方法详细信息
-
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- 如果尝试关闭连接器服务失败。
-