移動通信中RMI技術及其應用
從圖1中可見,RMI體系結構是由多層組成的。stub/skeleton層中使用了存(stub) 框架(ske1eton) 的方法來隱藏底層通訊的實現細節。stub代表遠程對象的客戶端對象。具有和遠程對象相同的接口或方法列表。當客戶端程序調用遠程對象的方法時.實際上調用的是stub對象中的方法.stub將請求轉發到遠程對象。服務器端的skeleton對象負責將stub傳來的信息解碼。并將解碼后的信息交給實際的遠程對象進行處理.遠程對象處理完畢后將結果傳給skeleton對象。再由skeleton對象傳給客戶端的stub對象,最后stub對象將這些信息傳給客戶端程序。
3.2 移動通信中Java智能卡的RMI技術及其應用
除了與J2SE中的RMI技術非常相似外, 由于智能卡資源的局限,Java智能卡中的RMI技術與J2SE中的RMI技術是有所區別的。在Java智能卡中,JavaCard小應用程序是服務器.主應用程序是客戶端。Java智能卡RMI與J2SE中的RMI的主要區別體現在如下幾點:
1)J2SE中的RMI協議通信是通過遠程接口實現的存根與遠程接口實現的框架完成的,而在Java智能卡中的RMI應用中。客戶端應用程序與服務器端應用程序的通信過程是先獲取一個RMIService服務,然后由該服務程序再與服務器的應用進行通信。
2)在Java智能卡的RMI模型中。APDU(Applicafion PintocolData Unit,應用協議數據單元)通信的過程被抽象化。不是直接通過APDU命令完成,而是通過處理對象的方式完成的。
3)Java智能卡RMI模型中的軟件包與J2SE中RMI的軟件也有不同,分別是jave. rmi與javacard.framework.service。其中java.rmi包中定義了Remote接口與RemoteExcepfion類,而javacard.framework.service軟件包中定義了JavaCard小應用程序服務類, 包括CardRemoteObject和RMISenrice類。CardRemoteObject類中定義了啟動和禁止卡外對象遠程訪問的方法。而RMIServiee用于處理RMI請求并轉化輸入的APDU命令為遠程方法調用。
編寫一個Jaya智能卡的應用程序一般要包含以下幾步(下面給出的是典型的電子錢包的例子):
1)定義一個遠程服務的接口
該接口負責定義Jaya智能卡小應用程序所能提供的服務,同樣該接口必須擴展java.rmi.Remote。
import java.rmi.*;
importjavaeard.framework.*;
public interface EPInterfaee extends Remote {
public short getBalance0 throw RemoteExeeption;
//有關電子錢包應用中的方法聲明
...
}
2)編寫遠程類的服務器實現和相應的支持類
在Java智能卡中,小應用程序是RMI服務器端,一個典型的小應用程序如圖2所示n1:
圖中MyRemoteC1ass是遠程服務器類.可以實現遠程接口MyRemote來實現Remote。也可以通過擴展一個相應的智能卡遠程對象類f圖中(CardRemoteObject)來實現Remote。總之所有遠程應用的實現類都必須實現Remote接口 RMIService負責將APDU調用轉換為RMI調用.Dispatcher負責將收到的APDU命令分發給RMIService 從圖中可知,服務器的實現主要包括Jaya智能卡小應用程序、遠程服務接口的實現類及與應用程序相關的類。下面是小應用程序的結構:
評論