IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  WebSphere | Open source  >

创建定制的 WebSphere Application Server Community Edition v2.1 服务器

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

韩 红芳 (hanhongf@cn.ibm.com), 软件工程师, IBM
池 润华 (runhc@cn.ibm.com), 软件工程师, IBM

2009 年 6 月 22 日

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

引言

马上下载:

了解更多关于 WebSphere Application Server Community Edtion V2.1 中的新增功能

更多关于 WebSphere Application Server Community Edtion 的资源,请参考WebSphere Application Server Community Edtion 产品专题

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 的步骤如下:

1. 启动 WAS CE;

2. 打开管理控制台 http://localhost:8080/console,并使用用户名 system,密码 manager 进行登陆;

3. 通过控制台导航栏进入 Applicaions -> Plugin


图 1. 创建 Plugin Portlet
was ce 定制

4. 在下拉框中选中 bank 实例程序,然后点击 Export Plugin 按钮;


图 2. 选择应用程序
was ce 定制

5. 在下一个页面点击 Save Plugin Data 按钮;

6. 最后直接点击 Done,将 bank 实例程序直接转换为 plugin。


图 3. 转换 plugin 成功
was ce 定制

部署实例程序 car 包

对 car 包安装部署步骤如下:

1. 启动 WAS CE;

2. 打开 Window command 窗口,通过 cd 命令进入到 WAS CE 安装目录下的 bin 目录,然后执行如下命令安装 car 包: deploy.bat -u system -p manager install-plugin C:\wasce_samples-2.1.1.2\plugins\bank-tomcat\target\bank-ear-2.1.1.2.car

注:如果为非 windows 系统,则使用 terminal 窗口,并使用类似以下命令进行安装:./deploy.sh -u system -p manager install-plugin /wasce_samples-2.1.1.2/plugins/bank-tomcat/target/bank-ear-2.1.1.2.car

使用 car 包进行部署,我们不需要对数据库进行额外的操作,因为 car 包已经包含对 BandDB 的创建以及数据的初始化工作。

运行实例程序

当 bank 程序安装部署完毕,我们可以打开浏览器,通过地址 http://localhost:8080/bank/ 对其进行访问。


图 4. bank 应用程序主页面
was ce 定制

点击 View Exchange Rates,可以看到如下页面:


图 5. bank 利率查看页面
was ce 定制

实例程序的依赖关系

通过管理控制台中的 Debug Views –> Dependency Viewer,我们可以查看到 bank 应用程序所依赖的系统 plugin。首先我们在 Enterprise Applications 分类中找到 bank 应用程序的模块 ID:org.apache.geronimo.samples/bank-ear/2.1.1.2/car。其中这个 ID 是由部署计划中的相关元素值按照这样的组合生成的:groupId/artifactId/version/type。通过查看 bank 所对应的 car 包或者 ear 包中的 META-INF\geronimo-application.xml,我们可以看到这样的配置:


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


图 6. Dependency Viewer
was ce 定制

找到并展开 org.apache.geronimo.samples/bank-ear/2.1.1.2/car 项之后,我们可以看到它又包含了 AppClientModule, EJBModule, ResourceAdapterModule, WebModule, dependencies 等子项,其中 EJBModule 等子项下除了列出了子模块的 ID 外,还列出了子模块的 dependencies。我们把所有的这些 dependencies 下列出的系统模块进行汇总和整理,我们就可以得到 bank 应用程序所依赖的所有系统 plugin:

  • org.tranql/tranql-connector-derby-embed-local/1.4/rar
  • org.apache.geronimo.configs/j2ee-server/2.1.4/car
  • org.apache.geronimo.configs/system-database/2.1.4/car
  • org.apache.geronimo.configs/transaction/2.1.4/car
  • org.apache.geronimo.configs/openjpa/2.1.4/car
  • org.apache.geronimo.configs/openejb/2.1.4/car
  • org.apache.geronimo.configs/tomcat6/2.1.4/car
  • org.apache.geronimo.samples/bank-ear/2.1.1.2/car
  • org.apache.geronimo.configs/jasper/2.1.4/car
  • org.apache.geronimo.configs/j2ee-corba-yoko/2.1.4/car
  • org.apache.geronimo.configs/axis/2.1.4/car
  • org.apache.geronimo.configs/axis2/2.1.4/car

