- 所有已实现的接口:
-
Closeable
,AutoCloseable
,Remote
,RMIServer
- 直接已知的子类:
-
RMIJRMPServerImpl
表示连接器服务器的RMI对象。远程客户端可以使用newClient(Object)
方法建立连接。此方法返回表示连接的RMI对象。
用户代码通常不直接引用此类。RMI连接服务器通常使用类RMIConnectorServer
创建。远程客户端通常使用JMXConnectorFactory
或实例化RMIConnector
来创建连接。
这是一个抽象类。具体的子类定义了客户端连接对象的详细信息。
- 自版本:
- 1.5
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected 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()
返回此服务器对象的可远程存根。
-
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
- 如果尝试关闭连接器服务器失败。
-