创建定制的 WebSphere Application Server Community Edition v2

来源:developerWorks 中国 作者:韩 红芳
  
WAS CE 基于开源项目 Apache Geronimo,是一个完全符合 Java EE 5 规范、经认证的应用程序服务器。本文将介绍如何基于 WAS CE 定制出一个更加轻量级的服务器,并将通过示例为您介绍服务器定制的步骤、方法,以及如何对定制服务器的功能进行进一步的扩展。

引言

WebSphere Application Server Community Edition(以下简称 WAS CE)是一个完全符合 Java Platform, Enterprise Edition 5(Java EE 5)规范、经认证的应用程序服务器。也就是说 WAS CE 包含所有支持 Java EE 5 实现的组件:Web 容器、EJB 容器、消息服务、命令行管理等开发和运行 Java EE 应用程序所需的环境。

但是在某些特定的业务需求下,有的用户可能只需要 WAS CE 中的若干功能组件,如只需要 Web 容器而不考虑 EJB 容器,或者需要 EJB 容器而不考虑集群等。在这种情况下,如果用户使用完整的 Java EE 5 认证的 WAS CE 服务器,那么就会有很多功能模块在自己的应用程序中根本没有被用到过,从而造成了硬盘空间、内存资源的浪费。同时也带来了应用程序服务器启动时间等待、应用服务器捆绑发布包过大等缺点。

那么怎样解决这类问题,才能使得应用程序服务器更加灵活以适应不同的业务需求呢?定制服务器的概念也就随之出现了。通过定制服务器,用户可以选择抽取出管理和运行自己的应用程序所必须的组件,定制出一个更轻量级,启动速度更快的服务器。WAS CE v2.1 及其后续版本就可以帮您完成这个梦想。





WAS CE/Geronimo 架构简介

在深入了解定制服务器之前,我们首先需要了解 WAS CE 中组件的管理方式。下面我们来简单介绍一下 WAS CE 的系统架构和 Plugin 管理机制。

WAS CE 应用服务器基于 Geronimo 内核和 Plugin 机制,通过内核中 GBean 提供的通用服务提供接口 (Service Provider Interface, 简称 SPI),最大限度地重用现有的 Java EE 模块,( 其中这些模块在 WAS CE 中以 Geronimo Plugin 的形式存在 ) ,如 Web 服务器采用 Tomcat,EJB 服务器采用 Apache OpenEJB,JMS 消息服务使用 ActiveMQ 等,实现 JSR-244 (Java EE 5) 规范中所要求实现的各种功能。

另外值得一提的是 Geronimo 对于依赖关系的管理,服务器中的某一个模块要正常工作,首先需要它所依赖的其他模块已经正常启动,Geronimo Plugin 依赖关系在 geronimo-plugin.xml 中定义。以 WASCE Plugins, Welcome :: Tomcat 为例,它所依赖的其中一个 Geronimo Plugin 在 geronimo-plugin.xml 中通过以下形式定义:


清单 1. geronimo-plugin.xml
<dependency>
<groupId>org.apache.geronimo.configs</groupId> 
<artifactId>tomcat6</artifactId>
<version>2.1.4</version>
<type>car</type>
</dependency>

也就是说 WASCE Plugins, Welcome :: Tomcat 这个 Plugin 要正常工作, org.apache.geronimo.configs/tomcat6/2.1.4/car 这个模块所对应的 Plugin 也必须存在。

WAS CE 的服务器定制功能正是基于以上 Geronimo 的架构以及依赖关系管理来实现的。在 WAS CE 中,任何 plugin 形式存在的模块都可以通过定制服务器的方式进行装配,而要保证服务器能够正常运行和启动,Geronimo 内核是必不可少的,它在 WAS CE 服务器中对应的 plugin 是 WASCE Assemblies :: Boilerplate Minimal。所有这些 plugin 都存在于 WAS CE 的 plugin 存储库(即 WAS CE 的安装路径下的 repository 目录)中。在定制服务器的装配过程中,当某个 plugin 从 WAS CE 的 plugin 存储库被抽取出来时,其所依赖的其他 Plugin 也会被抽取出来,一同装配到定制的服务器中,从而确保这个 plugin 能够在 Geronimo 内核的支持下正常运行。

本文以下的小节将分别从服务器定制的步骤,服务器定制的方法,以及如何对定制服务器的功能进行扩展等方面进行介绍。





服务器定制的步骤

服务器定制的步骤可以归纳为如下几步:

1. 下载和安装完整版的 WAS CE。
服务器定制是在完整版的 WAS CE 基础上将必选的以及可选的系统 plugin 装配成一个更加轻量级的服务器。在这个过程中,完整版的 WAS CE 不仅提供以供装配的系统 plugin,还为服务器定制提供功能支持。WAS CE 完整版的下载和安装请参看WAS CE 文档。

2. 选择定制的方式。
服务器的定制可以按照两种方式来进行,它们分别是:(1)以功能为中心的服务器定制;(2)以应用程序为中心的服务器定制。在 WAS CE 最新版本 2.1.1.2 以及更早的版本中,对这两种方式在操作上并没有进行明确的区别。

  • 以功能为中心的服务器定制:在服务器定制的时候,从定制的服务器将支持哪些功能这个角度来进行考虑,比如让定制的服务器支持:web 容器,管理控制台,内嵌的 Derby 数据库;而不是为了让定制的服务为某个特定的应用程序提供服务。这种方式称为以功能为中心的服务器定制。
  • 以应用程序为中心的服务器定制:在服务器定制的时候,只是为了让定制的服务器为某个特定的应用程序提供服务。这种方式称为以应用程序为中心的服务器定制。使用这种服务器定制的方式,需要将具体的应用程序以 plugin 的形式先部署到完整版的 WAS CE 中,WAS CE 的依赖管理机制在装配定制服务器的时候会自动识别并且包含该应用程序 plugin 所依赖的系统 plugin。

