- 所有已实现的接口:
-
Closeable,AutoCloseable,Remote,RMIServer
- 直接已知的子类:
-
RMIJRMPServerImpl
表示连接器服务器的RMI对象。远程客户端可以使用newClient(Object)方法建立连接。此方法返回表示连接的RMI对象。
用户代码通常不直接引用此类。RMI连接服务器通常使用类RMIConnectorServer创建。远程客户端通常使用JMXConnectorFactory或实例化RMIConnector来创建连接。
这是一个抽象类。具体的子类定义了客户端连接对象的详细信息。
- 自版本:
- 1.5
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected 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()返回此服务器对象的可远程存根。
-
Constructor Details
-
RMIServerImpl
构造一个新的
RMIServerImpl。- 参数:
-
env- 包含新RMIServerImpl属性的环境。可以为null,相当于一个空Map。
-
-
Method Details
-
export
导出此RMI对象。
- 抛出:
-
IOException- 如果无法导出此RMI对象。
-
toStub
返回此服务器对象的可远程存根。- 返回:
- 一个可远程存根。
- 抛出:
-
IOException- 如果无法获取存根 - 例如RMIServerImpl尚未导出。
-
setDefaultClassLoader
为此连接器服务器设置默认
ClassLoader。新的客户端连接将使用此类加载器。现有客户端连接不受影响。- 参数:
-
cl- 要由此连接器服务器使用的新ClassLoader。 - 参见:
-
getDefaultClassLoader
获取此连接器服务器使用的默认
ClassLoader。- 返回:
-
此连接器服务器使用的默认
ClassLoader。 - 参见:
-
setMBeanServer
设置此连接器服务器附加的
MBeanServer。新的客户端连接将与此MBeanServer交互。现有客户端连接不受影响。- 参数:
-
mbs- 新的MBeanServer。可以为null,但只要为null,新的客户端连接将被拒绝。 - 参见:
-
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之前进行身份验证。可以为null。 - 返回:
-
新创建的
RMIConnection。通常是由makeClient创建的对象,尽管实现可以选择将该对象包装在另一个实现RMIConnection的对象中。 - 抛出:
-
IOException- 如果无法创建或导出新的客户端对象。 -
SecurityException- 如果给定的凭据不允许服务器成功验证用户。 -
IllegalStateException- 如果getMBeanServer()为null。
-
makeClient
protected abstract RMIConnection makeClient(String connectionId, Subject subject) throws IOException 创建一个新的客户端连接。此方法由公共方法
newClient(Object)调用。- 参数:
-
connectionId- 新连接的ID。由此连接器服务器打开的每个连接将具有不同的ID。如果此参数为null,则行为未指定。 -
subject- 经过身份验证的主体。可以为null。 - 返回:
-
新创建的
RMIConnection。 - 抛出:
-
IOException- 如果无法创建或导出新的客户端对象。
-
closeClient
关闭由
makeClient创建的客户端连接。- 参数:
-
client- 先前由makeClient返回的连接,其closeClient方法以前未被调用。如果违反这些条件,包括client为null的情况,行为未指定。 - 抛出:
-
IOException- 如果无法关闭客户端连接。
-
getProtocol
返回此对象的协议字符串。字符串为
rmi表示RMI/JRMP。- 返回:
- 此对象的协议字符串。
-
clientClosed
当由
makeClient创建的客户端连接关闭时调用的方法。定义了makeClient的子类必须安排在结果对象的close方法被调用时调用此方法。这使得它可以从RMIServerImpl的连接列表中移除。如果client不在该列表中,这并不是一个错误。在从连接列表中移除
client之后,此方法调用closeClient(client)。- 参数:
-
client- 已关闭的客户端连接。 - 抛出:
-
IOException- 如果closeClient(javax.management.remote.rmi.RMIConnection)抛出此异常。 -
NullPointerException- 如果client为null。
-
close
关闭此连接服务器。此方法首先调用
closeServer()方法,以便不再接受新的客户端连接。然后,对于由makeClient返回的每个剩余的RMIConnection对象,将调用其close方法。当多次调用此方法时的行为未指定。
如果
closeServer()抛出IOException,则仍然关闭各个连接,然后从此方法抛出IOException。如果
closeServer()正常返回但一个或多个单独的连接抛出IOException,则在关闭所有连接后,将从此方法抛出其中一个IOException。如果多个连接抛出IOException,则未指定从此方法抛出哪一个。- 指定者:
-
close在接口AutoCloseable - 指定者:
-
close在接口Closeable - 抛出:
-
IOException- 如果closeServer()或一个RMIConnection.close()调用抛出IOException。
-
closeServer
由
close()调用以关闭连接器服务器。从此方法返回后,连接器服务器不得接受任何新连接。- 抛出:
-
IOException- 如果尝试关闭连接器服务器失败。
-