Spring RMI服务器和纯Java RMI客户端

时间:2016-03-07 18:45:41

标签: java spring rmi

我有两个同伴通过RMI连接。在RMI服务器端,我使用Spring inerfaces(http://www.studytrails.com/frameworks/spring/spring-remoting-rmi.jsp)。在RMI客户端,我需要启动它,不知道服务器是否已启动。因此,如果我使用spring,我的客户端无法启动,并且我有连接拒绝异常。

<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
        <property name="serviceName" value="RestoreRMIService" />
        <property name="serviceInterface" value="br.com.eb.service.iscsi.RestoreService" />
        <property name="service" ref="restoreService" />
    </bean>

所以我尝试在客户端使用纯Java RMI(http://www.javacoffeebreak.com/articles/javarmi/javarmi.html)。但我得到的是ClassCastException:com.sun.proxy。$ Proxy73无法转换为br.com.eb.service.iscsi.RestoreService。我相信,因为我没有来自我的RMI服务器的存根。

我在客户端使用纯Java RMI,因为我需要能够重启服务器端。

protected void connectRMI() {
        if (!rmiConected) {
            try {
                Registry registry = LocateRegistry.getRegistry(1099);
                serviceRestore = (RestoreService) registry.lookup("RestoreRMIService");
                // serviceRestore = (RestoreService) Naming.lookup("rmi://127.0.0.1/RestoreRMIService");
                rmiConected = true;
            } catch (ConnectException ce) {
                System.err.println("Error: server not started");
                rmiConected = false;
            } catch (ConnectIOException cioe) {
                System.err.println("Error: Cannot connect to server at 127.0.0.1");
                rmiConected = false;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

1 个答案:

答案 0 :(得分:2)

  • 您不需要切换RMI实施只是为了解决拒绝连接的问题&#39;异常。
  • Java RMI被拒绝连接&#39;也是例外。
  • Java RMI和Spring RMI无法互操作。

    你的问题没有意义。