Java 卡中小程序的坚固性
Sturdiness of an applet in Java Card
我在Java Card 中开发了一个小程序,它运行良好。
现在我正在研究这个小程序的坚固性,更准确地说,如果在小程序执行期间拔下卡会发生什么。
我想知道是否有处理此类事情的异常?
我正在搜索类似 :
的内容
try {
...
}
// If the card is disconnected while the applet execution
catch (Exception e) {
...
}
提前谢谢你。
由于智能卡里面没有电池,所以你不能有这样的try ... catch ...
。或者,您可以利用 Transactions
。事务 API 只是为了您的目标而提供的。 beginTransation()
和 commitTransation()
方法之间的操作仅在 commitTransation()
成功完成时适用。如果在 commitTransation()
之前发生任何 exeption/card 撕裂或卡片重置,所有内容 returns 都会恢复到其原始状态(即恢复到 beginTransaction()
之前的状态)
是这样的:
.
.
JCSystem.beginTransaction();
//put your critical code here.
JCSystem.commitTransaction();
.
.
您还可以使用JCSystem.commitTransaction();
在特定情况下终止交易,如下所示:
.
.
JCSystem.beginTransaction();
//put your critical code here.
if (condition) {
JCSystem.commitTransaction();
}
JCSystem.commitTransaction();
.
.
注意:
- 交易在卡中的缓冲区有限。所以你不能把整个程序放在一个事务中。但是对于典型的关键方法,它有足够的缓冲区大小。
- 您不能使用嵌套交易。
我在Java Card 中开发了一个小程序,它运行良好。 现在我正在研究这个小程序的坚固性,更准确地说,如果在小程序执行期间拔下卡会发生什么。
我想知道是否有处理此类事情的异常?
我正在搜索类似 :
的内容try {
...
}
// If the card is disconnected while the applet execution
catch (Exception e) {
...
}
提前谢谢你。
由于智能卡里面没有电池,所以你不能有这样的try ... catch ...
。或者,您可以利用 Transactions
。事务 API 只是为了您的目标而提供的。 beginTransation()
和 commitTransation()
方法之间的操作仅在 commitTransation()
成功完成时适用。如果在 commitTransation()
之前发生任何 exeption/card 撕裂或卡片重置,所有内容 returns 都会恢复到其原始状态(即恢复到 beginTransaction()
之前的状态)
是这样的:
.
.
JCSystem.beginTransaction();
//put your critical code here.
JCSystem.commitTransaction();
.
.
您还可以使用JCSystem.commitTransaction();
在特定情况下终止交易,如下所示:
.
.
JCSystem.beginTransaction();
//put your critical code here.
if (condition) {
JCSystem.commitTransaction();
}
JCSystem.commitTransaction();
.
.
注意:
- 交易在卡中的缓冲区有限。所以你不能把整个程序放在一个事务中。但是对于典型的关键方法,它有足够的缓冲区大小。
- 您不能使用嵌套交易。