3. 明确定制服务器需要包含的 plugin。
不管选择何种方式进行服务器定制,WASCE Assemblies :: Boilerplate Minimal 是必选的 plugin,因为它提供了对服务器启动等所必须的支持。除此之外,根据不同的定制方式,确定其他需要的 plugin。当选择以功能为中心的服务器定制时,首先要明确定制服务器需要支持哪些功能,另外需要对 WAS CE 的各个 plugin 有所了解,从而找到所需功能所对应的系统 plugin。WAS CE 的用户手册列出了相对比较常用的一些 plugin 组(如支持 EJB 的 plugin 组,支持持久化的 plugin 组等),以方便我们的选择。具体请参看WAS CE 文档。
当选择以应用程序为中心的服务器定制时,这个步骤相对会比较简单。在 WASCE Assemblies :: Boilerplate Minimal 之外,只需要其他代表应用程序的 plugin 即可。

4. 最后,选择合适的方法来进行定制的操作:通过管理控制台、使用 Gshell 命令、或者通过 WAS CE Eclipse Plugin (以下简称 WEP)。本文在服务器定制的方法一节中,将结合实例程序对这三种定制操作进行进一步的介绍。





实例程序介绍

本文将通过使用 WAS CE 提供的实例程序 bank 对服务器定制进行实例演示,所以我们首先来介绍一下实例程序的下载、部署、运行,以及它的依赖关系。

下载实例程序:

可以从WAS CE 的下载站点下载到实例程序 bank 的实例程序包。以 WAS CE v2.1.1.2 为例,它的实例程序包为 wasce_samples-2.1.1.2.zip,进行解压缩以后(假设解压缩到 C:/wasce_samples_2.1.1.2),可以在如下位置找到两种不同格式的 bank 实例程序。

  • car 形式:C:/wasce_samples_2.1.1.2/plugins/bank-tomcat/target/bank-ear-2.1.1.2.car
  • ear 形式:C:/wasce_samples_2.1.1.2/applications/bank/bank-ear/target/bank-ear-2.1.1.2.ear

我们可以选择其中一种实例程序,按照以下两小节介绍的步骤进行部署。

部署实例程序 ear 包

对 ear 包的安装部署步骤如下:

1. 启动 WAS CE;

2. 假设 WAS CE 安装在本机,在浏览器中打开管理控制台 http://localhost:8080/console,并使用用户名 system,密码 manager 进行登陆;

3. 通过控制台导航栏进入 Embeded DB -> DB Manager,在 Run SQL portlet 的 Create DB 一栏中,输入 BankDB 作为数据库的名字,然后点击 Create 按钮创建数据库。创建成功后,在同一个 portlet 的 Use DB 一栏中,从下拉框中选择 BankDB,然后将 C:\wasce_samples-2.1.1.2\applications\bank\db\BankDB.sql 文件中的内容拷贝到 SQL Command/s 文本框中。最后点击 Run SQL 按钮创建数据库表格及其数据。

4. 通过控制台导航栏进入 Applications –> Deploy New,在 Archive 一栏,指定 C:/wasce_samples_2.1.1.2/applications/bank/bank-ear/target/bank-ear-2.1.1.2.ear, 保持 Plan 一栏为空,选中 Start app after install,最后点击 Install 按钮完成 ear 的安装部署。

通过这种方式安装的 bank 实例程序,通过以应用程序为中心的方式定制出来的服务器同样不含有 BankDB,所以需要以上述步骤 3 同样的方式手动创建 BankDB 及其数据。而且,为了使得定制的服务器支持管理控制台、内嵌 Derby 数据库、以及数据库创建 Portlet,需要在装配定制服务器的时候同时选择以下 plugin:

  • Geronimo Plugins, Console :: Tomcat
  • Geronimo Plugins, Derby
  • Geronimo Plugins, System Database :: Console (Tomcat)

由于定制服务器的装配以 plugin 为单位,应用程序如果以 war 或者 ear 等形式进行的部署,则需要在其部署计划中将其模块类型指定为 car;同时在部署完成之后需要通过管理控制台将该实例程序转换成 plugin。

我们以本文的实例程序 bank-ear-2.1.1.2.ear 为例,可以看到在它的 Geronimo 应用程序部署计划(即 META-INF\ geronimo-application.xml)中,moduleId 元素中的 type 为 car。


清单 2. geronimo-application.xml
<moduleId>
<groupId>org.apache.geronimo.samples</groupId>
<artifactId>bank-ear</artifactId>
<version>2.1.1.2</version>
<type>car</type>
</moduleId>

将应用程序转换成 plugin 的步骤如下:


时间:2009-06-22 16:07 来源:developerWorks 中国 作者:韩 红芳 原文链接

好文,顶一下
(1)
100%
文章真差,踩一下
(0)
0%
------分隔线----------------------------


把开源带在你的身边-精美linux小纪念品
无觅相关文章插件,快速提升流量