简介
上一节介绍了如何编写RMI的程序范例,在那个例子中可以看到RMI的客户端和服务端交互的方式和如何建立连接。
在这一节我们将会重构一下Client的链接方式,以前是直接使用Naming获得服务器对象,这一节我们将换用上下文帮助我们管理服务器的链接。
上下文即Context,他可以管理RMI的对象,自动帮助我们管理各个平台的工厂创建。EJB的应用也是使用Context帮助管理RMI对象。
在每个项目中应该少用HardCode值,这就需要一个配置文件设置,使用Context的时候,我们可以在程序中将属性值创建进去,RMI的配置中至少需要两个必不可少的值,java.naming.factory.initial
和java.naming.provider.url
。这两个值可以放入到jndi.properties中,这个配置文件将会被Context读取。设置Factory创建指定传输协议的对象,比如
两个常用的,IIOP 和 LDAP,IIOP的URL如同
iiop://mycosnamingserver,使用的工厂是com.sun.jndi.cosnaming.CNCtxFactory,LDAP的URL如同
ldap://myldapnameserver,这个参数的设置稍微复杂一点,请参考
《走出JNDI迷宫》
-- Daniel Would。
对于RMI的传输协议设置请看jndi.properties设置。
jndi.properties
java.naming.factory.initial=com.sun.jndi.rmi.registry.RegistryContextFactory
java.naming.provider.url=rmi://127.0.0.1:2500
Client.java重构
package remote.test.client;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
import remote.test.HelloTask;
import remote.test.HelloTaskImpl;
import remote.test.IHello;
public class HelloClient {
public static void main(String[] args) {
try {
//IHello hi = (IHello) Naming.lookup("rmi://127.0.0.1:2500/hello");
InitialContext ctx = new InitialContext();
Object obj = ctx.lookup("hello");
IHello hi = (IHello)PortableRemoteObject.narrow(obj,IHello.class);
HelloTask task = new HelloTaskImpl();
for (int i = 0; i < 10; i++) {
System.out.println(hi.say(task));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
连接地址和端口号将从java.naming.provider.url获得,使用InitialContext能够有效地帮助我们再各个平台上搭建我们的服务器,使用各种协议来应对各种平台所带来的问题。服务端的代码没有改动,请参考上一节的文章《使用Eclipse编写Java RMI程序详解》
分享到:
相关推荐
java rmi java rmijava rmi javajava rmi java rmi rmi
java rmi 远程方法调用的例子,讲解的很详细!
我的博客《Java中的RMI(远程方法调用)》的示例代码
在Eclipse中运行java RMI程序的插件
java RMI的一个实例,利用Eclipse开发的简单的银行存取款小程序,运行时需要启动java注册服务rmiregister,然后在两个命令行窗口分别运行服务器类和客户端类,支持局域网内不同机器间的访问
java RMI技术实现的网络聊天室 编译通过,很完整的。代码很有参考价值
采用JAVA rmi,带图形界面,完全由自己实现的聊天室,具备基本的聊天功能,可以自己扩充功能
编写简单的HTTP 1.0客户端/服务器程序:.编写多线程Web服务器:编写简单的RMI程序 实验
检测javaRMI反序列化漏洞
java RMI
在这次的项目中,对于客户端与服务器之间的通信,想了许多办法,由于做的是富客户端应用,最终将技术选定在了RMI和Java-sockets两种之间,其中RMI的灵活性不高,客户端和服务器端都必须是java编写,但使用比较方便,...
Java RMI远程方法调用详解-例子代码,例子详解在:http://blog.csdn.net/guyuealian/article/details/51992182
java RMI实现代码。分为客户端和服务器端,有清楚的代码注释。
实验名称 基于Socket的C/S编程实验 实验名称 基于Java RMI的C/S编程实验
Java RMI 简单示例
用RMI建立一个分布式JAVA应用程序详解.pdf
JavaRMI.pdf
Java RMI的应用——学习RMI的简单编程应用。编写一个课程成绩管理程序,要求用Java RMI实现
JAVA网络编程中RMI的源程序例子,并使用了简单的加密技术
java rmi spring 使用实例,内涵服务端和客户端的源代码,测试可用。