| |
使用JavaCard RMI接口 |
|
时间: 2003-11-25 来自:yesky |
 |
|
Java Card小应用程序编程的第二个模型是JavaCard RMI (
JCRMI),严格的说它是J2SE
RMI分布对象模型的缩小版。
这是一个以对象为中心的模型,根据这个模型你在上一节看到的APDU通信和句柄将被抽象化;取而代之的是你处理对象。这简化了编程和集成基于Java
Card技术的设备。
在RMI模型中,一个服务器应用程序创建并生成可访问的远程对象,并且一个客户应用程序获得到服务器的远程对象的远程引用,然后调用它们的远程方法。在JCRMI中,Java
Card小应用程序是服务器,而主应用程序是客户端。
JavaCard
RMI简介
两个程序包提供了JavaCard RMI支持:
1、java.rmi定义了Java
2标准版java.rmi程序包的一个子集。它定义了Remote接口和RemoteException类。除此之外,没有包含其他传统的java.rmi类。
2、Javacard.framework.service定义了Java
Card小应用程序服务类,包括RMI服务类CardRemoteObject和RMIService。
3、Class
CardRemoteObject定义了两个方法启动和禁止卡片外的对象的远程访问。类RMIService处理RMI请求(转化输入的命令APDU为远程方法调用)。
编写一个JCRMI应用程序类似于编写一个典型的基于RMI的应用程序:
1.定义远程类的行为为一个接口。
2.编写远程类的服务器实现,和支持类。
3.编写一个使用远程服务的客户机程序和支持类。
注意JCRMI没有改变小应用程序的基本结构或者生命周期,你不久就会看到。
远程接口
创建一个远程服务中的第一步是定义它的可见行为。远程接口定义你的小应用程序提供的服务。和在标准的J2SE
RMI中一样,所有的Java Card
RMI远程接口必须扩展java.rmi.Remote接口。为了说明,这里有一个远程接口,揭示一个取得保存在卡片里的余额的方法:
import java.rmi.*; import javacard.framework.*;
public
interface MyRemoteInterface extends Remote { ... public short
getBalance() throws RemoteException; ... // A complete credit card
application would also define other // methods such as credit() and
debit() methods. ... }
| 列表1、远程接口
MyRemoteInterface定义这个远程方法,在我们的示例中一个getBalance
()方法,来取得保存在智能卡中的余额。注意,除了Java
Card特定的导入之外,这个远程接口看起来完全象一个标准的RMI远程接口。 服务器实现
下一步是实现服务器的行为。服务器实现包含Java
Card小应用程序,在所有的你已经定义的远程接口当中的实现,和任何与你的应用程序相关的特定类。
|
|
|
|
|
|
|
|