天天看點

RMI試驗(DOS環境)

注:所有檔案用記事本編寫就行,然後用再dos環境下調用指令來進行操作。比較容易出錯的是為系統配置有關jdk的環境變量。

JDK配置環境變量

首先右鍵點我的電腦。打開屬性。然後選擇“進階”裡面的“環境變量”,在新的打開界面中的系統變量裡需要設定三個屬性“java_home”、“path”、“classpath”,其中在沒安裝過jdk的環境下,path屬性是本來存在的。而java_home和classpath是不存在的。

首先點“建立”,然後在變量名寫上java_home,顧名其意該變量的含義就是java的安裝路徑,呵呵,然後在變量值寫入剛才安裝的路徑“E:/Java/jdk1.6.0_02”.

其次在系統變量裡面找到path,然後點編輯,path變量的含義就是系統在任何路徑下都可以識别java指令,則變量值為“%java_home%/bin;%java_home%/jre/bin”,(其中“%java_home%”的意思為剛才設定java_home的值),也可以直接寫上“E:/Java/jdk1.6.0_02”

最後再點“建立”,然後在變量名上寫classpath,該變量的含義是為java加載類(class or lib)路徑,隻有類在classpath中,java指令才能識别。其值為“.;%java_home%/lib;%java_home%/lib/tools.jar (要加.表示目前路徑)”,與“%java_home%有相同意思”

以上三個變量設定完畢,則按“确定”直至屬性視窗消失,下來是驗證看看安裝是否成功。先打開“開始”->“運作”,打入“cmd”,進入dos系統界面。然後打“java -version”,如果安裝成功。系統會顯示java的版本資訊。

另外安裝java時,安裝jdk 和 jre要有兩個目錄,安裝時都選擇在同一目錄會出現bin和lib檔案覆寫現象,進而出現無lib/tools.jar檔案的現象,到時即使正确設定了環境變量後javac也不可用!!是以安裝jdk後一定要看下在jdk/lib下是否有tools.jar檔案,有的話按照上面的方法設定環境變量就ok了

classpath作用:用于計算機找到Java的可執行檔案,也就是.class檔案。

如果将classpath的值設定為C:/myjava;. Java虛拟機先查找C:/myjava 然後再查找目前所在目錄。

classpath的值非常忌諱空格,以後在工作中也不要把源檔案放在有空格的目錄中。目錄中也不允許出現中文字元。

定義遠端接口(Arith.java)

public interface Arith extends java.rmi.Remote

{

 int [] add(int a[],int b[]) throws java.rmi.RemoteException;

}

實作遠端接口(ArithImpl.java)

import java.rmi.*;

import java.rmi.server.UnicastRemoteObject;

public class ArithImpl extends UnicastRemoteObject implements Arith

{

 private String objectName;

 public ArithImpl(String s) throws RemoteException

{

 super();

 objectName=s;

}

public int[] add(int a[],int b[])

{

 int c[]=new int[10];

 for(int i=0;i<8;i++)

  c[i]=a[i]+b[i];

 return c;

}

public static void main(String argv[])

{

 RMISecurityManager sm=new RMISecurityManager();

 System.setSecurityManager(sm);

 try{

 ArithImpl obj=new ArithImpl("ArithServer");

 Naming.rebind("//localhost/ArithServer",obj);

 System.out.println("ArithServer bound in registry");

 }catch(Exception e)

{

 System.out.println("ArithImpl error.");

 e.printStackTrace();

}

}

}

使用遠端接口開發客戶程式

import java.rmi.*;

import java.net.*;

public class ArithApp{

 public static void main(String args[])

{

 int a[]={1,2,3,4,5,6,7,8};

 int b[]={1,2,3,4,5,6,7,8};

 int result[]=new int[10];

try{

 Arith obj=(Arith)Naming.lookup("//localhost/ArithServer");

 result=obj.add(a,b);

}catch(Exception e)

{

 System.out.println("ArithApp:"+e.getMessage());

 e.printStackTrace();

}

System.out.print("Results are :"); 

for(int i=0;i<result.length;i++)

System.out.print(result[i]+"  ");

System.out.println();

}

}

寫好這3個檔案之後,進入dos環境,輸入以下指令

(1)javac Arith.java

(2)javac ArithImpl.java

(3)javac ArithApp.java

(4)rmic ArithImpl(這一步将會産生一個叫做ArithImpl_Stub.class的檔案)

(5)rmiregistry &

注:做完以上操作之後,在檔案夾中放入java.policy檔案(這個可以再jdk安裝目錄下找到)

(6)打開另外一個dos環境,輸入java -Djava.security.policy=java.policy ArithImpl(如果成功,會提示bind成功)

(7)打開另外一個dos環境,輸入java ArithApp(如果成功,會得到一串數字,這是我們調用方法得到的結果)

上一篇: RPC/RMI實驗
下一篇: RMI介紹