ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [转载]通过插件支持,Geronimo 提供了 one-click 升级

[转载]通过插件支持,Geronimo 提供了 one-click 升级

原创 Linux操作系统 作者:dinner1007 时间:2019-04-21 15:48:07 0 删除 编辑

通过插件支持,Geronimo 提供了 one-click 升级


安装和创建插件的能力是 Apache Geronimo 1.1 中最被期待的新特性。插件为 Geronimo 用户提供了即时更新功能。因而,您现在能够下载新的应用程序和服务程序并让它们很快就在 Geronimo 服务器上运行。本文向您介绍如何查找、安装甚至自己创建 Geronimo 插件。

在出现插件之前,新的服务程序或应用程序特性的安装需要 Geronimo 专门构建的下载包,或者要求进行 Geronimo 模块的手工部署和配置。插件通过启用插件供应者,将部署和配置以适合运行的格式与模块打包在一起,从而简化了安装过程。新的服务器特性和应用程序能够通过 简单的下载和安装添加到服务器中。

Geronimo 厨房

做为 Geronimo 用户,您已经熟悉了它的模块;它们是部署在服务器中的 WAR、EAR、RAR 和 JAR 文件。为了部署这些文件,需要 Java™ 2 平台,Enterprise Edition (J2EE) 部署描述符(例如,用于 Web 应用程序的 web.xml),经常还需要 Geronimo 特有的部署计划(例如,用于 Web 应用程序的 geronimo-web.xml)。部署描述符和部署计划指示 Geronimo 如何配置要部署的模块。

根据模块类型,Geronimo 在后台调用不同的专用构建器 组件来处理部署计划并配置和启动模块。(要获得更多信息,请参阅 “Geronimo!第 1 部分: 支持 J2EE 1.4 引擎” [developerWorks,2005 年 5 月])。例如,Enterprise JavaBeans(EJB)构建器专门负责处理 EJB 模块。作一个比喻,部署描述符和部署计划是烹饪方法,构建器就是厨师;您提供烹饪方法,而厨师迅速做好一个可口的模块。

然后,插件仅仅是准备好运行的 “经过加工的” Geronimo 模块。

模块成功地部署和启动后,它的配置(按照部署计划中的说明)以二进制形式存储在存储库里。在这种情况下,存储库担当配置存储器,如 图 1 所示。


图 1. Geronimo 插件是一个经过加工的模块
Geronimo 插件是一个经过加工的模块

图 1 中,Module 1 和 Module 2 都被成功地部署到 Geronimo 服务器 A 中。在内部,Geronimo 利用这些模块的配置信息管理每个模块。插件机制允许把预先部署的模块作为经过加工的包导出。

即时模块烹饪

使用 Geronimo 提取经过加工的模块来创建插件,这些插件马上可以在配置类似的 Geronimo 服务器实例中重新安装和启动。图 2 举例说明了这种提取。


图 2. 导出和安装一个插件
导出和安装一个插件

图 2中, Module 1 和 Module 2 都被部署在 Geronimo A 中。它们都被作为插件导出(提取)到一个公用的插件存储库中。另一个配置类似的 Geronimo 服务器 Geronimo B 查找和安装 Module 2 插件。Geronimo B 能够在没有其他配置的情况下启动和运行 Module 2。

为了达到安装和启动状态,一个插件包通常包括:

  • 模块的二进制文件。
  • 用于模块的二进制形式的配置信息。
  • 一个描述符,geronimo-plugin.xml,它提供元数据并指示容器如何安装插件。

因为插件中模块上的部署和配置工作已经完成,所以一旦安装它就可以运行了。

依赖项和先决条件

插件的好处之一是显而易见的:您不用自己动手就能够获得专家级的配置。

插件安装程序的工作远远不只是部署模块,因为插件可能会依赖于其他模块。在 geronimo-plugin.xml 文件中的依赖项被提供给插件安装程序。安装程序应该在某些存储库中查询它们,这些存储库的列表也会和这些依赖项一起包含在 geronimo-plugon.xml 中。

安装程序在启动插件前下载这些依赖项。

