生活随笔
收集整理的這篇文章主要介紹了
java rmi 入门实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
java?rmi?入門實例
?(2009-06-16 16:07:55) 轉載▼
標簽:? java ? rmi ? 雜談 | 分類:?java-基礎 |
?java rmi即java遠程接口調用,實現了2臺虛擬機之間的程序調用,這樣,網絡上的任何兩臺計算機就可以相互調用對方的程序(如果允許)。
??好了,下面就以經典的 Hello world作為例子講解。開發rmi的步驟如下。 1、編寫遠程接口,遠程接口實現類 2、編譯 3、生成接口實現類存根 4、在服務器端啟動rmiregistry命令 5、在服務端注冊發布遠程對象 6、在客戶端獲取遠程對象 實例: 以下遠程接口類為HelloRemote,實現類為HelloImpl,服務器端的發布類為RMIServer,客戶端的調用類為RMIClient,為簡單考慮,服務器和客戶端均在同一臺機器(所謂服務器和客戶機,是兩者運行在2個虛擬機進程下)。 一、編寫類 1、遠程接口類,需基礎java.rmi.Remote接口,且方法拋出RMIException public interface HelloRemote extends Remote{ public void sayHello() throws RemoteException; ?? } 2、遠程接口實現類,需繼承UnicastRemoteObject public class HelloImpl extends UnicastRemoteObject ?implements HelloRemote{ public HelloImpl() throws RemoteException { super(); } public void sayHello() throws RemoteException { System.out.println("Hello World!"); } } 3、服務端類 服務端類用于發布遠程對象 public class RMIServer { public static void main(String[] args) throws RemoteException, MalformedURLException { HelloRemote hello=new HelloImpl(); Naming.rebind("hello", hello); } } 4、客戶端類 public class RMIClient { public static void main(String args[]) throws MalformedURLException, RemoteException, NotBoundException{
???????????????????????????System.setSecurityManager(new ??RMISecurityManager());//如果服務器和客戶端不再同一臺機器要加這行 HelloRemote hello=(HelloRemote) Naming.lookup("hello");
??hello.sayHello(); } } 遠程接口類需同時在服務端和客戶端存在 二、編譯(注意以上類都沒有包,這里主要是簡化操作考慮) 客戶端文件夾在 E:/client(簡稱client),服務端在E:/server(簡稱server) 分別編譯以上4個文件。然后將Hello.class分別放到client和server下,將Client.class放到client下,Server.class放到server下,HelloImpl.class文件放到server文件夾下 三、生成存根和骨架 進入server文件夾在命令行下輸入命令 rmic HelloImpl,將生成一個HelloImpl_Stub.class文件 將此文件復制到client目錄下(server與client均該文件) 四、
運行注冊程序 在命令行中進入server文件夾 輸入命令 rmiregistry,用于啟動注冊,在此前需設置classpath為E:/server,輸入rmiregistry命令后將在server文件夾下生成一個 五、運行服務類 java Server 六、運行客戶類 java Client 你將看到執行成功。 當你執行不順利時,請看看下面: 1、最終執行時要3個命令行窗口,一個運行rmiregistry,一個運行Server,一個運行Clinet,先執行rmiregistry命令,接著執行java Server,最后執行java Client 2、客戶端和服務端均要有存根(HelloImpl_Stub.class)和遠程接口的定義,且包名要一致。 3、當運行服務器時,提示找不到HelloImpl_Stub,那是你沒指定類路徑,那請你在執行rmiregistry前設置classpath 4、出現AscessableException訪問非法時,需要修改此略文件,在jre/security目錄下的java.policy文件中(如果你有多個jre,你無法確定是哪個。那就全部修改吧),在該文件中添加如下內容 grant {
??
??
??
??
?permission java.net.SocketPermission "*:1024-65535",
??
??
??
??
??
??
??"connect,accept";
??
??
??
??
?permission java.net.SocketPermission "*:80","connect";
??
??
??}; 5、指定端口,默認是1099,可以在運行rmiregistry時指定 如 rmiregistry 1098,也可以在Server.java中指定,如Registry.
createRegistry(1088). ? 6、綁定地址的設置 簡單形式Naming.bind("hello"),本機地址時才可以 完全形式Naming.bind("rmi://117.45.220.11:1099/RMI_Hello")
轉載于:https://www.cnblogs.com/wshsdlau/p/3532071.html
總結
以上是生活随笔為你收集整理的java rmi 入门实例的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。