出错堆栈:
org.springframework.remoting.RemoteConnectFailureException: Cannot connect to remote service [rmi://192.168.2.61/Service]; nested exception is java.rmi.ConnectException: Connection refused to host: 192.168.7.11; nested exception is:
java.net.ConnectException: Connection timed out: connect
很奇怪,rmi访问的url是对的,但是后续的访问得到的IP却是双网卡中的另外一个无法访问的。
在本机做个简单试验:
System.out.println(UnicastRemoteObject.exportObject(new Remote(){},0));
输出:
Proxy[Remote,RemoteObjectInvocationHandler[UnicastRef [liveRef: [endpoint:[192.168.2.3:2339](local),objID:[0]]]]]
说明对象在没有注册出去的时候其IP就已经决定,绑定出去以后客户端就按照这个IP按图索骥。Server端有两个网卡,乱找一个就Over了。
这种方式对分布式对象注册很有用,但是碰到多IP的情况下就比较弱智了。sun的faq上给出一个简单答案:
http://java.sun.com/j2se/1.5.0/docs/guide/rmi/faq.html#netmultihomed
一句话:
System.setProperty("java.rmi.server.hostname","192.168.2.3");//建议从配置文件加载。
//解决连接超时
System.setProperty("sun.rmi.transport.tcp.responseTimeout", new Integer(Integer.MAX_VALUE).toString());
分享到:
相关推荐
具体到实验文件"rmi",这可能是RMI相关代码或者教程的集合,可能包含了服务器端和客户端的示例代码,以及如何在Java中设置和运行RMI服务的说明。"cs"可能代表"Client-Server",也就是客户端-服务器相关的文件,可能...
在Java的远程方法调用(Remote Method Invocation, RMI)技术中,客户端和服务端的交互是实现分布式系统的关键。RMI允许一个Java对象在一台计算机上执行另一个计算机上的对象的方法,就像是本地调用一样。本示例将...
在描述中提到的"多线程服务器"部分,可能会涵盖如何创建和管理线程,以及如何在多线程环境下确保数据的安全性。 最后,远程方法调用(RMI)是Java提供的一个特性,允许在不同的Java虚拟机(JVM)之间调用方法,跨越...
- 处理并发访问,尤其是在多客户端环境。 - 考虑异常处理,特别是`RemoteException`,这是RMI调用中常见的异常类型。 - 配置安全策略,因为RMI可以跨越网络,因此需要关注安全性。 总结,RMI是Java中强大的分布式...
在RMI中,通常有两种角色:服务器(Server)和客户端(Client)。服务器提供服务,客户端通过网络调用这些服务。本示例中,"RMI 服务器与客户端源码"很可能是为了教学目的设计的,适合初学者了解RMI的基本工作原理和...
本项目"rmi服务端与客户端小程序"提供了简单易懂的示例,帮助初学者快速理解和上手RMI。 1. **RMI基本概念** - **远程对象**:在远程JVM上运行的对象,可以通过RMI接口被本地对象调用。 - **接口**:定义了远程...
RMI使得客户端能够调用运行在远程服务器上的对象的方法,就像调用本地对象一样。这个过程涉及到一系列复杂的步骤,包括序列化、远程接口定义、注册表服务和反序列化等。 首先,我们要理解RMI的基本概念。在RMI中,...
在提供的压缩包文件"shiyan1test_2010813046"中,可能包含了RMI或RMI-IIOP的示例代码,这些代码可以帮助你理解上述原理并实践客户端和服务器的交互。通过分析和运行这些代码,你可以更深入地了解RMI和RMI-IIOP的工作...
rmi技术客户端调用服务器的函数解决问题 刚刚开始准备这个rmi作业的时候,我都有点无从下手。于是我先开始一起找资料,看书,经过不断的尝试编码,以及总结错误,为后期的工作奠定了基础。 在基础知识基本搞定的...
在高并发场景下,多线程技术使得服务器能同时处理多个请求,提高服务效率。在Java中,可以使用Thread类或Runnable接口来创建线程。服务器需要监听特定端口,接收到请求后,创建新的线程来处理,从而避免了单线程模型...
在Java编程环境中,远程方法调用(Remote Method Invocation,RMI)是一种强大的技术,它允许一个Java对象在某个JVM(Java虚拟机)上执行另一个JVM中的对象的方法。RMI是分布式计算的基础,尤其在构建分布式应用时,...
- **异常处理**:RMI调用可能遇到网络中断、远程对象不存在等问题,因此客户端需要适当地捕获和处理`java.rmi`包下的异常,如`RemoteException`。 3. **RMI通信机制**: - **marshalling**与**unmarshalling**:...
- **启动RMIServer和RMIClient**: 通常,服务器会有一个启动RMI服务的main方法,而客户端也有一个启动并连接到服务器的main方法。 4. **Java_RMI_ClientServer示例** - 项目中的`Java_RMI_ClientServer-master`很...
6. **会话管理**:在多客户端环境中,服务端需要有效地管理各个客户端的会话,可能包括身份验证、会话状态跟踪等。这通常需要自定义逻辑来实现。 描述中的“多个客户端 一个服务端对话”表明服务端需要处理并发的...
在多IP多服务端的场景下,通常会采用负载均衡或故障转移策略。这里提到的“自动切换”意味着系统需要具备检测服务端状态的能力,并且在发现某个服务不可用时,能够迅速将请求转发到其他正常运行的服务实例。这可能...
本工程用于研究RMI技术 为RMI客户端 本工程编码方式:UTF 8 参考博客地址:http: blog csdn net gaohuanjie article details 38338765
为了支持多人聊天,服务器端需要为每个客户端连接创建一个独立的线程,这样可以同时处理多个并发的聊天请求,保持系统的高并发性能。 5. **用户认证与安全**: 考虑到安全性,软件可能包括用户注册和登录功能,...
这个"RMI跨平台调用的demo"展示了如何在Windows客户端与Linux服务器端之间建立RMI连接并执行远程方法。 首先,我们要理解RMI的基本架构。RMI系统包括两部分:客户端(Client)和服务器端(Server)。客户端通过RMI...
在实现多线程Web服务器时,我们需要创建一个主线程池,用于接收新的连接请求,然后将每个请求分配给一个工作线程来处理。每个工作线程负责读取请求、解析HTTP协议、执行相应的操作(如返回静态文件或执行动态脚本)...