插件可能还包括一个先决条件列表。用户必须在安装插件以前在服务器上预先安装先决软件。任何没有满足的先决条件都将终止插件的安装,因为插件安装程序不能自动安装先决软件。

当创建一个插件时,可以选择在插件发布包中包含依赖项 JAR 文件,也可以把它放在插件外部并单独下载。包含依赖项 JAR 可以确保它们被插件利用,但是使得发布文件变大。把它放在插件外部可以保持发布文件比较小,并能够从服务器中运行的其他模块中共享依赖项 JAR。然而,把依赖项放在外部意味着存在一个小的风险:依赖项可能无法下载,因此插件不能启动。

环境需求

为了利用插件的安装并运行的好处,创建插件的环境和安装插件的环境必须是相似的。这些相似性需求可能包括以下细节:

  • 匹配的 Geronimo 服务器版本
  • Web 容器风格 —— Tomcat 或者 Jetty
  • 运行 Geronimo 实例的 Java Virtual Machine(JVM)层
  • 外部配置的 J2EE 资源的可用性,例如,共享的 Java 数据库连接(JDBC)库
  • 如果模块或依赖项依赖于外部网络端点 —— 比方说,一个关系数据库管理系统(RDBMS)服务器,这些端点也必须可以从安装服务器访问。

通常,插件元数据中的先决条件指出了这些需求。如果您依赖特殊的 VM 版本或服务器配置来创建非常特殊的插件发布给广泛的用户(例如,互联网上应用程序的发布),那么这些需求可能会有一点点限制。在这些情况下,元数据包含在 插件的 META-INF/geronimo-plugin.xml 文件中,它们能够确保正确配置的系统才会安装插件。

在一个企业中配置多个 Geronimo 实例

当插件都在一个企业中使用时,相似服务器的需求只是一个较次要的问题。在一个企业的受控环境中,通常有许多配置相似的系统,并能够使用插件有效地加速重复的部署。

因为插件是预先配置和部署的模块,所以每个在 Geronimo 服务器中运行的模块都可以被认为是一个插件。如果需要为一大组 Geronimo 服务器相同地配置应用程序,那么在一台服务器上保存您需要的所有东西,然后将其他服务器指向这台服务器,然后其他服务器实例把新模块当作插件下载和安装 —— 用中心存储服务器充任插件存储库。这常常被叫作复制。为了实现这些,需要:

  1. 在中心存储服务器上部署和测试模块。
  2. 向一个新的 Geronimo 服务器实例指出中央存储服务器是插件存储库。
  3. 选择中央存储服务器上想要在新服务器中安装的插件(模块)并进行安装。
  4. 重复第 2 步和第 3 步直到所有的新服务器都进行了复制。

请参阅 准备插件存储库 中有关复制步骤细节的更多信息。

作为插件的系统模块

另外一种插件是 Geronimo 系统模块(或者服务器组件模块)。Geronimo 系统模块是向 Geronimo 提供服务器特性的软件组件。它们可能包含附加的服务器功能,例如,统一描述、发现和集成的 Java 实现(jUDDI)服务器或轻量级目录访问协议(LDAP)服务器。

Little-G 和按需服务器汇编

Geronimo 用户经常遇到关于选择合适的 Geronimo 服务器配置的难解问题(在 Geronimo 系统开发者行话中,叫做汇编)。 使用 Geronimo 1.1,可以下载完备的包含全部特性的服务器,或者仅有 Web 容器的 Littie-G。如果需要 Web 容器加 Derby RDBMS,那么需要下载完备的服务器。然而,这会导致服务器配置文件过大,在运行时消耗宝贵的磁盘空间和内存资源。

插件与 Little-G 最小服务器发布相结合正好可以解决以上问题。带插件的 Little-G 向终端用户提供相同的混合搭配的 Geronimo 服务器配置。这些服务器配置以前只有核心的 Geronimo 贡献者和系统程序员才有权访问。有了 Geronimo 插件,您终于能针对自己的具体需要配置足够的服务器特性,并且不需要无用的特性。

使用 Geronimo 插件

通过对 Geronimo 插件构架概念的理解,您已经准备好利用插件了。以下内容说明了在哪里查找插件和如何安装并创建插件。