通过这种方式,我们可以查到我们的应用程序需要依赖哪些系统 plugin。当我们进行以功能为中心的服务器定制时,这个 plugin 列表,再加上 WAS CE Assemblies :: Boilerplate Minimal,就是我们需要选择的最小 plugin 集合。当然我们也可以根据实际的需要,在此之外选择更多其他功能的 plugin,比如支持热部署的 plugin 等。而当我们进行以应用程序为中心的服务器定制时,我们就不需要关心这个应用程序所依赖的系统 plugin 列表,就像我们前面提到过的,在以应用程序为中心的服务器定制中,只要选中代表我们应用程序的一个或者多个 plugin 以后,WAS CE 的 plugin 系统会自动帮我们识别和处理这些必要的依赖关系。





回页首


服务器定制的方法

WAS CE 提供了三种不同的方法来实现更轻量级服务器的定制:通过管理控制台,使用 Gshell 命令,或者通过 WAS CE Eclipse Plugin (本文以下简称 WEP)。用户可以根据应用程序生命周期的不同阶段或者个人的喜好,选择最快捷的方式进行定制操作。

以下的演示采用以应用程序为中心的方法,并且根据前面介绍的步骤已经安装部署了 bank 的 car 包。所以我们在选择 plugin 列表的时候只需要选择如下 plugin:

  • WASCE Assemblies :: Boilerplate Minimal
  • Geronimo Samples :: bank Plugin for Tomcat


如果前面选择了 bank 的 ear 包进行安装部署,那么在选择 plugin 列表的时候请选择如下 plugin:

  • WASCE Assemblies :: Boilerplate Minimal
  • bank-ear
  • Geronimo Plugins, Console :: Tomcat
  • Geronimo Plugins, Derby
  • Geronimo Plugins, System Database :: Console (Tomcat)

通过管理控制台定制 WAS CE 服务器

1. 启动 WAS CE;

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

3. 通过控制台导航栏进入 Applications -> Plugins

4. 在 Assemble Server portlet 中,点击 Assemble a server 按钮;


图 7. 服务器定制 Portlet(管理控制台)
was ce 定制

5. 给定制的服务器进行命名。其中 Assembly target path 为定制服务器的非压缩版路径,默认值 var/temp/assembly 为相对于 WAS CE 安装目录的相对路径。同时,根据 Assembly format 的值,还将为定制服务器生成一个压缩版本。


图 8. 为定制服务器命名(管理控制台)
was ce 定制

6. 在同一页面中,为定制服务器选择 plugin 列表。其中 WASCE Assemblies :: Boilerplate Minimal 是保证定制出来的服务器能正常启动等必选的 plugin。最后,点击 Assemble 按钮。


图 9. 为定制服务器选择 plugin(管理控制台)
was ce 定制

7. 在接下来的页面中,将列出所有被选中的 plugin 信息。确定无误以后,点击 Assemble 按钮。

8. 在最后的页面上,将显示定制操作的状态,同时列出了非压缩版的定制服务器所在的绝对路径。当然,你可以在 var/temp 下找到名为 WASCEAssembly-1.0-bin.zip 的压缩版定制服务器。点击 Done 完成服务器定制操作。


图 10. 定制成功(管理控制台)
was ce 定制

使用 Gshell 命令定制 WAS CE 服务器

1. 启动 WAS CE;

2. 打开 Window command 窗口,通过 cd 命令进入到 WAS CE 安装目录下的 bin 目录,然后执行命令进入 Gshell 命令窗口:gsh.bat。如果为非 windows 系统,则使用 terminal 窗口,并使用该命令进入 Gshell 命令窗口:gsh.sh


图 11. 启动 Gshell (Gshell)
was ce 定制

3. 输入 Gshell 命令:deploy/assemble, 并使用参数给定制服务器命名,输入用户名和密码。


图 12. 定制服务器的 Gshell 命令(Gshell)
was ce 定制

4. 根据提供的 plugin 列表,为定制服务器选择 plugin。其中 WASCE Assemblies :: Boilerplate Minimal 是保证定制出来的服务器能正常启动等必选的 plugin。输入选中的 plugin 所对应的数字,然后按回车。


图 13. 为定制服务器选择 plugin (Gshell)
was ce 定制

5. 同样,我们可以在 WAS CE 安装目录下的 var\temp\assembly 中找到非压缩版的定制服务器,同时在 var\temp 下找到压缩版的定制服务器:WASCEAssebmly_gsh-1.0-bin.zip。

通过 WEP 定制 WAS CE 服务器

通过 WEP 进行 WAS CE 服务器定制有两个前提条件:

完成上述准备以后,可以按照下面的步骤进行操作:

1. 在 WAS CE 的实例上右键弹出右键菜单,然后在右键菜单上点击 Start 启动 WAS CE;


图 14. 启动 WAS CE(WEP)
was ce 定制

2. 在 WAS CE 启动完毕之后,双击 WAS CE 实例,然后在打开的窗口中选择 Plugin 便签页,点击 Create Custom Assembly


