简介
上一节介绍了如何编写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程序详解》
分享到:
相关推荐
《基于RMI的Java商品管理系统实现详解》 在IT领域,远程方法调用(Remote Method Invocation,简称RMI)是Java编程语言中一种强大的分布式计算技术。本项目“RMI商品管理系统”即利用了RMI特性,实现了商品信息的...
通过本次实验,学生能够深入了解 Java RMI 的工作原理,并能够熟练地使用 RMI 开发简单的分布式应用程序。实验不仅涉及了远程接口的设计与实现,还涵盖了服务器端与客户端程序的编写、编译以及运行过程中的注意事项...
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司)于1995年发布。它的设计目标是具有高可移植性、健壮性和安全性,使其能够跨平台运行,从移动设备到大型服务器,都能找到Java的身影。...
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 小结 第十二章 ...
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 小结 第十二章 ...
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 小结 第十二章 ...
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 小结 第十二章 ...
- **Eclipse IDE**:掌握如何使用Eclipse进行Java程序的编写、调试和部署。Eclipse是一款广泛使用的Java集成开发环境(IDE),支持代码编辑、调试、构建等多种功能。 - **Linux下的Java开发**:在Linux环境下编写和...
这一章节从零开始,引导初学者通过手工编写、编译和运行Java程序的方式,逐步理解Java语言的基本语法和编程流程。此外,还介绍了如何利用Eclipse/MyEclipse IDE进行开发,让编程变得更加高效。 #### 第三章:...
- 在Eclipse或其他IDE中新建一个Java Web项目。 - 配置项目的类路径,添加Axis1相关的库文件。 2. **编写服务接口**: - 定义一个接口,例如`HelloWorldService`,其中包含一个方法`sayHello(String name)`。 -...
### Java访问C#开发的Webservice详解 #### 一、引言 在现代软件开发过程中,尤其是对于大型项目而言,采用分布式系统架构已经成为一种常态。分布式应用能够将复杂的业务逻辑分解并部署到不同的服务器上,从而提高...
1. Java技术基础:Java以其“一次编写,到处运行”的特性闻名,具有跨平台性、安全性、稳定性和高性能。在远程视频会议系统中,Java主要负责后台服务的处理,如用户管理、会话管理、数据传输等。 2. Java网络编程:...
Lunar Eclipse 的 RMI 生成插件简化了 RMI 应用程序的开发过程,自动创建远程接口、服务器端实现、客户端存根等必要组件。这极大地减少了手动编写这些代码的时间和可能出现的错误,使得开发者可以更专注于业务逻辑。...
- **导入所需库**:在Java程序中,需要导入如`java.net`, `java.rmi`, `javax.xml.rpc`等相关包,以处理网络连接、远程方法调用和服务异常。 - **创建服务实例**:通过构造服务定位器实例,然后使用定位器获取服务...
- 使用IDE(如Eclipse, IntelliJ IDEA)或文本编辑器编写Java源代码。 - 使用`javac`编译源代码为字节码。 - 使用`java`命令运行编译后的类文件。 - 利用JDK提供的工具进行调试、性能分析和优化。 总结来说,...
在Java中,可以使用多种技术来实现远程接口访问,如RMI(Remote Method Invocation)、SOAP/RESTful Web Services等。 2. **Webservers**:Web服务器是指在网络上提供网页访问服务的计算机程序。它不仅可以处理HTTP...