JavaRMI Of Linux and Window

RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.2中实现的,它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语言,其巨大的威力就体现在它强大的开发分布式网络应用的能力上,而RMI就是开发百分之百纯Java的网络分布式应用系统的核心解决方案之一。其实它可以被看作是RPC的Java版本。但是传统RPC并不能很好地应用于分布式对象系统。而Java RMI 则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。


以下用一个最简单的示例来介绍RMI的应用

CircleInterface    -------服务器接口类

Circle                  -------- 服务器类 

CircleServer       ---------服务器主类

TestCircle           --------测试类


packagecom.same.demo03;

importjava.rmi.Remote;

importjava.rmi.RemoteException;

/**

*服务器接口

* Created by alic on 16-3-7.

*/

public interfaceCircleInterfaceextendsRemote {

public doublecircleArea(Double r)throwsRemoteException;

}


packagecom.same.demo03;

importjava.rmi.RemoteException;

importjava.rmi.server.UnicastRemoteObject;

/**

*服务器类

* Created by alic on 16-3-7.

*/

public classCircleextendsUnicastRemoteObjectimplementsCircleInterface {

protectedCircle()throwsRemoteException {

super();

}

@Override

public doublecircleArea(Double r)throwsRemoteException {

return3.14*r*r;

}

}


packagecom.same.demo03;

importjava.net.MalformedURLException;

importjava.rmi.AlreadyBoundException;

importjava.rmi.Naming;

importjava.rmi.RemoteException;

/**

*服务器主类

* Created by alic on 16-3-7.

*/

public classCircleServer {

public static voidmain(String[] args) {

try{

Circle circle =newCircle();

//通过rmi设置并绑定服务器端口

Naming.bind("rmi://localhost:1099/circle",circle);

System.out.println("CircleServer is ok");

}catch(RemoteException e) {

e.printStackTrace();

}catch(MalformedURLExceptione) {

e.printStackTrace();

}catch(AlreadyBoundException e) {

e.printStackTrace();

}

}

}


packagecom.same.demo03;

importjava.io.BufferedReader;

importjava.io.IOException;

importjava.io.InputStreamReader;

importjava.rmi.Naming;

importjava.rmi.NotBoundException;

/**

*测试类

* Created by alic on 16-3-7.

*/

public classTestCircle {

public static voidmain(String[] args)throwsIOException, NotBoundException {

//连接服务器段的emi端口

CircleInterface circleInterface = (CircleInterface) Naming.lookup("rmi://localhost:1099/circle");

System.out.println("请输入半径:");

//创建输入流

BufferedReader bufferedReader =newBufferedReader(newInputStreamReader(System.in));

//将键盘输入的转换为Double类型

Double radii = Double.parseDouble(bufferedReader.readLine());

//接收通过服务器接口访问服务器计算的结果

System.out.println(circleInterface.circleArea(radii));

}

}



1、编写远程接口并编译   

2、编写实现接口的服务器类并编译

3、使用rmic编译生成stub和skeleton,命令格式:

rmic -v1.2  服务器类名

4、编写服务器主类并编译

5、编写客户端类并编译

6、启动注册库命令:

Window下 : start rmiregistry 1099

Linux下:rmiregistry 1099

7、运行服务主类:      java  服务器主类名

8、再重新启动一个命令行窗口,运行客户类: java  客户端类名

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,552评论 18 399
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,921评论 1 114
  • Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点: 代码开发模块化,更易...
    安安静静写代码阅读 1,143评论 0 8
  • Java 面试题 整理自牛客网 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟...
    GuaKin_Huang阅读 10,749评论 19 265
  • 面向对象编程(OOP) Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点...
    hutuxiaogui阅读 990评论 0 2

友情链接更多精彩内容