提供共享Web模块的系统和方法转让专利

申请号 : CN200410057037.4

文献号 : CN100583043C

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : J·R·麦吉M·J·莫顿B·A·彼得斯

申请人 : 国际商业机器公司

摘要 :

本发明提供了用于在多个其它Web应用中间共享Web模块的系统和方法。通过该系统和方法,共享Web模块被存储在档案数据结构中,并且可被Web应用访问。Web应用和/或Web应用的Web模块可以包含共享Web模块指定文件,其标识将被引入到Web应用的Web模块中的共享Web模块。假定运行时部件在加载Web应用的Web模块时确定Web应用和/或Web模块是否具有用来标识将被引入到Web应用的Web模块中的共享Web模块的共享Web模块指定文件。如果有,运行时部件找到这些共享Web模块并且将其与Web应用的Web模块逻辑合并,其考虑共享Web模块指定文件指定的共享Web模块的优先级,从而产生包含共享Web模块指定文件中引用的共享Web模块的逻辑合并的Web模块。

权利要求 :

1.一种用于为Web应用产生逻辑合并的Web模块的方法,包括:

响应于确定存在一个共享模块指定文件,从所述共享模块指定文件识 别出至少一个共享Web模块以便引入到一个Web应用中,其中,共享Web 模块指定文件包括对所述至少一个共享Web模块的引用;

采用路径信息确定所述至少一个共享Web模块的位置;

根据所述共享模块指定文件采用对所述至少一个共享Web模块的引用 来逻辑合并所述至少一个共享Web模块和Web应用的Web模块,以产生逻 辑合并的Web应用;以及将逻辑合并的Web应用加载到Web容器。

2.如权利要求1所述的方法,其中Web应用是企业档案EAR,并且 逻辑合并的Web应用是逻辑合并的企业档案EAR。

3.如权利要求1所述的方法,其中所述至少一个共享Web模块包含 Web档案WAR文件、企业Java Bean EJB档案文件和资源档案RAR文件中 的至少一个。

4.如权利要求1所述的方法,其中逻辑合并至少一个共享Web模块 与Web应用的Web模块的步骤包括:确定与至少一个共享Web模块相关的优先级;以及

如果存在至少一个共享Web模块中的共享Web模块之间的任何冲突, 或至少一个共享Web模块与Web应用的Web模块之间的冲突,则消除所述 冲突。

5.如权利要求1所述的方法,其中在用于初始化将在服务器上运行 的Web应用的运行时环境的初始化过程期间,执行识别、确定和逻辑合并 步骤。

6.如权利要求1所述的方法,其中逻辑合并至少一个共享Web模块 与Web应用的Web模块的步骤包括使用服务提供商接口SPI,其提供用于 合并不同模块类型的合并逻辑。

7.如权利要求1所述的方法,其中当加载逻辑合并的Web应用时, 容器使用一或多个应用程序接口API以识别到达至少一个共享Web模块的 路径,并且加载该至少一个共享Web模块。

8.如权利要求1所述的方法,其中逻辑合并至少一个共享Web模块 与Web应用的Web模块的步骤包括以下操作中的至少一个:在Web应用的 Web模块中重新链接针对至少一个共享Web模块的引用,根据与Web应用 相关的策略文件推断至少一个共享Web模块的策略信息,和修改Web应用 的类路径以包含到达至少一个共享Web模块中的每个的路径。

9.一种用于为Web应用产生逻辑合并的Web模块的设备,包括:

用于响应于确定存在一个共享模块指定文件,从所述共享模块指定文 件识别出至少一个共享Web模块以便引入到一个Web应用中的装置,其中, 共享Web模块指定文件包括对所述至少一个共享Web模块的引用;

用于采用路径信息确定所述至少一个共享Web模块的位置的装置;

用于根据所述共享模块指定文件采用对所述至少一个共享Web模块的 引用来逻辑合并至少一个共享Web模块和Web应用的Web模块以产生逻辑 合并的Web应用的装置;以及用于将逻辑合并的Web应用加载到Web容器的装置。

