`
Nightlee
  • 浏览: 67302 次
社区版块
存档分类
最新评论

Spring rmi 服务器IP配置

    博客分类:
  • JAVA
阅读更多
使用Spring配置rmi出现的问题。



在本地测试通过后,发布到linux后发现有这样的问题

错误内容是:
org.springframework.remoting.RemoteConnectFailureException: Cannot connect to remote service [rmi://192.168.0.106:1199/HelloService]; nested exception is java.rmi.ConnectException: Connection refused to host: 127.0.0.1;
nested exception is:
java.net.ConnectException: Connection refused
java.rmi.ConnectException: Connection refused to host: 127.0.0.1;
nested exception is:
java.net.ConnectException: Connection refused
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:574)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:94)
at org.springframework.remoting.rmi.RmiInvocationWrapper_Stub.invoke(Unknown Source)
at org.springframework.remoting.rmi.RmiClientInterceptor.doInvoke(RmiClientInterceptor.java:347)
at org.springframework.remoting.rmi.RmiClientInterceptor.doInvoke(RmiClientInterceptor.java:294)
at org.springframework.remoting.rmi.RmiClientInterceptor.invoke(RmiClientInterceptor.java:209)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)



多方google后发现网上给出的解释是:




<sysproperty key="java.rmi.server.hostname" value="向客户端暴露的ip"/>

配置RMI启动时的IP

否则spring的rmi 客户端可能无法访问服务端。因为rmi在linux上默认取的localhost是127.0.0.1。

The java.rmi.server.hostname property specifies the host name or address to put in the stubs for remote objects exported in this Java virtual machine. This value is the host name or address used by clients when they attempt to communicate remote method invocations. By default, the RMI implementation uses the server's IP address as indicated by the java.net.InetAddress.getLocalHost API. However, sometimes, this address is not appropriate for all clients and a fully qualified host name would be more effective. To ensure that RMI uses a host name (or IP address) for the server that is routable from all potential clients, set the java.rmi.server.hostname property.

  但找了半天,spring配置文档中没有发现sysproperty 这种写法

<sysproperty key="java.rmi.server.hostname" value="向客户端暴露的ip"/>

查看源代码

<property name="registryPort">
            <value>8088</value>
        </property>

  <!-- 向客户端暴露的IP地址 -->
     <property name="registryHost">
         <value>222.*.*.*</value>
     </property>



这个是典型的服务器有多个ip引起的rmi连接问题,解决办法非常简单

就是在客户端代码中指定要连接rmi服务器ip。  


System.setProperty("java.rmi.server.hostname ", "XX.XX.XX.59");


非常感谢!现在问题已经解决了。System.setProperty这段代码是加在服务器端的。
分享到:
评论
1 楼 jrius 2011-04-03  
如果rmi是的端口是通过nat映射出去的,就有问题,有没有好的办法解决?

相关推荐

    spring RMI 远程接口调用

    4. **启动RMI服务器**:使用`RMIServerSocketFactory`和`RMIClientSocketFactory`设置自定义的服务器和客户端工厂,然后启动RMI服务器。 客户端的实现主要包括: 1. **获取远程对象引用**:通过`Naming.lookup()`...

    RMI-IIOP 基于SUN

    Spring提供了一套完整的支持RMI-IIOP的工具和配置,使得集成变得简单而灵活。 在资源包"RMI-IIOP"中,可能包含以下内容: 1. 说明文件:详细解释了RMI-IIOP的概念、配置和使用步骤,可能包括如何设置ORB,如何创建...

    对 RMI 的简单理解

    - **通信协议**:RMI使用TCP/IP进行网络通信,通过序列化对象和方法调用信息在客户端与服务器之间传递。 3. **RMI注册表**: - RMI注册表是RMI系统的核心组件,它由`rmiregistry`程序启动。默认情况下,RMI注册表...

    dubbo 服务端与客户端配置

    资源使用springMvc+spring+mabatis+dubbo分布式框架搭建完成,该资源完成了客户端与服务端rmi,dubbo,hessian多协议的支持。下载后配置zookeeper服务注册中心及数据源即可运行 其中有几个测试案例及完整的登陆测试

    RMI远程调用DEMO....

    Java Remote Method Invocation (RMI) ...虽然现代的Java开发中,RMI可能不是首选的分布式计算技术(例如,Spring框架的远程服务支持更为流行),但对于理解分布式系统原理和Java网络编程,RMI仍然是一个重要的学习点。

    RMI分布式应用程序

    Registry registry = LocateRegistry.getRegistry("服务器IP", 1099); UserService userService = (UserService) registry.lookup("UserService"); ``` 5. **进行远程方法调用**:现在客户端可以像操作本地对象一样...

    springcloud4-10.docx

    5,SpringCloud Alibaba:SpringCloud Alibaba 提供了一套微服务解决方案,其中包括服务注册与发现(Nacos)、配置中心(Nacos)、API 网关(SOFARPC Gateway)、服务跟踪(Sleuth + Zipkin)、分布式事务(Seata)...

    spring-rpc-case

    标题“spring-rpc-case”指的是一个关于Spring RPC的案例研究,RPC(Remote Procedure Call)是远程过程调用,一种在分布式系统中实现客户端与服务器端通信的技术。Spring框架提供了Spring RPC支持,允许开发者构建...

    一个使用Java实现的网络游戏服务器框架.zip

    Java的RMI(远程方法调用)和JMS(Java消息服务)可以实现服务器间的通信。 3. **状态同步**:为确保游戏公平,服务器需要同步所有玩家的状态。这可能通过TCP/IP协议实现,Java的Socket编程接口为此提供了支持。 ...

    CS290B-H1:作业1

    作业 1 实现 Java RMI 服务器和客户端来计算 Mandelbrot 集和旅行商最短路线。 伊桑·普雷布尔和格雷格·帕森斯CS290B 以 Java 为中心的集群计算2015 年Spring,加州大学... 将服务器的 IP 地址替换为“localhost”。

    ClientServer:学习客户端服务器

    客户端则通过Socket连接到服务器的IP地址和端口号,进行通信。 另外,Java还提供了更高级的网络编程API,如Java Naming and Directory Interface (JNDI) 用于查找和绑定网络资源,Java Message Service (JMS) 用于...

    dwr的几个小例子,dwr的几个小例子

    DWR提供了一些安全特性,如CSRF(Cross-Site Request Forgery)防护、白名单配置以及IP过滤等,以防止恶意的远程调用。 7. **错误处理**: 当服务器端出现异常时,DWR会将错误信息传递回客户端,可以通过...

    java面试题目汇集

    6. **通信机制**:Stub和Skeleton之间的通信通常是基于TCP/IP的Socket连接,通过ObjectOutputStream和ObjectInputStream进行对象的序列化和反序列化,以便在网络中传输。 7. **异常处理**:如果在调用过程中发生...

    Java远程技术.pdf

    - Spring Remoting:Spring框架提供的远程方法调用支持。 - ActiveMQ:一个开源的消息代理和面向消息的中间件。 - Mule ESB:一个开源的企业服务总线。 Java远程技术广泛应用于各种需要远程通信的Java应用开发中...

    ehcache学习文档

    - 配置 Spring 的缓存管理器,将其绑定到 Ehcache 的 `CacheManager`。 - 定义缓存的别名,与 Ehcache 配置文件中的缓存名称相匹配。 - 使用 `@Cacheable`、`@CachePut` 和 `@CacheEvict` 等注解来标记需要缓存的...

    DWR中文文档(PDF)

    同时,你可以设置安全策略,如限制IP地址、使用白名单等,以确保只有授权的请求能够通过DWR。 DWR与其他流行框架如Servlet、Spring、JSF(JavaServer Faces)和Struts的集成是其强大之处。例如,与Spring框架结合,...

    DistributedVideoConversor:该项目使您能够在您配置的服务器上转换视频。 目标是在具有更高硬件要求的计算机中转换视频,从而在更少的时间内转换视频。 在此项目中,使用了Java RMI技术

    * The syntax to call ... The program have 3: * * send * * receive * * convert * * 2º parametro: server's ip * * ex: 127.0.0.1 * * Depending of the command that you give, we will have the 3º, 4ª, ...

    java方向上要学习的知识

    - **服务器配置与管理**:了解Tomcat等Web服务器的配置与管理。 - **远程API**:学习RMI、RMI/IIOP等远程调用技术。 - **标准与规范**:了解Java相关的各种标准与规范,如Java EE、Java SE等。 通过以上内容的学习...

    Java网络编程与分布式计算

    分布式计算通常涉及到多个节点(如服务器)之间的协作,Java的RMI(Remote Method Invocation)是实现这一目标的关键技术。RMI允许对象在不同的JVM之间进行远程调用,仿佛它们都在同一进程中。此外,Java的JMS(Java...

Global site tag (gtag.js) - Google Analytics