搜索可用插件的存储库

要搜索可用的 Geronimo 插件,可以使用两个工具中的一个:

  • 命令行部署器
  • Web 控制台

这些工具都能当作插件安装程序使用。插件安装程序执行以下操作:

  1. 访问一个或更多存储库来确定可用的插件
  2. 允许您选择一个可用插件来安装
  3. 检查依赖项和先决条件的元数据
  4. 校验先决条件是否满足
  5. 下载并安装先决软件
  6. 安装和启动插件

命令行部署器安装在 Geronimo 安装的 bin 子目录中的 deployer.jar 文件中。在 Geronimo 1.1 中,部署器有一个新的 search-plugins 命令(如下所示)。实际上,它是一个查找和安装插件的命令,因为它允许安装在存储库中查找到的插件。

deploy search-plugins http://www.geronimoplugins.com/repository/geronimo-1.1/

这个命令显示了可用插件列表,与 图 3 相似。


图 3. 使用命令行部署器查找可用插件
使用命令行部署器查找可用插件

要安装其中一个可用插件,仅需选择相应插件的编号,部署器会完成其余工作。

作为命令行部署器的替代品,可以通过 Web 控制台搜索插件。Web 控制台是一个可以通过 URL http://localhost:8080/console/ 访问的应用程序。

在左面导航面板中的 Plugins 下,单击 Create/Install。默认情况下,服务器运行时没有任何 Geronimo 插件存储库信息,如 图 4 所示。


图 4. 使用 Web 控制台处理插件
使用 Web 控制台处理插件

但是,能够通过点击 Update Repository List 链接获得默认存储库列表。目前最有效的可访问存储库是 www.geronimoplugins.com。图 5 显示最新的可用存储库列表。


图 5. 更新可用插件存储库列表
更新可用插件存储库列表

存储库列表被填充后,可以选择一个存储库并单击 Search for Plugins 按钮来获得存储库中的可用插件列表。

图 6 显示在 www.geronimoplugins.com 存储库中的可用插件列表。


图 6. 存储库中可用的插件
存储库中可用的插件

能够单击 图 6 中的任何一个可用插件,Web 控制台将下载和安装这个插件。

安装 Geronimo 插件

除了从存储库获得插件,还可以把插件当作单独的 .car 或 .zip 档案文件下载。当有作为 .zip(或 .car)档案文件下载的插件时,能够使用命令行部署器的 install-plugin 命令安装它们。语法是:

deploy install-plugin

例如,如果在 directory-1.1.zip 中有 Apache 目录服务插件,安装插件的命令是:

deploy install-plugin directory-1.1.zip

这会启动安装过程,这个过程涉及许多必须的依赖项的下载和安装。完成时,控制台输出可能与 图 7 相似。


图 7. 使用命令行部署器来安装插件
使用命令行部署器来安装插件

图 7 中,可以看到目录服务插件的安装导致了 18 个其他依赖项模块(几乎 5MB 的附加模块)的自动下载和安装。插件机制轻而易举地为您节省了下载和部署的数小时时间,这还不包括配置模块所花的时间。

安装之后,Geronimo 插件安装的模块与手工部署和配置的模块是没有区别的。为了卸载它们,可以以与一般模块同样的方式使用 Web 控制台或者命令行部署器。

下载 一节包含一个企业应用程序插件,可以尝试把它安装在您自己的 Geronimo 服务器上。

创建自己的 Geronimo 插件

既然插件是模块+二进制配置+元数据,在能够创建插件之前必须首先成功地把模块部署到服务器实例中。

让目标插件模块启动和运行后,最轻松的创建 Geronimo 插件的方式就是使用 Web 控制台。可以使用 Create/Install 插件 portlet 的 Export Plugin 特性来完成。

在左面导航面板中的 Plugins 下,单击 Create/Install。然后,在右面导航面板中,选择想要放入插件的模块。如 图 8 所示,选择了 dw/bigpetstore/1.1/car 作为创建插件的模块。


图 8. 从一个部署的模块创建插件
图 8. 从一个部署的模块创建插件

