用RMI實現基於Java的分散式運算

來源:互聯網
上載者:User

Java 2 Enterprise Edition(J2EE)遠程方法調用(Remote Method Invocation,RMI)架構允許你建立透明的、分布式的服務和應用程式。基於RMI的應用程式由Java對象構成,這些對象相互調用,同時忽略對方的位置。換言之,一個Java對象可調用另一個虛擬機器上的某個Java對象的方法,整個過程和調用同一個虛擬機器上的某個Java對象的方法無異。駐留在不同虛擬機器上的對象為了相互獲得引用,可以使用RMI的尋找服務,或者將對象引用作為方法調用的一個參數或者傳回值來接收。參數和傳回值藉助Java的對象序列化機制由RMI來進行封送。

遠程對象和介面

Java提供了一個完全限定名稱為java.rmi.Remote的介面。任何對象要想參與和另一個Java對象的遠端工作階段,就必須直接或間接地實現該介面。尤其要注意的是,任何由java.rmi.Remote介面來標識的對象都暗示著它的方法可從其他任何虛擬機器進行調用。實現了java.rmi.Remote介面的對象通常稱為“遠程對象”,必須採用以下方式來聲明它的方法:

每個支援遠程調用的方法都必須在其throws子句中聲明java.rmi.RemoteException。

對於一個可遠程調用的方法,它的每個非基本(nonprimitive)參數或者傳回值都必須直接或間接地聲明為實現了java.io.Serializable介面。

除了實現java.rmi.Remote介面和正確聲明任何遠程方法之外,遠程對象必須提供一個無參數的建構函式,它能引發一個java.rmi.RemoteException異常。這就保證了對象可基於一種序列化狀態來遠程構造。

遠程對象必須匯出,以接收傳入的遠程方法調用。為此,你通常需要擴充java.rmi.server.UnicastRemoteObject或者java.rmi.activation.Activatable。通過對其中任何一個類進行擴充,遠程對象就可在建立時自動匯出。

以下介面定義展示了java.rmi.Remote介面最典型的用法:

import java.rmi.Remote;
import java.rmi.RemoteException;
public interface TimeKeeper extends Remote
{
public String currentDate() throws RemoteException;
public String currentTime() throws RemoteException;
}

由於String類聲明為實現了java.io.Serializable介面,所以String是遠程方法的有效傳回型別。

以下代碼展示了如何?TimeKeeper介面,以便定義一個有效遠程對象:

import java.rmi.RemoteException;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class TimeKeeperImpl implements TimeKeeper
{
public TimeKeeperImpl()
throws RemoteException
{
}
public String currentDate() throws RemoteException
{
Calendar cal = new GregorianCalendar();
String retVal = (cal.get(Calendar.MONTH) + "/" +
cal.get(Calendar.DAY_OF_MONTH) + "/" +
cal.get(Calendar.YEAR));
return retVal;
}
public String currentTime() throws RemoteException
{
Calendar cal = new GregorianCalendar();
String retVal = (cal.get(Calendar.HOUR_OF_DAY) + ":" +
cal.get(Calendar.MINUTE) + ":" +
cal.get(Calendar.SECOND));
return retVal;
}
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.