JAVA RMI遠程方法調用簡單實例 – JAVA編程語言程序開發技術文章

RMI的概念


RMI(Remote Method Invocation)遠程方法調用是一種計算機之間利用遠程對象互相調用實現雙方通訊的一種通訊機制。使用這種機制,某一臺計算機上的對象可以調用另外一臺計算機上的對象來獲取遠程數據。RMI是Enterprise JavaBeans的支柱,是建立分佈式Java應用程序的方便途徑。在過去,TCP/IP套接字通訊是遠程通訊的主要手段,但此開發方式沒有使用面向對象的方式實現開發,在開發一個如此的通訊機制時往往令程序員感覺到乏味,對此RPC(Remote Procedure Call)應運而生,它使程序員更容易地調用遠程程序,但在面對復雜的信息傳訊時,RPC依然未能很好的支持,而且RPC未能做到面向對象調用的開發模式。針對RPC服務遺留的問題,RMI出現在世人面前,它被設計成一種面向對象的通訊方式,允許程序員使用遠程對象來實現通信,並且支持多線程的服務,這是一次遠程通訊的革命,為遠程通信開辟新的裡程碑。


RMI的開發步驟



  1. 先創建遠程接口及聲明遠程方法,註意這是實現雙方通訊的接口,需要繼承Remote
  2. 開發一個類來實現遠程接口及遠程方法,值得註意的是實現類需要繼承UnicastRemoteObject
  3. 通過javac命令編譯文件,通過java -server 命令註冊服務,啟動遠程對象
  4. 最後客戶端查找遠程對象,並調用遠程方法

簡單實例


首先為服務建立一個Model層,註意因為此對象需要現實進行遠程傳輸,所以必須繼承Serializable

package rmi.model;

import java.io.Serializable;

//註意對象必須繼承Serializable
public class PersonEntity implements Serializable {
private int id;
private String name;
private int age;

public void setId(int id) {
this.id = id;
}

public int getId() {
return id;
}

public void setName(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void setAge(int age) {
this.age = age;
}

public int getAge() {
return age;
}
}

創建遠程接口PersonService,註意遠程接口需要繼承Remote

package rmi.service;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;
import rmi.model.*;

//此為遠程對象調用的接口,必須繼承Remote類
public interface PersonService extends Remote {
public List<PersonEntity> GetList() throws RemoteException;
}

建立PersonServiceImpl實現遠程接口,註意此為遠程對象實現類,需要繼承UnicastRemoteObject

package rmi.serviceImpl;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.LinkedList;
import java.util.List;

import rmi.model.PersonEntity;
import rmi.service.*;

//此為遠程對象的實現類,須繼承UnicastRemoteObject
public class PersonServiceImpl extends UnicastRemoteObject implements PersonService {

public PersonServiceImpl() throws RemoteException {

發佈留言