图 15. 启动定制服务器功能(WEP)
was ce 定制

3. 在弹出的对话框中,给定制服务器命名,同时选择 plugin。其中 WASCE Assemblies :: Boilerplate Minimal 是保证定制出来的服务器能正常启动等必选的 plugin。按住 CTRL 键然后单击 plugin 来完成 plugin 的多选,最后按 Finish 键。


图 16. 为定制服务器命名并选择 plugin(WEP)
was ce 定制

4. 同样,我们可以在 WAS CE 安装目录下的 var\temp\assembly 中找到所定制服务器的所有文件,而在 var\temp 下可以找到已经按照 zip 格式压缩后的定制服务器包:WASCEAssembly_WEP-1.0-bin.zip。

在完成服务器定制以后,可启动定制好的服务器,并按照前面运行实例程序小节的步骤进行验证。如果是以 ear 形式部署的实例程序,则需要在启动定制服务器以后,按照 ear 包部署的步骤 3 首先创建 BankDB 并对其数据进行初始化,再运行实例程序进行验证。





回页首


定制服务器的扩展

随着应用程序功能的增加或者所采用技术的更新,升级后的应用程序可能需要应用服务器提供更多的支持,因此我们可以按需增加已定制服务器的功能模块,以扩展其能力,比如增加其对远程部署、热部署等功能的支持。定制服务器扩展可以通过从完整的 WAS CE 服务器中导出需要功能所对应的系统 plugin,然后将其安装到定制服务器中来完成。需要说明的是,WAS CE 的 plugin 是对版本敏感的,也就是说,如果定制服务器是基于 WAS CE 版本 2.1.1.2 装配而成的,那么对定制服务器的扩展,也需要从 WAS CE 版本 2.1.1.2 中导出 plugin,然后进行安装。

值得注意的是,为了使定制服务器能够在需要的时候可以通过 deploy 命令的子命令 install-plugin 进行功能扩展,在最初创建定制服务器的时候请选定如下 plugin:

  • Geronimo Framework, Configs :: JSR-88 CLI

以下介绍如何从 WAS CE 服务器中导出系统 plugin,以及如何再将该系统 plugin 安装到定制的 WAS CE 服务器中以扩展其功能。

从完整版的 WAS CE 中导出系统 plugin

1. 启动 WAS CE 完整版;

2. 打开管理控制台 http://localhost:8080/console,并使用用户名 system,密码 manager 登陆;

3. 通过控制台导航栏进入 Applicaions -> Plugins

4. 在下拉框中选中需要导出的系统 plugin,然后点击 Export Plugin 按钮。这里我们选择用于支持热部署的 plugin,其对应的 ModuleId 为 org.apache.geronimo.configs/hot-deployer/2.1.4/car


图 17. 选择导出的 plugin
was ce 定制

5. 在下一个页面点击 Save Plugin Data 按钮;

6. 最后直接点击 Export Plugin,并在弹出的对话框中将该 plugin 保存到文件系统。


图 18. 导出 plugin
was ce 定制

在定制服务器中安装新的系统 plugin

1. 启动定制的 WAS CE 服务器;
如果定制服务器和完整版 WAS CE 存在端口冲突,可以改变 PortOffset 的属性值来改变其中一个服务器的端口。PortOffset 属性值的设定在服务器安装路径下的 var/config/config-substitutions.properties 文件中。这里我们假设在定制服务器中设置:PortOffset=1;

2. 打开 Window command 窗口,通过 cd 命令进入到定制的 WAS CE 安装路径下的 bin 目录,然后执行如下命令安装由前面步骤导出的 car 包:deploy.bat -u system -p manager –port 1100 install-plugin C:\hot-deployer-2.1.3.car

注:如果为非 windows 系统,则使用 terminal 窗口,并使用类似以下命令进行安装:./deploy.sh -u system -p manager -port 1100 install-plugin /hot-deployer-2.1.3.car

如果需要为定制服务器增加其他功能,重复上面的步骤导出和安装对应的系统 plugin 即可。





回页首


总结语

本文介绍了定制轻量级 WAS CE 服务器的方式、步骤、方法,以及对定制服务器的功能扩展的方法,并通过 WAS CE 提供的实例程序对上述各个方面进行了操作演示。



参考资料

学习

获得产品和技术


作者简介

韩红芳:2005年毕业于浙江大学,获得计算机科学与技术硕士学位。同年加入IBM,从事项目开发和项目管理等工作。目前为 WAS CE 开发团队成员。


池润华:IBM 软件工程师,2008 年加入 IBM。对开源、Java EE、Web2.0 等相关技术有浓厚的兴趣。目前为 WAS CE 开发团队成员。




对本文的评价








IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款