Java RMI 概述

定義


Java遠程方法調用,即Java RMI(Java Remote Method Invocation)是Java編程語言裏,一種用於實現遠程過程調用的應用程序編程接口。它使客戶機上運行的程序可以調用遠程服務器上的對象。

如何製作服務端(“Say Hello 爲例”)

1.製作服務端接口

import java.rmi.*;

public interface MyRemote extends Remote{	
	public String sayHello() throws RemoteException;
}

2.製作服務端接口實現

import java.rmi.*;
import java.rmi.server.*;

public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote{
	public String sayHello(){
		return "Server says: 'Hello'";
	}
	public MyRemoteImpl() throws RemoteException{}
	
	public static void main(String[] args){
		try{
			MyRemote service = new MyRemoteImpl();
			Naming.rebind("RemoteHello", service);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}

3.使用rmic產生stub和skeleton

打開新的cmd命令窗口,執行:

javac MyRemote.java
javac MyRemoteImpl.java
rmic MyRemoteImpl

4.啓動rmiregistry

打開新的cmd命令窗口,執行:

rmiregistry

5.啓動服務端服務

打開新的cmd命令窗口,執行:

java MyRemoteImpl

客戶端如何調用?

1.製作客戶端

import java.rmi.*;
public class MyRemoteClient{
	public static void main(String[] args){
		new MyRemoteClient().go();
	}	
	
	public void go(){
		try{
			MyRemote service = (MyRemote)Naming.lookup("rmi://127.0.0.1/RemoteHello");
			String s = service.sayHello();
			
			System.out.println(s);
		}catch(Exception e){
			e.printStackTrace();
		}
	}

}

2.運行

javac MyRemoteClient.java
java MyRemoteClient

輸出結果:Server says: 'Hello'

(需要保證服務端第三步製作的stub與客戶端程序在同一個目錄)


原理

原理圖

總結:Client程序通過查找客戶端stub與服務端的Skeleton進行通信,服務端的Skeleton調用服務端的實際執行程序,最終結果通過Skeleton、Stub返回給Client

發佈了89 篇原創文章 · 獲贊 10 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章