限制JAVA程序socket数量的定制虚拟机方法

文档序号:9866054阅读:451来源:国知局
限制JAVA程序socket数量的定制虚拟机方法
【技术领域】
[0001] 本发明设及操作系统领域,尤其设及应用程序APP的管理机制,具体是指一种限制 JAVA程序socket数量的定制虚拟机方法。
【背景技术】
[0002] 智能手机,智能路由,网关允许第Ξ方APP或插件开发都发布自己的应用,用户隐 私数据在用户不知情的情况下被开发者收集,而目前智能机操作系统I0S或amlroid都提供 沙箱机制,权限管理能让用户知道APP访问用户的个人信息如联系人,照片,蓝牙设备,位置 服务,并把访问绝定权交给用户。
[0003] 此专利提制给用户一种新的保护机制,如果APP或第Ξ方插件申请系统资源过多, 对其它程序产生影响,使其申请不到系统资源,严重会造成系统无法运行。
[0004] 同时要求智能网关产品对插件使用socket进行限制也是中国电信的需求标准。

【发明内容】

[0005] 本发明的目的是克服了上述现有技术的缺点,提供了一种能够通过修改JAVA虚拟 机源程序W及JAVA基础库源程序实现对JAVA程序所能申请到的socket资源数量进行限制 的限制JAVA程序socket数量的定制虚拟机方法。
[0006] 为了实现上述目的,本发明的限制JAVA程序socket数量的定制虚拟机方法具有如 下构成:
[0007]该限制JAVA程序socket数量的定制虚拟机方法,其主要特点是,所述的方法包括: [000引 (1)在JAVA虚拟机源程序中设置socket限制数量阔值;
[0009] (2)在JAVA基础库源程序中获取socket限制数量阔值;
[0010] (3)在订制虚拟机执行JAVA程序时,JAVA程序创建或释放socket后,更新已创建的 socket的数量,且订制虚拟机将已创建的socket的数量与所述的socket限制数量阔值相比 较;
[0011] (4)如果所述的已创建的socket的数量大于等于所述的socket限制数量阔值,贝U 提示socket数量达到上限;
[0012] (5)如果所述的已创建的socket的数量小于所述的socket限制数量阔值,则继续 步骤(3)。
[0013] 进一步地,所述的步骤(1)具体包括W下步骤:
[0014] (1.1)在JAVA虚拟机源程序main中加入解析指定socket数量的参数代码W获取 S 0 eke t限制数量阔值;
[0015] (1.2)将socket限制数量阔值存储至内存变量中。
[0016] 进一步地,所述的步骤(2)具体为:
[0017]在JAVA基础库源程序与JAVA虚拟机源程序共用的JNIEnv结构中增加一函数W获 取socket限制数量阔值。
[0018] 进一步地,所述的步骤(3)具体包括W下步骤:
[0019] (3.1)根据Socket. ^'日¥日从及5日1^日'5〇。4日1:. java更新已创建的socket的数量;
[0020] (3.2)将已创建的socket的数量与所述的socket限制数量阔值相比较。
[0021] 采用了该发明中的限制JAVA程序socket数量的定制虚拟机方法,与现有技术相 比,具有W下有益的技术效果:
[0022] 本发明在有资源有限的嵌入式系统上,防止水平较差的开发者使用socket资源后 忘记释放回改,或有开发者故意开发恶意程序用来占用系统socket资源造成其它程序无法 申请到socket资源或直接造成系统无法正常运行;同时中国电信智能网关项目明确提出了 该需求,此方法也能完美解决该需求;其操作简单,应用范围较为广泛。
【附图说明】
[0023] 图1为本发明的限制JAVA程序socket数量的定制虚拟机方法的步骤流程图。
【具体实施方式】
[0024] 为了能够更清楚地描述本发明的技术内容,下面结合具体实施例来进行进一步的 描述。
[0025] 请参阅图1所示,本发明的限制JAVA程序socket数量的定制虚拟机方法包括:
[0026] (1)在JAVA虚拟机源程序中设置socket限制数量阔值;
[0027] (2)在JAVA基础库源程序中获取socket限制数量阔值;
[00%] (3)在订制虚拟机执行JAVA程序时,JAVA程序创建或释放socket后,更新已创建的 socket的数量,且订制虚拟机将已创建的socket的数量与所述的socket限制数量阔值相比 较;
[0029] (4)如果所述的已创建的socket的数量大于等于所述的socket限制数量阔值,贝U 提示socket数量达到上限;
[0030] (5)如果所述的已创建的socket的数量小于所述的socket限制数量阔值,则继续 步骤(3)。
[0031] 在一种优选的实施方式中,所述的步骤(1)具体包括W下步骤:
[0032] (1.1)在JAVA虚拟机源程序main中加入解析指定socket数量的参数代码W获取 S 0 eke t限制数量阔值;
[0033] (1.2)将socket限制数量阔值存储至内存变量中。
[0034] 在一种优选的实施方式中,所述的步骤(2)具体为:
[00巧]在JAVA基础库源程序与JAVA虚拟机源程序共用的JNIEnv结构中增加一函数W获 取socket限制数量阔值。
[0036] 在一种优选的实施方式中,所述的步骤(3)具体包括W下步骤:
[0037] (3.1)根据Socket. javaW及ServerSocket. java更新已创建的socket的数量;
[0038] (3.2)将已创建的socket的数量与所述的socket限制数量阔值相比较。
[0039] 在实际应用中,本发明通过修改JAVA虚拟机源程序或JAVA基础库源程序实现对 JAVA程序所能申请到的socket资源数量进行限制。其实现方式具体如下:
[0040] (l)JAVA虚拟机源程序main中加入解析指定socket数量的参数代码,并将得到的 socket限制数量值存到内存变量中。
[0041] (2)由于JAVA虚拟机只起解析并执行代码的作用,开发者需要在使用socket还是 调用了化va的基础类库。所W限制代码必需要加到基础库中,JAVA虚拟机源程序和基础库 源程序之间会共用JNIEnv结构。所W要在JNIEnv结构中加入函数用来获取socket限制数 量。即在标准的JNI函数集合后增加一个函数,可取任何函数名,如下程序中的jint函数。
[0042]
[0043] (3)Java程序创建socket使用的基础库有两处,Socket, java和 Server Socke t. java。其中在Socket 的 connect方法、Server Socket 的创建、accept方法,在 运几个方法的实现中加入socket计数,并将socket计数和JNIEnv中的socket限制数比较。 当前socket分配数大于等于限制数时,抛出异常信息提示socket数量达到上限。让开发者 能知道错误原因,如下所示:
[0044]
[0045] (4)在Socket和ServerSocket的close方法实现中加入socket分配计数减1的动 作,具体如下:
[0046]
[0047] 采用了该发明中的限制JAVA程序socket数量的定制虚拟机方法,与现有技术相 比,具有W下有益的技术效果:
[004引本发明在有资源有限的嵌入式系统上,防止水平较差的开发者使用socket资源后 忘记释放回改,或有开发者故意开发恶意程序用来占用系统socket资源造成其它程序无法 申请到socket资源或直接造成系统无法正常运行;同时中国电信智能网关项目明确提出了 该需求,此方法也能完美解决该需求;其操作简单,应用范围较为广泛。
[0049]在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可W作出 各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的 而非限制性的。
【主权项】
1. 一种限制JAVA程序socket数量的定制虚拟机方法,其特征在于,所述的方法包括: (1) 在JAVA虚拟机源程序中设置socket限制数量阈值; (2) 在JAVA基础库源程序中获取socket限制数量阈值; (3) 在订制虚拟机执行JAVA程序时,JAVA程序创建或释放socket后,更新已创建的 socket的数量,且订制虚拟机将已创建的socket的数量与所述的socket限制数量阈值相比 较; (4) 如果所述的已创建的socket的数量大于等于所述的socket限制数量阈值,则提示 socket数量达到上限; (5) 如果所述的已创建的socket的数量小于所述的socket限制数量阈值,则继续步骤 ⑶。2. 根据权利要求1所述的限制JAVA程序socket数量的定制虚拟机方法,其特征在于,所 述的步骤(1)具体包括以下步骤: (1 · 1)在JAVA虚拟机源程序main中加入解析指定socket数量的参数代码以获取socket 限制数量阈值; (1.2) 将socket限制数量阈值存储至内存变量中。3. 根据权利要求1所述的限制JAVA程序socket数量的定制虚拟机方法,其特征在于,所 述的步骤(2)具体为: 在JAVA基础库源程序与JAVA虚拟机源程序共用的JNIEnv结构中增加一函数以获取 s 〇 eke t限制数量阈值。4. 根据权利要求1所述的限制JAVA程序socket数量的定制虚拟机方法,其特征在于,所 述的步骤(3)具体包括以下步骤: (3 · 1)根据Socket · java以及ServerSocket · java更新已创建的socket的数量; (3.2) 将已创建的socket的数量与所述的socket限制数量阈值相比较。
【专利摘要】本发明涉及一种限制JAVA程序socket数量的定制虚拟机方法,其中包括在JAVA虚拟机源程序中设置socket限制数量阈值;在JAVA基础库源程序中获取socket限制数量阈值;在订制虚拟机的JAVA程序创建中获取socket数量;如果socket数量大于等于socket限制数量阈值,则提示socket数量达到上限;否则结束并退出。采用该种结构的限制JAVA程序socket数量的定制虚拟机方法,在资源有限的嵌入式系统上,防止水平较差的开发者使用socket资源后忘记释放,或开发者故意开发恶意程序用来占用系统socket资源造成其它程序无法申请到socket资源或直接造成系统无法正常运行求。
【IPC分类】G06F21/56, G06F9/455
【公开号】CN105631330
【申请号】CN201510982777
【发明人】孟晶石
【申请人】上海市共进通信技术有限公司
【公开日】2016年6月1日
【申请日】2015年12月24日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1