一个简单的RMI程序
来源:互联网 发布:淘宝店铺激活的流程 编辑:程序博客网 时间:2024/06/06 03:18
今天写了一个简单的RMI程序
一、开发工具 eclipse3.1
JDK1.4
二、目录结构
E:\SHIWEI\STUDY\RMI
│ .classpath
│ .project
│
├─bin
│ └─com
│ └─snoics
│ └─study
│ └─rmi
│ └─information
│ client.policy
│ Information.class
│ InformationClient.class
│ InformationImpl.class
│ InformationImpl_Stub.class
│ InformationServer.class
│ ShowBindingsName.class
│
└─src
└─com
└─snoics
└─study
└─rmi
└─information
client.policy
Information.java
InformationClient.java
InformationImpl.java
InformationServer.java
ShowBindingsName.java
首先创建一个接口:/* * FileName Information.java * Create Time 2005-10-14 13:43:28 * Author shiwei * Descript * Version */package com.snoics.study.rmi.information;import java.rmi.Remote;import java.rmi.RemoteException;public interface Information extends Remote{ String getDescript() throws RemoteException;}接口的实现:/* * FileName InformationImpl.java * Create Time 2005-10-14 13:44:59 * Author shiwei * Descript * Version */package com.snoics.study.rmi.information;import java.rmi.RemoteException;import java.rmi.server.UnicastRemoteObject;public class InformationImpl extends UnicastRemoteObject implements Information{ private static final long serialVersionUID = -3493514659140991974L; private String descript=""; public InformationImpl(String descript) throws RemoteException{ this.descript=descript; } public String getDescript() throws RemoteException{ return "show Descript: "+descript+"!"; }}服务端的代码:/* * FileName InformationServer.java * Create Time 2005-10-14 13:48:36 * Author shiwei * Descript 服务端 * Version */package com.snoics.study.rmi.information;import java.rmi.Naming;public class InformationServer { public InformationServer() { } /** * 注册绑定服务 * */ public void bindServer() { try { System.out.println("创建服务"); InformationImpl productImpl1=new InformationImpl("I'm a Person"); InformationImpl productImpl2=new InformationImpl("I'm a Work"); System.out.println("Binding Server to registry"); Naming.rebind("person",productImpl1); Naming.rebind("work",productImpl2); }catch(Exception e) { e.printStackTrace() ; } } public static void main(String[] args) { InformationServer informationServer=new InformationServer(); informationServer.bindServer(); ShowBindingsName showBindingsName=new ShowBindingsName(); showBindingsName.show(); }}再创建一个ShowBindingsName.java显示服务器注册的名称:/* * FileName ShowBindingsName.java * Create Time 2005-10-14 13:53:50 * Author shiwei * Descript 显示Naming List * Version */package com.snoics.study.rmi.information;import java.rmi.Naming;public class ShowBindingsName { /** * 显示Naming List * */ public void show() { try { String[] bindings=Naming.list(""); int length=bindings.length; for(int i=0;i System.out.println(bindings[i]); } }catch(Exception e) { e.printStackTrace() ; } }}客户端的代码:/* * FileName InformationClient.java * Create Time 2005-10-14 13:56:39 * Author shiwei * Descript 客户端 * Version */package com.snoics.study.rmi.information;import java.rmi.Naming;import java.rmi.RMISecurityManager;public class InformationClient { /** * 远程调用 * */ public void showInformation() { System.setProperty("java.security.policy", "E:/ShiWei/Study/RMI/bin/com/snoics/study/rmi/information/client.policy"); System.setSecurityManager(new RMISecurityManager()); String url="rmi://localhost/"; try { Information information1=(Information)Naming.lookup(url+"person"); Information information2=(Information)Naming.lookup(url+"work"); System.out.println("information1.descript="+information1.getDescript()); System.out.println("information2.descript="+information2.getDescript()); }catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { InformationClient informationClient=new InformationClient(); informationClient.showInformation(); }}安全策略文件 client.policygrant{ permission java.net.SocketPermission "*:1024-65535", "connect,accept"; permission java.net.SocketPermission "*:80", "connect";};三、部署程序:
代码写完就该开始动手部署了,RMI的部署也是一个非常让人头疼的问题。
只要一步步的跟着我下面的操作进行,一定可以把这个程序部署起来的。
首先假设编译好的class放到 E:\ShiWei\Study\RMI\bin 路径下面。
打开DOS窗口
1、设置classpath 输入: C:\>set classpath=E:\ShiWei\Study\RMI\bin
2、创建存根 输入: C:\>rmic -v1.2 -d E:\ShiWei\Study\RMI\bin com.snoics.study.rmi.information.InformationImpl
3、启动RMI注册表 输入: C:\>start rmiregistry
4、启动服务端程序 输入: C:\>start java com.snoics.study.rmi.information.InformationServer
5、执行客户端程序 输入: C:\>java com.snoics.study.rmi.information.InformationClient
6、如果以上的步骤全部执行成功,将在控制台上看到以下的信息:
information1.descript=show Descript: I'm a Person!
information2.descript=show Descript: I'm a Work!
四、注意:
如果在执行过程中,客户端执行失败,请检查是否有打开防火墙,请把防火墙关闭以后重新执行客户端程序。
- 一个简单的RMI程序
- 浅谈RMI - 搭建一个简单的RMI程序
- 一个简单的RMI程序 [原创]
- 一个简单的RMI入门例程(转贴)
- 一个简单的RMI入门例程(转贴)
- 一个简单的RMI入门例程(转贴)
- 一个简单的RMI入门例程(转贴)
- 一个简单的RMI会话实现
- 关于Java的RMI编程的一个简单的例子
- 关于Java的RMI编程的一个简单的例子
- RMI程序编写简单指南
- 运行 RMI 程序找不到类的一个原因
- java 简单 的 RMI
- RMI简单的HelloWorld
- RMI的简单实现
- RMI的简单实现
- RMI的简单例子
- Java:简单的RMI
- ABAP日期函数
- Android Http异步请求类库:android-async-http
- Oracle数据库增加表空间
- 安卓 二维码生成代码
- 添加Action Provider
- 一个简单的RMI程序
- TCP三次握手和四次挥手
- JVM伪共享
- 在 toolStrip 中增加DateTimePicker 控件,并解决两个日期型控件联动问题
- Tcpdump的详细用法
- OpenCV2.4.10安装与在VS2012中的配置
- 让Python程序在Android手机上跑起来
- 编写函数计算圆的面积,参数是圆的半径。在main函数中测试。
- POJ 题目1101 The Game(bfs)