10.如权利要求9所述的设备,其中用于逻辑合并至少一个共享Web 模块与Web应用的Web模块的装置包括:用于确定与至少一个共享Web模块相关的优先级的装置;以及

用于在存在至少一个共享Web模块中的共享Web模块之间的任何冲突, 或至少一个共享Web模块与Web应用的Web模块之间的冲突的情况下,消 除所述冲突的装置。

11.如权利要求9所述的设备,其中在用于初始化将在服务器上运行 的Web应用的运行时环境的初始化过程期间,执行识别、确定和逻辑合并 装置。

12.如权利要求9所述的设备,其中用于逻辑合并至少一个共享Web 模块与Web应用的Web模块的装置包括用于使用提供合并不同模块资源的 合并逻辑的服务提供商接口SPI的装置。

13.如权利要求9所述的设备,其中容器使用一或多个应用程序接口 API以识别到达至少一个共享Web模块的路径。

14.如权利要求9所述的设备,其中用于逻辑合并至少一个共享Web 模块与Web应用的Web模块的装置包括以下装置中的至少一个:用于在Web 应用的Web模块中重新链接针对至少一个共享Web模块的引用的装置,用 于根据与Web应用相关的策略文件推断至少一个共享Web模块的策略信息 的装置,和用于修改Web应用的类路径以包含对至少一个共享Web模块中 的每个的路径的装置。

说明书 :

技术领域

本发明涉及提供共享Web模块的系统和方法。更具体地,本发明涉及 逻辑合并共享Web模块和主Web模块以产生逻辑合并的Web模块的系统和 方法。

背景技术

与Java2企业版(J2BE)相关的编程模型要求由档案,例如企业档案 (EAR),构成的应用封装结构包含一个或多个子档案,例如Web档案(WAR), 企业Java Bean(EJB)档案(JAR),资源档案(RAR)等等。BAR文件封装 了用于在J2BE环境中执行的应用所需的所有这些档案。WAR文件包含 HTTP客户机,例如浏览器通常需要的与“Web”相关的文件(Java,HTML, GIF等等)。
经常出现这样的情况,其中应用开发人员具有在多个WAR中相同的、 又称作Web模块的代码和结构。由于这种代码和结构在多个Web模块中是 相同的,而不是将代码和结构的这些公共部分改写或复制到每个Web模块, 期望能够在多个Web模块中间共享具有这种代码/结构的Web模块。然而, 当前没有允许共享Web模块的机制。
相反,当前的机制受限于:公共代码/结构必须由应用开发者明确插入 到Web模块中。例如,假定存在一个包含100个JSP文件的Web模块。现 在假定要开发两个或更多个也需要包含这些相同JSP文件的Web模决。通 过当前的机制,应用开发者必须将所有JSP文件复制到每个新Web模块中。 这对存储器的使用来说显然是低效的,另外还带来维护问题,因为现在必 须在所有Web模块中兼顾任何未来对一或多个JSP文件的改变。
作为另一个例子,假定存在100个全部具有相同安全要求的Web模块。 例如,所有Web模块必须被构造成具有相同的用户角色。这需要应用开发 者在每个Web模块的Web模块装配阶段执行相同的安全配置步骤,从而需 要更多的人工和时间。另外,类似的维护问题在于,当改变用户角色时, 这种改变必须被传播到所有100个Web模块。
于是,期望具有这样的机制,其允许其它Web模块以存储效率最大的 方式共享Web模块,并且减少共享Web模块中与未来改变相关的维护问题。

发明内容

