Class RMIServerImpl

    • 构造方法详细信息

      • RMIServerImpl

        public RMIServerImpl​(Map<String,?> env)

        构造新的RMIServerImpl

        参数
        env - 包含新的属性的环境RMIServerImpl 可以为空,这相当于一个空的地图。
    • 方法详细信息

      • 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()
      • setMBeanServer

        public void setMBeanServer​(MBeanServer mbs)

        设置此连接器服务器所连接的MBeanServer 新的客户端连接将与此MBeanServer交互。 现有的客户端连接不受影响。

        参数
        mbs - 新的MBeanServer 可以为null,但是只要新的客户端连接将被拒绝。
        另请参见:
        getMBeanServer()
      • getVersion

        public String getVersion​()
        说明从接口RMIServer复制

        该连接器服务器了解的RMI连接器协议版本。 这是一个具有以下格式的字符串:

          protocol-version implementation-name 

        protocol-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

        结果
        该对象的协议字符串。
      • 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 - 如果尝试关闭连接器服务器失败。