Class RMIServerImpl

    • 构造方法详细信息

      • RMIServerImpl

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

        构造一个新的RMIServerImpl

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

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

        public RMIConnection newClient​(Object credentials)
                                throws IOException

        创建新的客户端连接。 此方法调用makeClient并将返回的客户端连接对象添加到内部列表。 当通过其close()方法关闭此RMIServerImpl ,将调用列表中剩余的每个对象的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。 如果此参数为null,则不指定行为。
        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 - 如果尝试关闭连接器服务器失败。