专利名称:一种业务特性的管理系统和方法
技术领域:
本发明涉及计算机领域,尤其涉及一种业务特性包的管理系统和方法。
背景技术:
J2EE Web应用技术在企业级应用领域已被广泛采用,但对于企业级软件规模和复杂性不断扩大的今天,软件的模块化设计开发和支持按业务特性发布的前店后厂式软件架构已逐渐成为发展的趋势。Web应用的模块化开发和设计一直是软件架构师和开发人员追求的目标,但缺乏统一规范和架构的支撑。OSGi的企业级规范(OSGi 4. 2)为在插件化环境下运行J2EE Web应用提供了很好的支撑,制定了插件化运行环境支撑Web应用的规范(Web Applications Specification), 使得Web应用也具备了模块化开发运行、动态可变可扩展的能力。J2EE Web应用可平滑迁移到OSGi架构下运行,对于现有的应用不需做太大调整即可在OS Gi框架下运行,大大节约了成本。业务逻辑层(Enterprise Bean)具备了模块化和可动态扩展的能力。现有技术利用Fragment实现业务特性包web层的模块化,具体来说就是把业务特性包的Web层打包成Fragment附着到基础WAB (Web Application Bundle, WAB)上,那么在基础WAB启动的时候,同时会加载Fragment中的Web资源,但是Fragment没有生命周期, 无法做到动态扩展,如果Fragment依赖了基础WAB没有依赖的类,是无法在运行态添加到运行环境的,必须要重启基础WAB,而且Fragment —旦加载运行,也是无法动态卸载的,如果要卸载同样要重启基础WAB,会影响其他业务特性的正常使用。现有技术单点登录(Single Sign On, SS0)方案中每个独立的业务特性WAB都必须包含所有的资源才可以运行,那么在一个完整的应用中就存在同一资源同时在不同的业务特性WAB存在的问题,导致资源重复部署,如果当某个基础资源需要更新时,还需要同步修改所有涉及的业务特性包,大大增加了应用的复杂度和维护成本。
发明内容
本发明提供一种扩展业务特性包的管理系统和方法,解决Web层WAB缺乏模块化和动态扩展的能力问题,为企业Web开发提供了更灵活和高效的解决方案。本发明涉及一种基于扩展业务WAB的管理方法,包括根据Web资源请求,获取基础特性包标识和资源请求路径,所述资源请求路径为所要获取的资源在业务特性包中路径;获取已有的基础特性包和业务特性包,从中筛选出挂载标识与Web资源请求中获取的基础特性包标识一致的业务特性包;所述挂载标识存储于业务特性包中,用于指定所要挂载的基础特性包;根据所述资源请求路径加载上述通过筛选的业务特性包,并返回获取的资源。本发明涉及一种基于扩展业务WAB的管理系统,包括业务特性模块,用于存储业务特性包,所述业务特性包设有指向所要挂载的基础特性包的挂载标识;基础特性模块,用于存储基础特性包,所述基础特性包包含了业务特性包所需的基础资源;加载模块,用于接收Web资源请求,获取基础特性包标识和资源请求路径,所述资源请求路径为所要获取的资源在业务特性包中路径;根据Web资源请求加载基础特性包,并在基础特性包中未加载到所需资源时,调用委托模块进一步来完成资源的加载;委托模块,获取已有的基础特性包和业务特性包,从中筛选出挂载标识与Web资源请求中获取的基础特性包标识一致的业务特性包,以资源请求路径加载上述通过筛选的业务特性包,获取并返回资源到加载模块。本发明涉及一种针对扩展业务WAB的加载装置,包括导入模块,用于接收由加载模块传递来的基础特性包标识和业务特性包中资源所在的资源请求路径;筛选模块,用于获取已有的基础特性包和业务特性包中,从中筛选出挂载标识和导入模块中获取的基础特性包标识一致的业务特性包,所述挂载标识存储于业务特性包中,用于指定所要挂载的基础特性包;资源获取模块,用于根据指定的资源请求路径获取业务特性包的资源,并返回给加载模块。本发明通过将Web层分为基础特性包(基础WAB)和业务特性包(业务WAB)来实现模块化,并在业务特性包中增设挂载标识,结合委托模块实现了业务特性包的动态扩展。
图1为本发明的一种业务特性的管理方法流程示意图;图2为本发明适用的一种Web服务器网络架构图;图3为本发明的一种业务特性的模块管理的系统结构框图;图4为本发明的一种业务特性的模块管理的方法信令流程图;图5为本发明的一种业务特性的模块管理的委托模块结构示意图。
具体实施例方式本发明的一种业务特性的模块管理的方法实施例,如图1所示,包括S1001、根据Web资源请求,获取基础特性包标识和资源请求路径,所述资源请求路径为所要获取的资源在业务特性包中路径; 所述基础特性包(基础WAB)和业务特性包(业务WAB)统称为套件Bundle,均属于J2EE服务器中里OSGI架构上的Web层概念,实际应用中还可以是基于Spring-DM框架或者Felix框架的Bundle。其中基础WAB(Web Application Bundle,WA^被加载模块加载,主要提供Web层显示的基础资源,如字体、颜色、线条、静态文档、HTTP网页、图像、声音文件等;而业务WAB则是根据具体的业务需求从Web层提取出来,拥有独立的生命周期和类加载器,可以是挂载在一个基础WAB或者同时挂载在多个基础WAB上,使用该基础WAB的基础资源来形成满足特定业务需求的界面,如一个用来完成编辑菜单栏的业务WAB,或者一个用来提供画图工具操作栏的业务WAB。业务WAB除使用基础WAB中资源外,自身也可以携带基础WAB中没有的资源,如独特的菜单logo,音频文件等。S1002、获取已有的基础特性包和业务特性包,从中筛选出挂载标识与Web资源请求中获取的基础特性包标识一致的业务特性包;所述挂载标识存储于业务特性包中,用于指定所要挂载的基础特性包;在OSGi框架中的套件上下文BundleContext里登记了当前框架中的基础WAB和
6业务WAB。当加载模块根据Web资源请求从基础WAB中没有加载到所要的资源时,所述加载模块将Web资源请求转发给委托模块,委托模块从所述Web资源请求中获取基础WAB标识和资源请求路径;委托模块根据挂载标识Host-War对BundleContext获取的基础WAB和业务WAB进行筛选,其中业务WAB里的挂载标识Host-War和所述Web资源请求中获取的基础 WAB标识一致时表示业务WAB筛选通过。所述挂载,是指业务特性包通过使用基础特性包的资源来实现Web层的特定业务呈现,业务特性资源放在业务特性包的指定路径便能在呈现网页时被自动加载,所述路径由该网页代码决定,通常存在于html文件中。S1003、根据所述资源请求路径加载上述通过筛选的业务特性包,并返回获取的资源。所述通过筛选的业务WAB可以是多个不同类的业务WAB,即为了满足Web层中不同业务需求而创建的业务WAB ;也可以是多个同类的且具有不同优先级的业务WAB。在加载模块调用委托模块时会传递基础WAB标识和资源请求路径path,所述资源请求路径path指明了业务WAB中要获取的资源所在路径,对于不同类的业务WAB,path确定了拥有所需资源的业务WAB ;对于通过筛选且具有不同优先级的业务WAB则生成为业务WAB组,在所述业务 WAB的清单文件MANIFEST. MF中保存有优先级标识字associate-rank,通过所述优先级标识对所述业务特性包组中的业务特性包按优先级进行排序;委托模块根据资源请求路径向已完成优先级排序的业务特性包组中各业务特性包加载所要资源,并返回最先获取到的资源,以此提供但不局限于业务WAB更新能力。当所述业务WAB不存在优先级标识且已存在业务特性包,能够通过所述资源请求路径提供所需资源的时,后续上传并更新所述业务WAB 时,进一步需要删除原有的业务WAB。本发明的一种业务特性的模块管理的系统实施例,如图2、3所示,在本实施例业务特性包具体为业务WAB、基础特性包具体为基础WAB,具体描述如下业务特性模块204,用于存储业务特性包,所述业务特性包设有指向所要挂载的基础特性包的挂载标识;所述业务WAB主要用于提供业务USLs、Conversation配置和菜单素材资源等;基础特性模块205,用于存储基础特性包,所述基础特性包包含了业务特性包所需的基础资源;所述基础WAB主要用来提供Web显示资源、支持XML语言、进一步包含了平台主题、扩展主题、平台USLs、Business Conversation的资源;套件Bundle库211,包含了业务Bundle、平台Bundle、第三方Bundle ;其中业务 Bundle提供业务逻辑层的功能实现;平台Bundle提供对应平台的接口 ’第三方Bundle为由第三方提供的标准类库;加载模块212,用于接收Web资源请求,获取基础特性包标识和资源请求路径,所述资源请求路径为所要获取的资源在业务特性包中路径;根据Web资源请求加载基础特性包,并在基础特性包中未加载到所需资源时,调用委托模块进一步来完成资源的加载;用于基础特性包以及bundle库的加载、卸载和更新;在获取不到对应资源时,进一步调用委托模块从业务特性模块中查找所需的资源;委托模块213,用于在加载模块无法加载到所需资源时提供委托功能,获取已有的基础特性包和业务特性包,从中筛选出挂载标识与Web资源请求中获取的基础特性包标识一致的业务特性包,以指定的资源请求路径加载上述通过筛选的业务特性包,获取并返回资源到加载模块;Bundle库211被基于JAVA环境207的OSGI框架206所加载,完成了 Web服务器的业务逻辑、消息驱动、消息接口以及事物接口等业务层和数据层的构建,所述加载模块212 和委托模块213也是在构建Web业务层时被加载到内存中。业务特性模块204和基础特性模块205均存储在物理存储中,分别用来保存业务WAB和基础WAB ;在网络架构中,Web服务器203可以连接这手机终端201或者PC终端202,还可以是PDA等其他终端设备,终端通过浏览器登入Web服务器浏览网页时,Web服务器加载资源向终端呈现对应网页的Web内容。 过程具体为在所述终端发起http访问请求时,通过Web服务器的硬件209、操作系统208、 JAVA环境207、OSGI框架206逐层传递所述访问请求,并最终通过基础WAB和业务WAB生成Web应用支撑框架,展示在终端的浏览器中;已被加载并运行于内存的Bundle库可以涵盖Web服务器的各个层面,可以与所述硬件、操作系统、JAVA环境或OSGI框架实现交互。本发明的一个基于Spring-DM框架的业务特性的模块管理方法实施例,如图4所示,在本实施例中,业务特性包具体为业务WAB、基础特性包表述为基础WAB,挂载标识表述为Host-War,首先要生成业务WAB,具体为按照套件的架构特性生成文件,并以业务特性组建资源,在MANIFEST. MF中增加所要挂载的基础特性包标识作为Host-War。本实施例具体实现如下S301、加载模块中的资源加载函数ResourceLoader,转发Web资源请求消息给包入口模块BimdleEntry ;—个具体的Web资源请求的产生过程可以是用户打开服务器端的一个Web网页,服务器获取到加载对应网页的HTTP请求,服务器在运行所述HTTP请求中关于Web资源加载指令时,由加载模块发起Web资源请求,所述Web资源请求中包含了基础 WAB和资源请求路径,所述资源请求路径为所需加载资源所在路径。S302、加载模块里的包入口函数BundleEntry判断基础特性模块中存储的已有的基础WAB是否存在Web资源请求中所需的资源。具体操作为如果从所述基础WAB中获取到了所需的资源则进入S303 ;如果没有获取到所需的资源则进入S304,调用委托模块进一步完成资源的加载;S303、返回由包入口函数Bundle^itry获取到Web资源给资源加载函数 ResourceLoader,加载模块完成当前模块的资源加载,所述Web资源如字体、颜色、线条、静态文档、HTTP网页、图像、声音文件等;S304、如果所需的资源在已有的业务Bundle库中的基础WAB没有找到,则调用委托模块,发送携带有基础WAB和请求路径的Web资源请求消息给委托模块中的委托加载函数 ResourceDelegation ;S305、委托加载函数 ResourceDelegation 通过 Spring-DM 框架中的 BundleContext获取到基础WAB和业务WAB。并通过创建业务WAB时,在其MANIFEST. MF文件中配置的挂载标识Host-War和基础WAB版本号version筛选,从中获取挂载于资源请求中所述基础WAB的业务WAB,所述筛选具体为核对业务特性包的挂载标识Host-War和基础WAB的标识是否相同;核对版本号version和基础WAB的版本号是否相同,标识和版本号都相同时则筛选通过,否则筛选不通过;
进一步当筛选所述关联Bundle获取的业务WAB有多个时,将获取的多个业务WAB 生成业务WAB组或业务WAB列表;后面的步骤以获取到业务WAB组的情况进行后续操作;S306、委托模块对于S305中获得的业务WAB组,按照业务WAB组中各业务WAB的优先级如从高向低进行重新排列;具体为从各业务WAB的MANIFEST. MF文件中获取业务WAB的优先级标识 associate-rank,然后根据associate-rank值从大到小顺序排列所述业务WAB组中的业务 WAB。S307、委托模块根据S306中完成内部业务WAB重新排列后的业务WAB组,依据所述资源请求路径,并依次加载业务WAB,确认当前业务WAB的资源是否仍然在所述资源请求路径,如果确认当前所加载的业务WAB中对应资源不存在,则加载业务WAB组中下一个业务 WAB,直到加载到对应的业务WAB后结束加载,并获取加载到的业务WAB里的资源或者加载完当前业务WAB组中所有业务WAB也未获取到资源时则结束加载;S308-S309、返回S307中所获取到的资源或者获取资源失败的资源返回消息,通过包入口函数BundleEntry转发给加载模块的资源加载函数ResourceLoader。进一步,上传有优先级更高且携带有与业务特性包组中挂载标识相同的同类业务特性包时,在后续的加载资源过程中,如用户更新当前网页,或者再一次登录与所述业务特性包相关的网页时,web服务器重新调用上述加载过程,在步骤S306会为变动后的业务 WAB组生成新的按优先级排序的业务WAB,并在步骤S307委托模块根据资源请求路径依次加载所述业务特性包组中的业务特性包,并返回最先获取到的资源。进一步,删除同类业务特性包时,在后续的加载资源过程中,如用户更新当前网页,或者再一次登录与所述业务特性包相关的网页时,web服务器重新调用上述加载过程, 在步骤S306会为变动后的业务WAB组生成新的按优先级排序的业务WAB,并在步骤S307委托模块根据资源请求路径依次加载所述业务特性包组中的业务特性包,并返回最先获取到的资源。通过本实施例业务WAB由于是基于J2EE环境的Spring-DM框架,并拥有了类加载器和生命周期,所以可以通过控制台或者其他输入设备利用网络实现远程独立部署,所述部署包括安装、启动、停止、卸载。进一步还能实现动态升级和动态还原,由于业务WAB是根据模块的构造生成,并作为web层的末端,不被其他业务特性包所调用,并通过委托模块加载,因此在业务WAB还原、升级的同时,基础WAB及其它业务特性包不受影响。通过本实施例,由于引进了优先级标识,扩展后的业务特性包管理系统可以支持1 个基础WAB配合N个业务WAB部署和覆盖策略,适应对定制性要求比较高、同时又不能有太多版本维护的方案要求。本发明的一种针对扩展业务特性包的委托模块实施例,如图5所示,实施例中基础特性包表述为基础WAB,业务特性包表述为业务WAB,具体包括401、导入模块,用于接收由加载模块传递进来的基础特性包标识和业务特性包中资源所在的资源请求路径;402、筛选模块,接收导入模块传递来的关联Bundle,并根据挂载标识筛选出挂载于所述基础特性包的业务特性包;蹄选模块利用 getBundleContext Q . getBundle Q 函数从 BundleContext 中获取当前框架中已存在的基础WAB和业务WAB ;检索MANIFEST. MF文件里是否有挂载标识 Host-War,在确认有挂载标识Host-War并且所述挂载标识和资源请求中传递来基础WAB标识相同时,还可进一步确认MANIFEST. MF文件里的版本号version和基础WAB的版本号相同,满足上述条件的便记录为所述资源请求中的基础WAB所要挂载的业务WAB,并将所述业务WAB转发给资源获取模块;其中version和Host-War的筛选顺序可以根据实际情况调整先后;进一步,当所述业务WAB还设置了优先级标识时,筛选模块进一步通过所述业务 WAB生成业务WAB组,并对业务WAB组内业务WAB按照优先级排序;并将所述业务WAB组转发给资源获取单元;403资源获取模块,用于获取业务WAB的资源,所述资源要求在业务WAB的请求路径里,所述请求路径由导入模块转发;获取来自筛选模块的业务WAB组,资源获取模块依据请求路径,并按照优先级顺序如从高到低,依次加载所述业务WAB组中的业务WAB,并返回最先获取到的资源,所述资源可以是USLs,Conversations配置和菜单素材的布局。
权利要求
1.一种业务特性的管理方法,其特征在于,包括根据Web资源请求,获取基础特性包标识和资源请求路径,所述资源请求路径为所要获取的资源在业务特性包中路径;获取已有的基础特性包和业务特性包,从中筛选出挂载标识与Web资源请求中获取的基础特性包标识一致的业务特性包;所述挂载标识存储于业务特性包中,用于指定所要挂载的基础特性包;根据所述资源请求路径加载上述通过筛选的业务特性包,并返回获取的资源。
2.如权利要求1所述方法,其特征在于,所述业务特性包还设置了优先级标识,所述方法具体包括通过挂载标识筛选出的业务特性包可以有一个或者多个,所述业务特性包构成业务特性包组,进一步通过所述优先级标识按优先级重新排序业务特性包组中的业务特性包,以便后续根据资源请求路径依次加载业务特性包组的业务特性包,返回最先获取到的资源。
3.如权利要求1所述方法,其特征在于,所述筛选出挂载标识与Web资源请求中获取的基础特性包标识一致的业务特性包,进一步包括利用业务特性包中存储的所要挂载的基础特性包的版本号进一步筛选得到的业务特性包,当所述存储的版本号和由基础特性包标识确定的基础特性包的版本号一致则筛选通过。
4.如权利要求2所述方法,其特征在于,所述方法具体包括上传有优先级更高且携带有与所述业务特性包组中挂载标识相同的同类业务特性包时,则在后续的相同Web资源请求过程中,会为变动后的业务特性包组中的业务特性包按优先级重新排序,并依次按资源请求路径加载,返回最先获取到的资源。
5.如权利要求2所述方法,其特征在于,所述方法具体包括删除业务特性包组中的业务特性包时,在后续的相同Web资源请求过程中,会为变动后的业务特性包组中的业务特性包按优先级重新排序,并依次按资源请求路径加载,返回最先获取到的资源。
6.如权利要求1至5中任一权利要求所述方法,其特征在于,还包括创建业务特性包, 所述方法具体包括按照套件的架构特性生成文件,并以业务特性组建资源,在清单文件中增加所要挂载的基础特性包标识作为挂载标识。
7.一种业务特性包的管理系统,其特征在于,包括业务特性模块用于存储业务特性包,所述业务特性包设有指向所要挂载的基础特性包的挂载标识;基础特性模块用于存储基础特性包,所述基础特性包包含了业务特性包所需的基础资源;加载模块用于接收Web资源请求,获取基础特性包标识和资源请求路径,所述资源请求路径为所要获取的资源在业务特性包中路径;根据Web资源请求加载基础特性包,并在基础特性包中未加载到所需资源时,调用委托模块进一步来完成资源的加载;委托模块获取已有的基础特性包和业务特性包,从中筛选出挂载标识与Web资源请求中获取的基础特性包标识一致的业务特性包,以资源请求路径加载上述通过筛选的业务特性包,获取并返回资源到加载模块。
8.如权利要求7所述系统,其特征在于,所述筛选出挂载标识与Web资源请求中获取的基础特性包标识一致的业务特性包,具体还包括委托模块利用业务特性包中存储的所要挂载的基础特性包的版本号进一步筛选得到的业务特性包,当所述存储的版本号和由基础特性包标识确定的基础特性包的版本号一致则筛选通过。
9.如权利要求7或8所述系统,其特征在于,所述业务特性模块中还设置了优先级标识,其中所述委托模块通过所述筛选出来的业务特性包可以有一个或者多个,所述业务特性包生成业务特性包组,利用优先级标识按优先级重新排序业务特性包组中的业务特性包;委托模块根据请求路径向已完成优先级排序的业务特性包组中各业务特性包获取业务特性包的资源,并向加载模块返回最先获取到的资源。
10.如权利要求9所述系统,其特征在于,所述加载模块和委托模块还用于在业务特性模块的业务特性包组中,上传有优先级更高且携带有与业务特性包组中挂载标识相同的同类业务特性包时,后续的加载模块在调用委托模块后,委托模块重新按优先级排列变动后的业务特性包,委托模块根据资源请求路径依次加载所述业务特性包组中的业务特性包,并返回最先获取到的资源。
11.如权利要求9所述系统,其特征在于,所述加载模块和委托模块还用于在业务特性模块的业务特性包组中,删除业务特性包时,在后续加载模块调用委托模块后,委托模块重新按优先级排列变动后的业务特性包,委托模块根据资源请求路径依次加载所述业务特性包组中的业务特性包,并返回最先获取到的资源。
12.—种管理业务特性包的委托模块,其特征在于,包括导入模块用于接收由加载模块传递来的基础特性包标识和业务特性包中资源所在的资源请求路径;筛选模块用于获取已有的基础特性包和业务特性包中,从中筛选出挂载标识和导入模块中获取的基础特性包标识一致的业务特性包,所述挂载标识存储于业务特性包中,用于指定所要挂载的基础特性包;资源获取模块用于根据指定的资源请求路径获取业务特性包的资源,并返回给加载模块。
13.如权利要求12所述的装置,其特征在于,所述筛选模块,具体还用于筛选模块利用业务特性包中存储的基础特性包的版本号进一步筛选得到的业务特性包,当所述存储的版本号和由基础特性包标识确定的基础特性包的版本号一致则筛选通过。
14.如权利要求12所述的装置,其特征在于,所述筛选模块,具体还用于所述业务特性包还设置了优先级标识,筛选模块通过挂载标识筛选出的业务特性包可以有一个或者多个并生成业务特性包组,进一步通过所述优先级标识按优先级重新排序的业务特性包组中的业务特性包。
15.如权利要求14所述的装置,其特征在于,所述资源获取模块,具体包括资源获取模块根据所述资源请求路径依次加载业务特性包组中各业务特性包,并向加载模块返回最先获取到的资源。
全文摘要
本发明提供一种扩展业务特性包的管理系统和方法,解决Web层WAB缺乏模块化和动态扩展的能力问题,为企业Web开发提供了更灵活和高效的解决方案。本发明涉及一种基于扩展业务WAB的管理方法,包括根据Web资源请求,获取基础特性包标识和资源请求路径,所述资源请求路径为所要获取的资源在业务特性包中路径;获取已有的基础特性包和业务特性包,从中筛选出挂载标识与Web资源请求中获取的基础特性包标识一致的业务特性包;所述挂载标识存储于业务特性包中,用于指定所要挂载的基础特性包;根据所述资源请求路径加载上述通过筛选的业务特性包,并返回获取的资源。
文档编号H04L29/08GK102404149SQ20111037641
公开日2012年4月4日 申请日期2011年11月23日 优先权日2011年11月23日
发明者张普朝, 黄海军 申请人:华为技术有限公司