从零开始RMI编程开发:HelloWorld
从零开始RMI编程开发:HelloWorld
本章使用经典的HelloWorld程序来作为RMI开发的第一篇,对于理论知识,笔者在这里也不做过多的阐述,主要目的通过HelloWorld这个经典的程序来说明在windows下的RMI开发的一些基本步骤.笔者也是刚接触RMI,有什么差强人意的地方请各位大虾们口下留情。RMI技术 1.0:HelloWorld(jdk1.5以前版本)
— 创建远程接口:Hello
- package org.tony.rmi.demo ;
- import java.rmi.Remote;
- import java.rmi.RemoteException;
- public interface Hello extends Remote
- {
- String sayHello() throws RemoteException ;
- }
— 创建服务器类:HelloImpl
— 创建客户端类:HelloClient
- package org.tony.rmi.demo ;
- import java.rmi.Naming ;
- import java.rmi.RMISecurityManager ;
- public class HelloClient {
- private static final String HOST_NAME = "localhost" ;
- public static void main(String[] args) {
- System.setProperty("java.security.policy","HelloWorld.policy");
- if(System.getSecurityManager() == null) {
- System.setSecurityManager(new RMISecurityManager()) ;
- }
- try {
- Hello hello = (Hello)Naming.lookup("//" + HOST_NAME + "/HelloWorld");
- String result = hello.sayHello() ;
- System.out.println(result);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
—创建安全策略文件:HelloWorld.policy
到此为止,此HelloWorld项目所需的文件全部编写完成。接下来就是谈怎样运行这个HelloWorld程序了,当然在JDK1.5以后的RMI编程中,要想启动RMI注册表程序是件很容易的事情,但是在以前的版本还是有点麻烦,本例中未使用IDE开发,所有操作均基于命令提示符下完成的。假定所有文件Hello.java、HelloImpl.java、HelloClient.java在D:\Data 目录下:(classpath=D:\Data)
1.编译所有源程序: javac -d . *.java,生成相应的二进制码文件
2. 要想让客户能够远程访问远程接口中的方法,那么我们应该创建一个代理对象供远程客户使用,也就是存根,我们的stub文 件。调用命令 rmic: rmic org.tony.rmi.demo.HelloImpl 当然这样做生成的存根源代码是被删除了的,如果你 想保存源代码,那么你可以使用-keepgrneratedflag 让rmic保存源代码
3. 启动RMI注册表程序,新开一个命令提示符窗口,切换到安全策越文件所在目录下本例中的D:\Data:
键入命令:rmiregistry –J-Djava.security.policy=HelloWorld.policy 敲击回车后你不会看到任何的结果显示,除了命令提 示符窗口变成了以rmiregistry –J-Djava.security.policy=HelloWorld.policy结尾外。
4. 启动构建和注册HelloImpl对象的服务器程序HelloImpl。新开一个命令提示符窗口
切换到工作目录下,键入以下命令启动服务器程序:java –Djava.rmi.server.codebase=file:/D:\Data\ org.tony.rmi.demo.HelloImpl , 如果操作中未出现其他的错误,那么你会看到在控制台打印了一行字符:”注册成 功”,证明服务器启动成功。那么接下来就是通过客户端去调用了
5. 当前面的步骤我们都顺利的完成以后,那么我们就要启动客户端访问远程对象了。
新开一个命令提示符窗口并切换到工作目录下:执行HelloClient程序,你会看到控制台打印了一行字符:Hello,RMI world。证明我们的第一个HelloWorld程序成功完成了
评论暂时关闭