下一步,portlet 引导您填写 geronimo-plugin.xml 中的许多元素。只需回答问题和填写空白之处。确保指定了成功地部署模块所需的依赖项。在 dw/bigpetstore/1.1/car 的例子中,EJB 容器 geronimo/openejb/car 是必需的。可以忽略版本来表示依赖项不是版本敏感的。

Geronimo 1.1 插件缺陷

在 Geronimo 1.1 中存在一些小的缺陷,因此使用插件有一些技巧:

  1. 在 Web 控制台中,不能添加新的存储库到存储库列表中。必须停止服务器并编辑 config.xml 文件,就像本文所示。
  2. 从 GeronimoAsMavenServlet 中生成的 geronimo-plugins.xml 文件可能没有一个有效的默认存储库列表。
  3. 导出的插件的文件名可能会被特殊字符打乱。

以后的 Geronimo 更新将修复所有这些缺陷。

最后,单击 Export Plugin 按钮,portlet 将创建一个 car-exportX.X.car 文件。这是 CAR 档案中的插件。这个文件能被任何兼容的 Geronimo 服务器下载和安装(请参阅侧栏 Geronimo 1.1 插件缺陷 )。

如果使用 jar 工具(jar xvf )释放 CAR 文件,那么可以看到它由以下组件组成:

  • 原模块的二进制文件。
  • 一个 .ser 文件,包含串行化二进制格式的模块配置(和其他支持文件,例如,hash 和 info 文件)。
  • 一个包含元数据的 META-INF/geronimo-plugin.xml 文件,插件安装程序需要这些元数据。

在创建插件时填写的信息被用于生成 geronimo-plugin.xml 的内容。也能够手工创建这个文件和整个 CAR。geronimo-plugin.xml 元数据文件应该包含一个 元素。这个元素的细节如 表 1 所示。


表 1. geronimo-plugin 元素中的插件元数据
XML 标记描述
geronimo-plugin 插件元数据的根元素。它作为一个单独的 META-INF/geronimo-plugin.xml 文件出现,也可以合并到 geronimo-plugins.xml 中。
name 插件的名字。基于这个名字选择插件。
module-id 插件的 Geronimo 模块 ID。插件仅仅是预先配置的模块。如果模块 ID 没有被指定,那就意味着安装一个插件组。插件组就是具有共同先决条件的将被一起安装的一组插件(每一个插件都是经过加工的模块)。在这种情况下,< dependencies> 元素应该包括这个组中安装的插件。
category 用于标识插件种类的文本名字。这有助于存储库进行分类。
description 插件的文本描述。这里应该告诉用户关于插件的一切。
url 链接到插件 Web 站点的 URL。例如,如果插件是一个开放源码项目,那这可能是一个链接到开放源码主站的 URL。
author 插件的作者(个人、团体、公司等)。
license 发布软件所用的软件许可证。应该包括类型和名字,例如 BSD -- Apache Software License (ASL) 2.0。一定要有 Open Source Initiative(OSI)批准属性,表示软件许可证是否是 OSI 批准的。
hash 用于校验下载的二进制文件完整性的 hash 码。类型属性指出了 hash 算法,例如消息摘要算法 5(MD5)或 安全哈希算法(SHA-1)。
geronimo-version 需要的 Geronimo 服务器版本。例如,1.1。
jvm-version 运行这个插件需要的 JVM 版本。
prerequisite 在可以安装插件之前,必须预先安装的模块的列表。它有助于指定 Tomcat 或 Jetty 容器的先决条件。 子元素和 子元素能进一步指定先决条件是什么并提供说明。
dependency 本模块依赖的库模块的列表。插件安装程序尝试从存储库列表下载和安装这些模块。
obsoletes 本模块替代的模块名。
source-repository 一个或更多这些条目指示插件安装程序从哪里下载插件依赖项。这里指定的次序就是搜索存储库的次序。
copy-file 指定需要复制到 Geronimo 安装中的附加文件。
config-xml-content 用于 Geronimo 的 config.xml 文件的内容。config.xml 文件通常包含用于被安装模块的配置更改。在网络连接器模块上,通常用来更改 TCP 端口、主机名等等。

准备插件存储库