本发明提供了用于在多个其它Web应用中间共享Web模块的系统和方 法。通过本发明的系统和方法,共享Web模块被存储在档案数据结构中, 并且可被Web应用访问。Web应用和/或Web应用的Web模块可以包含共享 Web模块指定文件,其标识将被引入到Web应用的Web模块中的共享Web 模块。
提供一个运行时部件,其确定Web应用和/或Web模块是否具有用来标 识将被引入到Web应用的Web模块中的共享Web模块指定文件。如果有, 运行时部件找到这些共享Web模块并且在考虑共享Web模块指定文件指定 的共享Web模块的优先级的情况下将它们与Web应用的Web模块逻辑合并, 从而产生包含共享Web模块指定文件中引用的共享Web模块的逻辑合并 Web模块。
于是,通过本发明,不是将共享Web模块复制到每个利用共享Web模 块的Web应用的Web模块中,本发明而是允许在引用特定存储位置的共享 Web模块的Web应用的Web模块中使用针对共享Web模块的引用。当运行 时环境加载Web应用的Web模块时,本发明的机制自动合并共享Web模块 和Web应用的Web模块。
此外,由于多个Web应用仅仅引用一个副本,或在某些情况下仅仅引 用数量相对较少的副本,明显减少了维护问题。也就是说,不必将针对共 享Web模块的改变传播到利用共享Web模块中的代码的每个Web应用的Web 模块,本发明通过在加载时逻辑合并共享Web模块和Web应用的Web模块, 从而自动执行这种传播。于是,只需改变共享Web模块库中存储的共享Web 模块的副本,而不需显式改变利用共享Web模块的每个Web应用。
本领域普通技术人员通过以下对优选实施例的详细描述可理解本发明 的这些和其它特征及优点。

附图说明

在所附权利要求书中提出了被认为是本发明的特征的特性。然而参照 下列结合附图对一个示例性实施例进行的详细描述可以更好地理解本发明 自身、最优使用模式、其它目标和优点,其中:
图1是可以实现本发明的分布式数据处理系统的示例性模块图;
图2是可以实现本发明的服务器计算设备的示例性模块图;
图3是说明了根据本发明的Web模块共享的示例性模块图;
图4是说明了根据本发明一个示例性实施例的逻辑合并Web模块的生 成的示例性模块图;
图5是说明了根据本发明一个示例性实施例的逻辑合并Web模块生成 运行时部件的示例性模块图;
图6是说明了根据本发明一个示例性实施例的共享Web模块指定文件 的示例图;以及
图7是概述了本发明在产生逻辑合并Web模块时的示例性操作的流程 图。

具体实施方式

