`
usiboy
  • 浏览: 27200 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用Eclipse编写Java RMI程序详解(续)

阅读更多

简介

上一节介绍了如何编写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程序详解》

3
2
分享到:
评论
1 楼 jyjava 2011-07-18  
将连接的url写入配置文件中,是个想法,不过你再怎么弄,url都会暴露在外面,很不安全

相关推荐

    RMI商品管理系统.zip

    《基于RMI的Java商品管理系统实现详解》 在IT领域,远程方法调用(Remote Method Invocation,简称RMI)是Java编程语言中一种强大的分布式计算技术。本项目“RMI商品管理系统”即利用了RMI特性,实现了商品信息的...

    实验2 RMI.doc

    通过本次实验,学生能够深入了解 Java RMI 的工作原理,并能够熟练地使用 RMI 开发简单的分布式应用程序。实验不仅涉及了远程接口的设计与实现,还涵盖了服务器端与客户端程序的编写、编译以及运行过程中的注意事项...

    java应用详解

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司)于1995年发布。它的设计目标是具有高可移植性、健壮性和安全性,使其能够跨平台运行,从移动设备到大型服务器,都能找到Java的身影。...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    11.4.6 编写具体的业务逻辑类RegeditImpl.java 11.4.7 编写Struts的配置文件struts-config.xml 11.4.8 编写Spring的配置文件spring-config.xml 11.4.9 配置web.xml 11.4.10 启动Tomcat运行示例 11.5 小结 第十二章 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    11.4.6 编写具体的业务逻辑类RegeditImpl.java 11.4.7 编写Struts的配置文件struts-config.xml 11.4.8 编写Spring的配置文件spring-config.xml 11.4.9 配置web.xml 11.4.10 启动Tomcat运行示例 11.5 小结 第十二章 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    11.4.6 编写具体的业务逻辑类RegeditImpl.java 11.4.7 编写Struts的配置文件struts-config.xml 11.4.8 编写Spring的配置文件spring-config.xml 11.4.9 配置web.xml 11.4.10 启动Tomcat运行示例 11.5 小结 第十二章 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    11.4.6 编写具体的业务逻辑类RegeditImpl.java 11.4.7 编写Struts的配置文件struts-config.xml 11.4.8 编写Spring的配置文件spring-config.xml 11.4.9 配置web.xml 11.4.10 启动Tomcat运行示例 11.5 小结 第十二章 ...

    JAVA技术体系

    - **Eclipse IDE**:掌握如何使用Eclipse进行Java程序的编写、调试和部署。Eclipse是一款广泛使用的Java集成开发环境(IDE),支持代码编辑、调试、构建等多种功能。 - **Linux下的Java开发**:在Linux环境下编写和...

    J2EE开发工具使用方法详解

    这一章节从零开始,引导初学者通过手工编写、编译和运行Java程序的方式,逐步理解Java语言的基本语法和编程流程。此外,还介绍了如何利用Eclipse/MyEclipse IDE进行开发,让编程变得更加高效。 #### 第三章:...

    Java WebService 简单实例 方式二(axis1直接调用方式)

    - 在Eclipse或其他IDE中新建一个Java Web项目。 - 配置项目的类路径,添加Axis1相关的库文件。 2. **编写服务接口**: - 定义一个接口,例如`HelloWorldService`,其中包含一个方法`sayHello(String name)`。 -...

    Java访问c#开发的webservice

    ### Java访问C#开发的Webservice详解 #### 一、引言 在现代软件开发过程中,尤其是对于大型项目而言,采用分布式系统架构已经成为一种常态。分布式应用能够将复杂的业务逻辑分解并部署到不同的服务器上,从而提高...

    基于Java的远程视频会议系统(系统+论文).zip

    1. Java技术基础:Java以其“一次编写,到处运行”的特性闻名,具有跨平台性、安全性、稳定性和高性能。在远程视频会议系统中,Java主要负责后台服务的处理,如用户管理、会话管理、数据传输等。 2. Java网络编程:...

    Lunar Eclipse-开源

    Lunar Eclipse 的 RMI 生成插件简化了 RMI 应用程序的开发过程,自动创建远程接口、服务器端实现、客户端存根等必要组件。这极大地减少了手动编写这些代码的时间和可能出现的错误,使得开发者可以更专注于业务逻辑。...

    webservices客户端开发-java[归纳].pdf

    - **导入所需库**:在Java程序中,需要导入如`java.net`, `java.rmi`, `javax.xml.rpc`等相关包,以处理网络连接、远程方法调用和服务异常。 - **创建服务实例**:通过构造服务定位器实例,然后使用定位器获取服务...

    jdk1.8-win-i586.rar

    - 使用IDE(如Eclipse, IntelliJ IDEA)或文本编辑器编写Java源代码。 - 使用`javac`编译源代码为字节码。 - 使用`java`命令运行编译后的类文件。 - 利用JDK提供的工具进行调试、性能分析和优化。 总结来说,...

    Java实现远程接口访问,webservers配置

    在Java中,可以使用多种技术来实现远程接口访问,如RMI(Remote Method Invocation)、SOAP/RESTful Web Services等。 2. **Webservers**:Web服务器是指在网络上提供网页访问服务的计算机程序。它不仅可以处理HTTP...

Global site tag (gtag.js) - Google Analytics