RMI远程方法调用的简单方法和实例

使用RMI创建一个分布式应用程序六步骤:

1. 定义一个远程接口。

2. 实现远程接口和服务器。

3. 使用远程接口开发一个客户程序(一个应用程序或是App)。

4. 产生桩和构架。

5. 启动RMI注册表。

6. 运行服务器和客户程序。

实例:

1. 定义一个远程接口Arith

package rmi;

public interface Arith extends java.rmi.Remote{
	int []add(int a[],int b[])throws java.rmi.RemoteException;
} 
2. 实现远程接口和服务器
package rmi;

import java.rmi.Naming;
import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

public class ArithImpl extends UnicastRemoteObject implements Arith{
	private String objectName;

	
	protected ArithImpl(String s) throws RemoteException {
		super();
		objectName=s;
		// TODO Auto-generated constructor stub
	}

	private static final long serialVersionUID = 1L;

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/*
		 * 创建并安装一个安全管理器。
		 * */
		RMISecurityManager sm=new RMISecurityManager();
		System.setSecurityManager(sm);
		try{
			/*
			 * 创建远程对象实例
			 * */
			ArithImpl ai=new ArithImpl("ArithServer");
			/*
			 * 用RMI向注册表中注册远程对象,是通过名字注册来绑定对象。
			 * 客户根据名字找到对象。
			*/
			Naming.rebind("//acer-pc/ArithServer", ai);
		}catch(Exception e){
			e.printStackTrace();
		}
		
	}

	public int[] add(int[] a, int[] b){
		// TODO Auto-generated method stub
		int c[]=new int [10];
		for(int i=0;i<10;i++){
			c[i]=a[i]+b[i];
		}
		return c;
	}

}

3. 使用远程接口开发一个客户程序

package rmi;
import java.rmi.*;
public class ArithApp {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a[]={1,2,3,4,5,6,7,8,9},b[]={9,8,7,6,5,4,3,2,1};
		int result[]=new int[9];
		
		
		try{
			/*
			 * 首先从服务器注册表中查找到ArithServer的引用。
			 * */
			Arith arith=(Arith)Naming.lookup("//acer-pc/ArithServer");
			result=arith.add(a, b);
		}catch(Exception e){
			e.printStackTrace();
		}
		System.out.println("The sum=");
		for(int i=0;i<9;i++){
			System.out.print(result+" ");
		}
		System.out.println();
	}

} 

4. 产生桩和构架

    一旦编写了代码,就可以产生桩和构架,他是在运行时动态确定的,并根据需要动态装载。用桩和构架,将客户和服务器连接在一起。

使用rmic编译器,可以很容易地产生RMI桩和构架。
   % rmic <option> <classname>
例如:% rmic ArithImpl
根据上述程序会产生两个文件:ArithImpl_Skel.class 和ArithImpl_Stub.class.


5. 启动注册表

% rmiregistery &  /*在Unix环境下使用,默认端口:1099*/
如果想在不同端口使用则用:
% rmiregistery number &

6. 运行服务器和客户程序。

% java ArithImpl &
% java ArithApp

转载于:https://my.oschina.net/u/1177605/blog/143359

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值