本发明提供了用于在多个Web应用的Web模块中间共享Web模块的机 制。同样地,本发明尤其适于在分布式数据处理环境中使用,虽然本发明 也可以用于独立或客户端计算设备。于是,为了提供有助于理解本发明优 选实施例的说明的环境,以下提供了有关可以实现本发明的示例性分布式 数据处理环境的简要描述。
现在参照附图,具体是参照图1,其中图示了可以实现本发明的数据 处理系统的网络。网络数据处理系统100是其中可以实现本发明的计算机 的网络。网络数据处理系统100包含网络102,网络102是被用来在一起 连接到网络数据处理系统100内的各种设备和计算机之间提供通信链路的 介质。网络102可以包含诸如电缆,无线通信链路或纤维光缆等连接。
在描述的例子中,服务器104和存储单元106一起被连接到网络102。 另外,客户机108、110和112也连接到网络102。这些客户机108、110 和112可以是例如个人计算机或网络计算机。在描述的例子中,服务器104 向客户机108-112提供诸如引导文件、操作系统映像和应用等数据。客 户机108、110和112是服务器104的客户机。网络数据处理系统100可以 包含附加的服务器、客户机和其它设备(未示出)。在描述的例子中,网络 数据处理系统100是具有网络102的因特网,其中网络102表示全世界使 用传输控制协议/网际协议(TCP/IP)协议族彼此通信的网络和网关的集合。 因特网的核心是主要节点或主计算机之间的高速数据通信线路组成的干 线,主要节点或主计算机包括数千个路由数据和消息的商业、政府、教育 和其它计算机系统。当然,网络数据处理系统100也可以被实现成若干不 同类型的网络,例如内部网、局域网(LAN)或广域网(WAN)。图1仅用于 举例,而不对本发明产生结构限制。
参照图2,其中根据本发明的优选实施例描述了数据处理系统的模块 图,该数据处理系统可以被实现成诸如图1的服务器104的服务器。数据 处理系统200可以是对称多处理器(SMP)系统,包含多个被连接到系统总 线206的处理器202和204。可选地,可以使用单处理器系统。存储器控 制器/高速缓存208也被连接到系统总线206,存储器控制器/高速缓存208 提供针对本地存储器209的接口。I/O总线桥210被连接到系统总线206, 并且提供针对I/O总线212的接口。如这里描述的,可以集成存储器控制 器/高速缓存208和I/O总线桥210。
连接到I/O总线212的外围部件互连(PCI)总线桥214提供针对PCI 局部总线216的接口。若干调制解调器可以被连接到PCI局部总线216。 典型的PCI总线实现会支持4个PCI扩充槽或内插式连接器。利用调制 解调器218和通过内插板被连接到PCI局部总线216的网络适配器220, 可以提供针对图1中客户机108-112的通信链路。
附加PCI总线桥222和224为附加PCI局部总线226和228提供接口, 其中从附加PCI局部总线226和228可以支持附加的调制解调器或网络适 配器。通过这种方式,数据处理系统200允许针对多个网络计算机的连接。 存储器映射图形适配器230和硬盘232也可以直接或间接地连接到所述 I/O总线212。
图2中描述的数据处理系统可以是例如IBM eServer pSeries系统, 这是位于纽约阿蒙克的国际商业机器公司的产品,其运行先进交互执行 (AIX)操作系统或Linux操作系统。然而,本领域的普通技术人员会理解, 图2中描述的硬件是可以改变的。例如,也可以使用其它诸如光盘驱动器 和类似设备的外部设备补充或取代上述硬件。上述例子并不意味着对本发 明有结构性限制。
本发明提供了一种用于根据Web应用的Web模块中的对共享Web模块 的引用,将指定为在多个Web应用中间共享的Web模块的Web模块与Web 应用的Web模块进行逻辑合并的系统和方法。本发明的机制根据共享Web 模块的优先级和先后次序执行共享Web模块的合并。本发明还根据这些优 先级和先后次序消除共享Web模块之间的任何冲突。
本发明的主要部件包含核心运行时环境部件和Web容器部件。核心运 行时环境部件负责在Web应用的初始化期间识别具有继承共享Web模块的 Web模块的Web应用。核心运行时环境部件接着合并这些共享Web模块和 Web应用的现有Web模块,从而产生逻辑合并的Web模块。接着核心运行 时环境部件通知Web容器部件加载逻辑合并的Web模块。
Web容器是用于操作Web应用的执行基础设施。在本说明书的上下文 中,Web应用表示服务器端上使用Web容器提供的各种功能执行某些处理 操作,例如分析客户机的输入数据和产生动态HTML页面,的应用。这种 Web应用的例子包含Java服务器页面(JSP)和小服务程序(servlet)。
现在参照图3,示出的示例性模块图说明了根据本发明的Web模块共 享。如图3所示,两个Web应用企业档案(EAR)320和330包含各种Web 档案(WAR)文件,例如Stock_Ticker 322,Account_Mgmt 324, Stock_Ticker 332,Stock_Ticker2 334和无线接入()336。 另外,在EAR 310中提供共享Web模块库。如此后更详细地描述的,通过 将EAR 310的Web模块312-316包含在EAR 310中,其被指定为共享Web 模块,于是可以根据本发明的机制将其与Web应用的Web模块逻辑合并。
EAR产生应用(Production_Application EAR)320包含按照相应顺序 继承共享Web模块JSP 1.2 312和监视(Monitoring)314的WAR Stock_Ticker 322。于是,在应用初始化时,即当产生应用320被载入Web 容器时,本发明的运行时部件执行所有这些Web模块的逻辑合并,并且产 生一个接着由Web容器加载的虚拟Web模块。
对于EAR开发应用(Development_Application EAR)330的Web模块 Stock_Ticker 332也是如此。Web模块Stock_Ticker 332继承共享Web 模块JSP 1.2 312,监视(Monitoring)314和公共Web文件316。通过 本发明的操作,会产生作为Web应用的Web模块和共享Web模块的逻辑合 并版本的虚拟Web应用,并且由Web容器加载。于是,本发明提供了被用 来加载使用共享Web模块的Web应用的逻辑合并Web应用的动态生成。
本发明的合并操作是多个Web模块的逻辑排序合并。合并操作与顺序 相关的原因是为了能够确定先后次序以提供覆盖Web资源的能力。通过与 共享Web模块相关的指定的优先级或先后次序来确定顺序。于是例如,如 果JSP 1.2Web模块312比监视Web模块314具有更高优先级,则通过优 先级或先后次序为JSP 1.2Web模块312消除这两个Web模块的Web资源 之间的任何冲突。此后更详细地讨论Web模块的合并。
术语“逻辑合并”Web应用是指,定义Web应用的数据结构是Web应 用中现有的Web模块代码与共享Web模块代码的副本的组合。例如,假定 第一Web模块A包含文件Web.xml,servletA.class和pageA.html,第 二Web模块B包含文件Web.xml,servletB.class和pageB.html。源 于第一Web模块和第二Web模块的逻辑合并Web应用包括文件Web.xml、 servletA.class、servletB.class、pageA.html和pageB.html。
在上述例子中,根据所得到的合并Web应用在其被写入的盘上的物理 表现来对其进行描述。然而Web模块的“逻辑”合并涉及识别文件物理上 所在的路径,以及将这些路径添加到整个Web应用的类路径上。在Java 中,这意味着当服务器加载应用时,服务器需要知道合并Web应用所引用 的文件的物理存储单元。于是,在使用上述例子的情况下,到达存储Web 模块A和Web模块B的文件的存储单元的所有路径都会被添加到合并Web 应用的类路径中。
另外,每个Web模块需要包含基于Servlet规范的Web.xml文件。本 发明的逻辑合并操作将所有这些单独的Web.xml文件合并成用于合并Web 应用的单个Web.xml文件。Web.xml文件的这种合并可以通过多个不同方 式中的任何一种来执行。一个合并Web.xml文件的示例性技术是简单地将 一个Web.xml文件的一部分复制到另一个Web.xml文件中。当然,需要根 据针对Web模块确定的优先级或先后次序消除Web.xml文件之间的任何冲 突。
例如,假定Web模块A具有Web.xml文件,该文件具有以下内容:

