【问题标题】:Spring RMI server and pure java RMI clientSpring RMI 服务器和纯 java RMI 客户端
【发布时间】:2016-03-07 18:45:40
【问题描述】:

我有两个通过 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();
            }
        }
    }

【问题讨论】:

    标签: java spring rmi


    【解决方案1】:
    • 您不需要仅仅为了解决“连接被拒绝”异常而切换 RMI 实现。

    • Java RMI 也出现“连接被拒绝”异常。

    • Java RMI 和 Spring RMI 不能互操作。

      你的问题没有意义。

    【讨论】:

    猜你喜欢
    • 2023-03-12
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    相关资源
    最近更新 更多