一种Java卡的Java代码补丁方法_2

文档序号:8339432阅读:来源:国知局
应用协议数据单元命令以数据流的方式从卡外 下载到卡内,并存储至ROM区域或EEPROM区域,在卡内实现补丁代码存储的步骤为: 如待打补丁的包的ID小于固化到ROM中Java包的个数,为ROM区域的包;对于ROM区 域的包采取第一补丁方法;如待打补丁的包的ID不小于固化到ROM中Java包的个数,为 EEPROM区域的包;对于EEPROM区域的包采取第二补丁方法; 所述的第一补丁方法为在Java卡芯片中预先分配一定大小的EEPROM作为Java补丁 代码空间,该空间包含补丁管理表和补丁信息表,所述的补丁管理表用于维护固化在ROM 区域的每个包的补丁数及其对应的补丁信息表的偏移地址;所述的补丁信息表的空间不需 要事先分配,而是在打补丁的时候从EEPROM中分配,所述的补丁信息表存储指定个数的方 法的绝对地址、修正后方法的异常信息偏移地址、修正后方法的方法体偏移地址和下一级 补丁信息表的偏移地址。
[0014] 所述的第二补丁方法不采用额外的空间,在原有方法的入口地址处,使用第一个 字节作为是否打补丁的标志位;如果第一个字节不等于0,表示该方法没有打过补丁;如果 等于0,表示方法该打过补丁,则后面2个字节表示新方法的偏移地址。。
[0015] 为进一步实现本发明的目的,还可以采用以下技术方案: 优选的一种Java卡的Java代码补丁方法,第一补丁方法包括以下步骤: ① 将卡片定位到补丁管理表,访问补丁管理表的静态数组变量,增加补丁方法的个数, 检查是否存在补丁信息表,如不存在则需要额外分配空间来存储补丁信息表; ② 在补丁信息表中增加一条新的补丁方法信息,包括三部分内容:方法的绝对地址、修 正后方法的异常信息偏移地址和修正后方法的方法体偏移地址; ③ 如果补丁信息表中补丁信息已满,需要从EEPROM申请新的空间,建立下一级补丁信 息表,并在现有补丁信息表最后写入新表的偏移地址,然后转到第二步继续执行。
[0016] 优选的一种Java卡的Java代码补丁方法,第二补丁方法包括以下步骤: ① 卡片定位到原方法的方法体,将第一字节更新为〇 ; ② 从EEPROM分配空间来存储补丁代码,并将补丁代码的偏移地址写入到原方法的方 法体的第2和第3字节中。
[0017] 实施例1 一种Java卡的Java代码补丁方法,包括以下步骤: (1) 在Java卡芯片中预先在EEPROM中分配一块区域作为Java代码的补丁管理表,在 为不同的包打补丁时,动态从EEPROM中分配一块区域作为Java代码的补丁信息表,若每个 包内补丁数目超过10,则需要多级补丁信息表; Java代码补丁由补丁管理表、补丁信息表和补丁代码组成; 补丁管理表大小为固化到ROM区域的Java包的个数X 3字节,其中3字节的数据分别 为1字节的补丁个数和2字节的补丁信息表的偏移地址;补丁管理表的结构如表1所示。
[0018] 表1补丁管理表的结构
【主权项】
1. 一种Java卡的Java代码补丁方法,其特征在于:包括如下步骤: (1) 在Java卡芯片中预先在EEPROM中分配一块区域作为Java代码的补丁管理表,在 为不同的包打补丁时,动态从EEPROM中分配一块区域作为Java代码的补丁信息表,若每个 包内补丁数目超过10,则需要多级补丁信息表; Java代码补丁由补丁管理表、补丁信息表和补丁代码组成; 补丁管理表大小为固化到ROM区域的Java包的个数X 3字节,其中3字节的数据分别 为1字节的补丁个数和2字节的补丁信息表的偏移地址; 每级补丁信息表的大小为62字节,每级补丁信息表内包含10个补丁方法,补丁信息表 的数据信息包括本级的10个补丁方法X 6字节和2字节的下一级补丁信息表的偏移地址, 其中6字节的数据分别为2字节方法的绝对地址、2字节修正后方法的异常信息偏移地址和 2字节修正后方法的方法体偏移地址; (2) 产生要修改的Java方法的补丁代码,所述的补丁代码包括异常处理信息和方法 体; (3) 将所有方法的Java补丁代码通过应用协议数据单元命令以数据流的方式从卡外 下载到卡内,并存储至ROM区域或EEPROM区域,在卡内实现补丁代码存储的步骤为: 如待打补丁的包的ID小于固化到ROM中Java包的个数,为ROM区域的包;对于ROM区 域的包采取第一补丁方法;如待打补丁的包的ID不小于固化到ROM中Java包的个数,为 EEPROM区域的包;对于EEPROM区域的包采取第二补丁方法; 所述的第一补丁方法为在Java卡芯片中预先分配一定大小的EEPROM作为Java补丁 代码空间,该空间包含补丁管理表和补丁信息表,所述的补丁管理表用于维护固化在ROM 区域的每个包的补丁数及其对应的补丁信息表的偏移地址;所述的补丁信息表的空间不需 要事先分配,而是在打补丁的时候从EEPROM中分配,所述的补丁信息表存储指定个数的方 法的绝对地址、修正后方法的异常信息偏移地址、修正后方法的方法体偏移地址和下一级 补丁信息表的偏移地址; 所述的第二补丁方法不采用额外的空间,在原有方法的入口地址处,使用第一个字节 作为是否打补丁的标志位;如果第一个字节不等于〇,表示该方法没有打过补丁;如果等于 0,表示方法该打过补丁,则后面2个字节表示新方法的偏移地址。
2. 根据权利要求1所述的一种Java卡的Java代码补丁方法,其特征在于:第一补丁 方法包括以下步骤: ① 将卡片定位到补丁管理表,访问补丁管理表的静态数组变量,增加补丁方法的个数, 检查是否存在补丁信息表,如不存在则需要额外分配空间来存储补丁信息表; ② 在补丁信息表中增加一条新的补丁方法信息,包括三部分内容:方法的绝对地址、修 正后方法的异常信息偏移地址和修正后方法的方法体偏移地址; ③ 如果补丁信息表中补丁信息已满,需要从EEPROM申请新的空间,建立下一级补丁信 息表,并在现有补丁信息表最后写入新表的偏移地址,然后转到第二步继续执行。
3. 根据权利要求1所述的一种Java卡的Java代码补丁方法,其特征在于:第二补丁 方法包括以下步骤: ① 卡片定位到原方法的方法体,将第一字节更新为〇 ; ② 从EEPROM分配空间来存储补丁代码,并将补丁代码的偏移地址写入到原方法的方 法体的第2和第3字节中。
【专利摘要】本发明公开了一种Java卡的Java代码补丁方法,对Java卡内存储于ROM区域Java代码和EEPROM区域Java代码提供了两种不同处理方式,对于ROM区域的Java代码,只需事先分配补丁管理表,采用多级补丁信息表的方法,无需事先分配空间给补丁信息表,补丁信息表在打补丁的时候动态分配,这样可以大大减少事先分配的空间;对于EEPROM区域Java代码,无需开辟额外空间进行管理,直接在原方法地址进行修改,减少查表的操作,进一步提高方法执行的速度;本发明的Java代码补丁方法用户不用更换Java卡即可对Java卡中的Java方法打补丁,达到功能升级或者缺陷修复的目的,在打补丁后能确保Java卡的运行效率,满足客户对时间敏感应用的需要,能够避免更新应用程序造成的客户数据丢失,并且具有修复需要的时间短的优点。
【IPC分类】G06F9-445
【公开号】CN104657185
【申请号】CN201510108055
【发明人】刘哲理, 隋传波
【申请人】东港股份有限公司
【公开日】2015年5月27日
【申请日】2015年3月12日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1