Michaels Application
This is MichaelsWeb Application.

Michael Servlet
Michael Servlet
This servlet returns information about Michael′s
favorite beers.

servletA



Michael Servlet
/Michael/*


pageA.html


现在假定Web模块B具有Web.xml文件,该文件具有以下内容:

Steves Application
This is Steves Web Application.

Steve Servlet
Steve Servlet
This servlet returns information about Steve′s
favorite foods.

servletB



Steve Servlet
/steve/*


pageB.html


现在假定通过合并上述Web.xml文件而获得的合并Web.xml文件具有 以下内容:

Steves Application
This is StevesWeb Application.

Steve Servlet
Steve Servlet
This servlet returns information about Steve′s
favorite foods.

servletB



Michael Servlet
Michael Servlet
This servlet returns information about Michael′s
favorite beers.

servletA



Steve Servlet
/steve/*


Michael Servlet
/Michael/*


pageB.html


通过上述内容可以发现,Web模块A和Web模块B的两个Web.xml文 件的合并会产生文件中在以下行之间的冲突:

pageA.html



pageB.html

然而,根据本发明确定的Web模块的优先级或先后次序规定了如何消 除这种冲突。由于在这个特定例子中Web模块B具有更高优先级或先后次 序,消除这种冲突的结果是在所得到的合并Web.xml文件中包含来自Web 模块B的Web.xml文件的行。可以针对Web.xml文件之外的其他文件在合 并Web模块中执行类似的文件之间的冲突的消除。
于是,所得到的逻辑合并Web应用包含初始Web应用的各种Web模块 和共享Web模块,以及标识到达合并Web应用中每个Web模块的每个文件 的路径的单独的类路径,并且包含单独的合并Web.xml文件。
图4的示例性模块图说明了根据本发明一个示例性实施例的逻辑合并 Web模块的生成。如图4所示,Web应用410包含档案文件412和414以及 共享Web模块指定文件416。在描述的示例性实施例中,档案文件412和 414是Web档案(WAR)文件。然而,可以包含其它类型的档案文件以补充 或替换WAR文件。这些其它类型的档案文件可以包含例如企业Java Bean (EJB)档案文件、资源档案(RAR)文件等等。
另外,虽然图4描述的例子说明被存储在Web应用410中的共享Web 模块指定文件416,例如Web应用的EAR文件,然而本发明不局限于此。 共享Web模块指定文件416可以被存储为:作为父Web模块文件一部分的 单独的文件,父Web模块文件中的绑定或扩展,父Web模块Web.xml文件 的一部分,父Web应用文件中的单独的文件(如所描述的),父Web应用文 件中的绑定或扩展,或存储在父Web应用文件Application.xml中,等等。
在一个最优实施例中,共享Web模块指定文件416是作为Web应用EAR 文件的一部分的单独的文件。在这种实施例中,共享Web模块指定文件416 包含引用Web应用410中所有Web模块412-414的共享Web模块422-426 的所有描述符。通过这种方式,提前提供Web应用的每个Web模块412-414 所需的描述符信息,这与针对Web应用410中的每个父Web模块412-414 一次一个地寻找相关性的方式相反。这些允许在处理之前预取/隐藏共享 Web模块信息,所述处理在Web应用410的初始化期间针对每个单独Web 模块而进行。于是,为了说明示例性优选实施例,下面会根据在Web应用 410或EAR等层次存储的共享Web模块指定文件416来描述本发明。
如上所述,共享Web模块指定文件416存储将与Web应用410的Web 模块412-414逻辑合并的共享Web模块422-426的描述符。这些描述符可 以包含例如共享Web模块的文件名(并且可能包含路径),和共享Web模块 的合并优先级。路径和文件名被用来获取合并共享Web模块,例如Web模 块424与Web应用410中的现有Web模块412-414所需的共享Web模块信 息。如下面更详细地描述的,合并优先级被用来消除合并操作期间Web模 块之间的冲突。
当在服务器计算设备,例如图2说明的服务器计算设备的运行时环境 中部署Web应用410时,Web应用410经过初始化过程。在这个初始化过 程期间,运行时环境处理Web应用410,例如EAR文件的所有Web模块 412-414,并且通知Web容器450加载,即启动运行时环境部件传递到Web 容器的Web模块。通过本发明,为运行时环境提供用于识别Web应用是否 利用共享Web模块的附加部件,即逻辑合并Web模块产生运行时部件(此 后称为运行时部件)430,并且如果利用了共享Web模块,将那些Web 模块合并到逻辑合并Web模块中。
本发明的运行时部件430考察Web应用和/或Web应用的Web模块, 以确定是否存在共享Web模块指定文件416。如果是,根据共享Web模块 指定文件416中设置的每个将被合并的共享Web模块的优先级或先后次序, 运行时部件430合并指定的共享Web模块和Web应用的现有Web模块。
共享Web模块422-426与现有Web模块412-414的合并涉及根据优先 级或先后次序消除共享Web模块422-426和现有Web模块412-414的Web 资源之间的冲突。另外,执行合并操作可能需要重新链接合并的共享Web 模块422-426与现有的Web模块412-414,由Web应用410中的策略文件 推断出针对所合并的共享Web模块422-426的策略信息,等等。可以在提 供用于合并不同文件类型的合并逻辑的服务提供商接口(SPI)中指定在 Web模块合并中执行的所有各种功能。这些合并操作的结果是逻辑合并的 Web应用440,其可以被Web容器450加载以便在服务器计算设备上使用。
一旦使用本发明的运行时部件430产生了逻辑合并的Web应用440, 就将逻辑合并的Web应用440提供给Web容器450以便加载。小服务程序 规范中规定的Web容器450提供各种应用程序接口(API),其为Web模 块资源提供路径信息。因此,对于逻辑合并的Web模块,Web容器450识 别到达合并的共享Web模块422-426的路径,使得用户应用可以利用 getRealPath()API和getPathTranslated()API,并且获得所请求的Web 模块资源在本地文件系统上的位置。getRealPath()API返回本地文件系 统上的文件位置。getPathTranslated()API返回任何在小服务程序名之 后、任何查询字符串之前的额外路径信息,并且将其转换成真实路径。
Web容器450以本领域已知的方式加载逻辑合并Web应用440的每个 Web模块,包含逻辑合并的共享Web模块422-426。一旦Web模块被加载, Web应用可被服务器计算设备使用。
图5的示例性模块图说明了根据本发明一个示例性实施例的逻辑合并 Web模块产生运行时部件,此后被称作运行时部件。如图5所示,运行时 部件包含彼此通信的多个子部件,包含运行时合并控制模块510、Web容器 接口模块520、共享文件识别模块530和合并模块540。合并模块540还包 含合并模块控制器550、冲突检查模块560、重新链接模块570、策略推断 模块580和父Web模块类路径修改模块。
运行时合并控制模块510控制运行时部件的总体操作,并且协调其它 部件520-540的操作。运行时合并控制模块510考察被初始化的Web应用, 以确定是否存在任何需要在Web容器加载Web应用之前进行合并的共享 Web模块。如果存在,运行时合并控制模块510指示共享文件识别模块530 读取Web应用的共享Web模块指定文件,并且识别必须合并的共享Web模 块和共享Web模块指定文件中设定的所述共享Web模块的优先级或先后次 序。这种信息接着被传递给合并模块540,以用于合并共享Web模块和Web 应用的现有Web模块,从而产生逻辑合并的Web应用。
合并模块540的合并模块控制器550合并共享文件识别模块530识别 的共享Web模块。合并模块控制器550寻求冲突检查模块560的帮助以确 定将被合并的Web模块之间的Web资源冲突。冲突检查模块560使用所识 别的共享Web模块的先后次序或优先级确定如何消除冲突(如果存在)。
另外,合并模块控制器550使用重新链接模块570在Web应用的现有 Web模块中重新链接针对共享Web模块的引用。策略推断模块580可以被 用来根据与Web应用相关的策略文件推断合并的共享Web模块的策略信息。 父Web模块类路径修改模块590可以被合并模块控制器550用来将合并处 理中涉及的每个模块的存储单元的位置/路径添加到父模块的类路径中。
共享文件识别模块530识别的共享Web模块上的这些部件550-590的 操作产生通过Web容器接口模块520输出到Web容器的逻辑合并Web应用。 Web容器接着加载逻辑合并Web应用的Web模块,并且Web应用可被服务 器使用。
图6的示例图说明了根据本发明一个示例性实施例的共享Web模块指 定文件。如图6所示,共享Web模块指定文件包含共享Web模块的列表, 包含共享Web模块的名称610、到共享Web模块620的可选路径以及合并 优先级630。本发明的机制使用名称610和路径620查找共享Web模块, 以产生和加载逻辑合并的Web应用。如前面描述的,合并优先级被用来消 除将被合并的共享Web模块的Web资源之间的冲突。
图7的流程图概述了本发明在产生逻辑合并Web模块时的示例性操作。 应当理解,流程图说明的每个块和流程图说明中的块的组合可以通过计算 机程序指令来实现。这些计算机程序指令可以提供给处理器或其它可编程 数据处理装置以产生这样一种机器,使得在处理器或其它可编程数据处理 装置上执行的指令创建用于实现流程图块中规定的功能的装置。这些计算 机程序指令也可以存储在能够指示处理器或其它可编程数据处理装置以特 定方式操作的计算机可读存储器或存储介质中,使得计算机可读存储器或 存储介质中存储的指令产生一种制造产品,其包含实现流程图块中规定的 功能的指令单元。
因此,流程图说明的块支持用于执行规定功能的装置的组合,用于执 行规定功能的步骤的组合,和用于执行规定功能的程序指令单元的组合。 还能够理解,流程图说明的每个块,和流程图说明中块的组合可以通过基 于专用硬件的计算机系统(执行规定功能或步骤),或专用硬件与计算机指 令的组合来实现。
如图7所示,本发明的这个示例性实施例的操作从Web应用的部署和 初始化开始(步骤710)。在初始化过程期间,确定Web应用是否包含需要 与现有Web模块逻辑合并的共享Web模块(步骤720)。如果没有,操作继 续执行到步骤780,其中Web应用的Web模块被Web容器加载,并且使得 Web应用可被服务器使用。
如果Web应用包含需要逻辑合并的共享Web模块,操作读取Web应用 的共享Web文件指定文件,并且识别将被合并的共享Web模块,以及其优 先级(步骤730)。确定到共享Web模块的路径(步骤740),并且使用识 别的优先级消除共享Web模块的Web资源之间的任何冲突(步骤750)。接 着,共享Web模块与Web应用的现有Web模块合并以产生逻辑合并的Web 应用(步骤760)。接着,逻辑合并的Web应用被提供给Web容器(步骤 770),Web容器加载逻辑合并的Web应用的Web模块并且使得它们可被服 务器使用(步骤780)。操作接着结束。
于是,本发明提供了可以使多个Web应用共享Web模块的机制。这允 许Web应用引用共享Web模块而无需将Web模块的内容复制到该Web应用。 此外,由于共享Web模块被集中起来,可以容易地修改这些共享Web模块, 并且发布到利用共享Web模块的每个Web应用。
应当注意,虽然根据共享Web模块与EAR或其它类型的Web应用的现 有Web模块进行组合描述了本发明,然而本发明不局限于此。EAR或Web 应用不必具有现有Web模块,并且可以包含共享Web模块指定文件,而无 需任何其他在EAR或Web应用中存在的Web模块。于是,在这种情况下, 本发明执行的逻辑合并会产生仅仅包含共享Web模块指定文件指定的共享 Web模块的逻辑合并的Web应用。
另外,虽然就运行时环境在应用加载时执行Web应用的Web模块与共 享Web模块的逻辑合并描述了本发明,然而本发明不局限于此。本发明可 以“脱机”,即在加载应用之前使用,以产生可以接着被运行时环境加载的 逻辑合并的Web应用。这有助于通过减少应用加载期间所需的计算量来提 高运行时环境所在的服务器或计算设备的性能。
必须注意,虽然前面针对一个全功能数据处理系统的环境描述了本发 明,但本领域的普通技术人员会理解到,可以通过计算机可读指令介质的 形式和其它各种形式分布本发明的过程,并且无论实际被用来完成分布的 信号承载介质的具体类型如何,本发明均同样适用。计算机可读介质的例 子包含可记录类型的介质(例如软盘,硬盘驱动器,RAM,CD-ROM,DVD- ROM),和传输类型的介质(例如数字和模拟通信链路,使用例如射频和光波 传输等传输形式的有线或无线通信链路)。计算机可读介质可以具有编码格 式的形式,其中在实际用于具体数据处理系统时被加以解码。
前面对本发明进行的描述只是为了说明的目的,并不打算对具有公开 形式的本发明进行详细定义和限制。本领域的普通技术人员显然可以进行 许多修改和改变。选择和描述实施例是为了提供对本发明原理及其实际应 用的最优说明,并且也是为了使本领域的普通技术人员可以根据所考虑的 具体使用情况针对具有各种修改的各种实施例来理解本发明。