使用RMI编写客户端-服务器应用程序,实现分布式计算
来源:互联网 发布:武藏300ds点胶机编程 编辑:程序博客网 时间:2024/05/28 22:09
开发环境: Windows2000 + JBuilderX + JDK1.4.2
远程方法调用(Remote Method Invocation,RMI)可以在不同的Java虚拟机(JVM)之间实现对象与对象的通信.
使用RMI编写客户-服务器应用程序包括6个基本步骤:
1.定义远程接口
2.实现远程接口
3.编写使用远程对象的客户
4.生成stub(客户代理)以及skeletom(服务器实体)
5.启动注册表并且注册对象
6.运行服务器和客户
下面通过一个简单的实例来介绍每一步.
1.定义远程接口
在JBuilderX中创建一个名为rmisample的project,然后在根目录创建一个名为riminterface的class,定义接口代码如下:
public class riminterface {
interface HelloInterface extends java.rmi.Remote{
public String sayHello() throws java.rmi.RemoteException;
}
}
2.实现远程接口
在project根目录再创建一个名为HelloServer的class,实现以上接口,代码如下:
import java.rmi.*;
import java.rmi.server.*;
import java.util.Date;
public class HelloServer extends UnicastRemoteObject implements riminterface.HelloInterface{
public HelloServer() throws RemoteException{
super();
}
public String sayHello() throws java.rmi.RemoteException{
return "It`s from bluesky!" + new Date();
}
}
其中的sayHello就是实现了接口中sayHello的具体方法.
3.编写使用远程对象的客户
在project根目录再创建一个名为HelloClient的class,编写使用远程对象的客户,代码如下:
import java.rmi.*;
public class HelloClient {
public static void main(String args[]){
if(System.getSecurityManager() == null){
System.setSecurityManager(new RMISecurityManager());
}
try{
riminterface.HelloInterface obj = (riminterface.HelloInterface)Naming.lookup("/HelloServer");
String message = obj.sayHello();
System.out.println(message);
}catch(Exception e){
System.out.println(e.toString());
}
}
}
客户端通过Naming.lookup("/HelloServer");找到Server的远程接口并且调用其中的方法以实现虚拟机之间的相互通信.
4.生成stub(客户代理)以及skeletom(服务器实体)
新开一个command窗口,用rmic HelloServer语句生成stub(客户代理)以及skeletom(服务器实体).
5.启动注册表并且注册对象
打开JAVA_HOME/jre/lib/security/java.policy,将原来的授权方式改成 permission java.net.SocketPermission "*:1024-65535", "accept,connect,listen,resolve";然后保存退出.使用命令rmiregistry -J-Djava.security.policy=java.policy启动注册表.
然后在project根目录再创建一个名为RegisterIt的class,编写注册程序如下:
import java.rmi.*;
public class RegisterIt {
public static void main(String args[]){
try{
HelloServer obj = new HelloServer();
System.out.println("Object is" + obj);
Naming.rebind("/HelloServer",obj);
System.out.println("Already Start");
}catch(Exception e){
System.out.print(e);
}
}
}
用java RegisterIt命令注册接口.
6.运行服务器和客户
最后,运行客户端程序.
好了,关于RMI就介绍到这里,下次再见^-^!
远程方法调用(Remote Method Invocation,RMI)可以在不同的Java虚拟机(JVM)之间实现对象与对象的通信.
使用RMI编写客户-服务器应用程序包括6个基本步骤:
1.定义远程接口
2.实现远程接口
3.编写使用远程对象的客户
4.生成stub(客户代理)以及skeletom(服务器实体)
5.启动注册表并且注册对象
6.运行服务器和客户
下面通过一个简单的实例来介绍每一步.
1.定义远程接口
在JBuilderX中创建一个名为rmisample的project,然后在根目录创建一个名为riminterface的class,定义接口代码如下:
public class riminterface {
interface HelloInterface extends java.rmi.Remote{
public String sayHello() throws java.rmi.RemoteException;
}
}
2.实现远程接口
在project根目录再创建一个名为HelloServer的class,实现以上接口,代码如下:
import java.rmi.*;
import java.rmi.server.*;
import java.util.Date;
public class HelloServer extends UnicastRemoteObject implements riminterface.HelloInterface{
public HelloServer() throws RemoteException{
super();
}
public String sayHello() throws java.rmi.RemoteException{
return "It`s from bluesky!" + new Date();
}
}
其中的sayHello就是实现了接口中sayHello的具体方法.
3.编写使用远程对象的客户
在project根目录再创建一个名为HelloClient的class,编写使用远程对象的客户,代码如下:
import java.rmi.*;
public class HelloClient {
public static void main(String args[]){
if(System.getSecurityManager() == null){
System.setSecurityManager(new RMISecurityManager());
}
try{
riminterface.HelloInterface obj = (riminterface.HelloInterface)Naming.lookup("/HelloServer");
String message = obj.sayHello();
System.out.println(message);
}catch(Exception e){
System.out.println(e.toString());
}
}
}
客户端通过Naming.lookup("/HelloServer");找到Server的远程接口并且调用其中的方法以实现虚拟机之间的相互通信.
4.生成stub(客户代理)以及skeletom(服务器实体)
新开一个command窗口,用rmic HelloServer语句生成stub(客户代理)以及skeletom(服务器实体).
5.启动注册表并且注册对象
打开JAVA_HOME/jre/lib/security/java.policy,将原来的授权方式改成 permission java.net.SocketPermission "*:1024-65535", "accept,connect,listen,resolve";然后保存退出.使用命令rmiregistry -J-Djava.security.policy=java.policy启动注册表.
然后在project根目录再创建一个名为RegisterIt的class,编写注册程序如下:
import java.rmi.*;
public class RegisterIt {
public static void main(String args[]){
try{
HelloServer obj = new HelloServer();
System.out.println("Object is" + obj);
Naming.rebind("/HelloServer",obj);
System.out.println("Already Start");
}catch(Exception e){
System.out.print(e);
}
}
}
用java RegisterIt命令注册接口.
6.运行服务器和客户
最后,运行客户端程序.
好了,关于RMI就介绍到这里,下次再见^-^!
- [原创]使用RMI编写客户端-服务器应用程序,实现分布式计算
- 使用RMI编写客户端-服务器应用程序,实现分布式计算
- 用RMI实现基于Java的分布式计算
- 用RMI实现基于Java的分布式计算
- 用RMI实现基于Java的分布式计算
- 用RMI实现基于Java的分布式计算
- Java RMI分布式应用程序概述
- rmi分布式实现
- 分布式计算 lab2 Java RMI
- 用RMI编写网络应用程序
- 用RMI编写网络应用程序
- 使用mina2框架编写分布式日志服务器
- 使用Java中RMI机制来实现分布式程序
- 使用JAVA中RMI机制来实现分布式程序(2)
- ICE专题:使用C#编写ICE分布式应用程序
- ICE专题:使用C#编写ICE分布式应用程序
- MSDN:使用 MFC WinInet 类编写 Internet 客户端应用程序
- 使用UML编写Java应用程序 (2)实现
- 在不同平台下部署J2EE连接器和J2EE应用
- 集成Eclipse,Lomboz和JBoss开发J2EE应用(转)
- SQLSERVER中快速获海量数据的记录总数
- [水晶报表部署系列之一]轻松搞定水晶报表9.2打包
- 再次想到使用 bolg
- 使用RMI编写客户端-服务器应用程序,实现分布式计算
- csdn blog 启动
- ORACLE FOR WINDOWS 9.2.0.1升级到 ORACLE patch 9.2.0.6 详细步骤(原创)
- 惨不忍睹!招聘考试-计算机操作水平测试结果分析
- Java 多线程编程(致命英雄)
- Java新框架:Commons Chain一瞥
- 用Java制作网络文件下载系统(chinajava)
- 有趣的ping-----小记
- 文件传送(服务端能响应多个请求)——dosy