RMI遠程方法調用的簡單方法和實例

使用RMI建立一個分佈式應用程序六步驟:

1. 定義一個遠程接口。 java

2. 實現遠程接口和服務器。 安全

3. 使用遠程接口開發一個客戶程序(一個應用程序或是App)。 服務器

4. 產生樁和構架。 分佈式

5. 啓動RMI註冊表。 spa

6. 運行服務器和客戶程序。 code

實例: server

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
相關文章
相關標籤/搜索