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