准备插件存储库需要设置带 Maven 2 存储库的 Web 服务器。本文不讨论 Maven 2 存储库设置的细节。(如果您有兴趣设置自己的存储库,请参阅 参考资料)。然而,可以把插件创建提交给公用的 Geronimo 插件存储库。(请参阅 参考资料)。

除公用的 Geronimo 插件存储库之外,如果需要,Geronimo 还可以作为 Maven 2 存储库并动态地生成插件元数据。元数据(即 geronimo-plugins.xml 文件的内容)的生成是由 GeronimoAsMavenServlet(存 储库)提供的。这个 servlet 使您能够把 Geronimo 服务器中安装的组件当作插件公开。这个能力是由控制台标准程序中的 servlet 实现的。使用 URL http://localhost:8080/console-standard/maven-repo/geronimo-plugins.xml 尝试生成 geronimo-plugins.xml 文件。

在这里,Web 容器把 /maven-repo/* URL 映射到控制台标准 Web 应用程序中的 GeronimoAsMavenServlet 类。在默认情况下,控制台标准 Web 应用程序会在 Geronimo 服务器上安装和运行。它是标准 Web 控制台实现的一部分。

前文提到的 Geronimo 服务器复制使用了这种 geronimo-plugins.xml 元数据的自动化生成过程。

如果要复制最近安装的服务器,则执行 Web 控制台插件 Portlet,然后选择中央存储服务器作为存储库,再使用上面的 URL(http://localhost:8080/console-standard/maven-repo/geronimo- plugins.xml)让中央存储服务器生成它的配置作为插件列表。

对于 Geronimo 1.1,添加自己的中央存储服务器的惟一方式是编辑 config.xml 文件(要获得更多信息,请参阅侧栏 Geronimo 1.1 插件缺陷 )。请记住,在编辑 config.xml 文件前必须停止 Geronimo 服务器,因为服务器可能在任何时候编写它。编辑 var/config 下的 config.xml 文件,使它包含链接到主服务器的 GeronimoAsMavenServlet 的 URL。清单 1 突出显示了要添加的行。


清单 1. 编辑 config.xml 文件
...


http://people.apache.org/~ammulder/plugin-repository-list-1.1.txt



[http://stagingserver:8080/console-standard/maven-repo/]




如果您自己设置了 Maven 2 存储库,请确保在存储库根目录下有 geronimo-plugins.xml 文件。插件安装程序检验这个文件来获得可用插件和它们的元数据。这个文件的内容应该类似于 清单 2


清单 2. geronimo-plugins.xml 文件的内容

xmlns="http://geronimo.apache.org/xml/ns/plugins-1.1">

...


...

...

...


http://www.geronimoplugins.com/repository/geronimo-1.1


http://www.ibiblio.org/maven2/



在上面的 geronimo-plugins.xml 文件中,每一个 元素应该包含插件的描述和 表 1 所列的 元素的所有子元素。 项指出了可以在哪些存储库下载这些插件以及它们的依赖项。这个默认的存储库列表总是包含当前存储库(您设置的存储库)的名字。(除非关联的 Maven 存储库安装在其他某个地方)。

Geronimo 插件的前景

在运行的服务器中即时添加预先配置的模块的能力是引人注目的。在 Geronimo 社区中围绕这个新特征有许多激动人心的成果。只要这些创造性的人们兴奋起来了,就说明将会有革新和迅速的演变。这个特性是开放源码的、访问不受限制而且不 断地得到改进,因此它将迅速地被业界接受,其速度不是专有的或许可限制更严格的服务器所能达到的。

以后可能还会有一些更令人兴奋的改进:

  • 使用插件对 Little-G 服务器发布版进行渐进式升级,使其包含 EJB、EJB + ActiveMQ、EJB + Derby、EJB + ActiveMQ + DerbyThe 等等。这将允许用户安装正好适合自己具体需要的服务器。
  • 嵌入集群的能力,使一组 Geronimo 服务器实例能够像一个超级服务器一样工作。

不要犹豫了。有了本文介绍的信息,您可以创造性地在 Geronimo 中利用插件了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-130298/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-08-23

  • 博文量
    1010
  • 访问量
    732039