探索 WebSphere® Application Server Community Edition V2.1 中的新增功能,包括使用 Gshell 执行 Geronimo 命令、在您自己的服务器集基础上创建多个服务器组装,以及通过专家模式和新的 Monitoring Portlet 完全控制服务器的能力。此版本是对已经是功能最强大的可用开放源代码应用程序服务器的改进。
引言
IBM 已宣布推出其新版本的 WebSphere Application Server Community Edition(以下称为 Community Edition),此版本重点集中于改进可用性和易用性。Community Edition V2.1 打包了庞大的功能集,这些功能进一步将其确立为功能最强大的 Java EE5 应用程序服务器之一。下面让我们了解一下最新版本的 Community Edition 中包括的功能。
Community Edition 基于 Apache Geronimo V2.1.1,是一个经过完全认证的 Java Platform Enterprise Edition 5(Java EE5) 应用程序服务器。本文指导您了解整个新功能集,包括自定义服务器组装、部署计划创建器向导、Gshell、增强的管理控制台、全局 JNDI 支持等等。此版本还包括新的开发和用户指南,可以使得开发、部署和运行应用程序更加容易。
新的内容
Community Edition V2.1 包括以下新功能集:
- 自定义服务器组装: 您可以创建仅包含应用程序所需功能组件的服务器组装。
- 部署计划创建器向导: 帮助您为 Web 应用程序生成适当部署计划的管理控制台菜单。
- Gshell: 用于执行 Geronimo 命令的命令行处理环境。GShell 是一个可扩展的环境,并包括对编辑、命令历史记录和按 Tab 键自动完成 (tab completion) 的支持。
- 专家模式: 为专家用户提供对 Community Edition 服务器上运行的进程的完全控制。缺省情况下,您不能修改关键进程,但是这个新模式允许您覆盖该设置。
- 监视控制台插件: 在 Geronimo 管理控制台中提供监视支持。监视控制台可以从多个 Geronimo 服务器收集统计信息和性能数据,并以图形的方式向用户显示该数据。
- WADI 集群: 您现在可以使用 Web 应用程序分布式基础结构(Web Application Distribution Infrastructure,WADI),以支持对使用 Tomcat Web 容器(早期版本中用于 Jetty 的 WADI 支持)的 Geronimo 配置的 Web 应用程序进行集群。您现在还可以将应用程序部署到以管理方式定义的 Geronimo 服务器组。
- Community Edition Eclipse 插件: Eclipse 插件现在使用 Java Architecture on XML Binding (JAXB) 而不是 Eclipse Modelling Framework (EMF)。
- 其他增强功能: Community Editions 支持新的外观、其他可用性改进、基于组件的管理控制台,并支持附加的数据库和操作系统。我们将在本文结尾处探索这些增强功能。
Community Edition V2.1 包括若干新的组件和模块,如表 1 所示。新模块用粗体进行标记。
表 1. Community Edition V2.0 与 V2.1 中的模块之间的比较 | ||
组件 | V2.0 | V2.1 |
---|---|---|
activeio-core | 3.0.0-incubator | 3.0.1 |
activemq-core | 4.1.1 | 4.1.2 |
activemq-ra | 4.1.1 | 4.1.2 |
annogen | 0.1.0 | 0.1.0 |
ant | NA | 1.7.0 |
ant-launcher | NA | 1.7.0 |
asm | 2.2.3 | 2.2.3 |
asm-commons | 2.2.3 | 2.2.3 |
aspectjrt | NA | 1.5.3 |
axiom | 1.2.5 | 1.2.5 |
axiom-api | 1.2.5 | 1.2.5 |
axiom-dom | 1.2.5 | 1.2.5 |
axiom-impl | 1.2.5 | 1.2.5 |
axis | 1.4 | 1.4 |
axis2 | 1.3 | 1.3 |
axis2-adb | 1.3 | 1.3 |
axis2-java2wsdl | 1.3 | 1.3 |
axis2-jaxws | 1.3 | 1.3 |
axis2-jaxws-api | 1.3 | 1.3 |
axis2-kernel | 1.3 | 1.3 |
axis2-metadata | 1.3 | 1.3 |
axis2-saaj | 1.3 | 1.3 |
backport-util-concurrent | 2.2 | 2.2 |
bcel | 5.2 | 5.2 |
castor | 1.0.5 | 1.0.5 |
catalina | 6.0.13 | 6.0.16 |
c atalina-ha | 6.0.13 | 6.0.16 |
cglib- nodep | 2.1_3 | 2.1_3 |
Commons- beanutils | 1.7.0 | 1.7.0 |
Commons- cli | 1.0 | 1.0 |
Commons- codec | 1.3 | 1.3 |
Commons- collections | 3.2 | 3.2 |
Commons- digester | 1.8 | 1.8 |
Commons- discovery | 0.4 | 0.4 |
Commons- el | 1.0 | 1.0 |
Commons- fileupload | 1.1.1 | 1.1.1 |
Commons- httpclient | 3.0.1 | 3.0.1 |
Commons- io | 1.2 | 1.2 |
Commons- jexl | 1.1 | 1.1 |
Commons- lang | 2.3 | 2.3 |
Commons- logging | 1.0.4 | 1.0.4 |
Commons- logging- api | NA | 1.0.4 |
coyote | 6.0.13 | 6.0.16 |
derby | 10.2.2.0 | 10.2.2.0 |
derbyclient | 10.2.2.0 | 10.2.2.0 |
derbynet | 10.2.2.0 | 10.2.2.0 |
derbytools | 10.2.2.0 | 10.2.2.0 |
dwr | 1.1.4 | 2.0.3 |
geronimo-activation_1.1_spec | 1.0 | 1.0.2 |
geronimo-annotation_1.0_spec | 1.1 | 1.1.1 |
geronimo-connector | 2.0.1 | 2.1.1 |
geronimo-ejb_3.0_spec | 1.0 | 1.0.1 |
geronimo-el_1.0_spec | 1.0 | 1.0.1 |
geronimo-j2ee-connector_1.5_spec | 1.1.1 | 2.0.0 |
geronimo-j2ee-management_1.1_spec | 1.0 | 1.0.1 |
geronimo-jacc_1.1_spec | 1.0 | 1.0.1 |
geronimo-javaee-deployment_1.1MR3_spec | 1.0 | 1.0 |
geronimo-javamail_1.4_mail | 1.2 | 1.4 |
geronimo-jaxr_1.0_spec | 1.1 | 2.0.0 |
geronimo-jaxrpc_1.1_spec | 1.1 | 2.0.0 |
geronimo-jms_1.1_spec | 1.1 | 1.1.1 |
geronimo-jpa_3.0_spec | 1.1 | 1.1.1 |
geronimo-jsp_2.1_spec | 1.0 | 1.0.1 |
geronimo-jta_1.1_spec | 1.1 | 1.1.1 |
geronimo-saaj_1.3_spec | NA | 1.0.0 |
geronimo-schema-j2ee_1.4 | 1.2 | 1.2 |
geronimo-schema-jee_5 | 1.1 | 1.1 |
geronimo-servlet_2.5_spec | 1.1 | 1.2 |
geronimo-stax-api_1.0_spec | 1.0 | 1.0.1 |
geronimo-transaction | 2.0.1 | 2.1.1 |
geronimo-ws-metadata_2.0_spec | 1.1.1 | 1.1.2 |
groovy-all -minimal | NA | 1.5.6 |
gshell-bootstrap | NA | 1.0-alpha-1 |
gshell-builtins | NA | 1.0-alpha-1 |
gshell-cli | NA | 1.0-alpha-1 |
gshell-command-api | NA | 1.0-alpha-1 |
gshell-core | NA | 1.0-alpha-1 |
gshell-embeddable | NA | 1.0-alpha-1 |
gshell-maven-plugin | NA | 1.0-alpha-1 |
gshell-remote-client | NA | 1.0-alpha-1 |
gshell-remote-common | NA | 1.0-alpha-1 |
gshell-remote-server | NA | 1.0-alpha-1 |
gshell-whisper | NA | 1.0-alpha-1 |
gshell-bootstrap | NA | 1.0-alpha-1 |
gshell-builtins | NA | 1.0-alpha-1 |
gshell-cli | NA | 1.0-alpha-1 |
gshell-command-api | NA | 1.0-alpha-1 |
gshell-core | NA | 1.0-alpha-1 |
gshell-embeddable | NA | 1.0-alpha-1 |
gshell-maven-plugin | NA | 1.0-alpha-1 |
howl | 1.0.1-1 | 1.0.1-1 |
httpcore | 4.0-alpha5 | 4.0-alpha5 |
geroimo-interceptor_3.0_spec | 1.0 | 1.0.1 |
jasper | 6.0.13 | 6.0.16 |
jasper-el | 6.0.13 | 6.0.16 |
jasper-jdt | 6.0.13 | 6.0.16 |
jaxb-api | 2.0 | 2.0 |
jaxb-impl | 2.0.5 | 2.0.5 |
jaxb-xjc | 2.0.5 | 2.0.5 |
jaxen | 1.1-beta-10 | 1.1-beta-11 |
jaxws-rt | 2.0 | 2.0 |
jaxws-tools | 2.0 | 2.0 |
jcl104-over-slf4j | NA | 1.4.3 |
jline | NA | 0.9.94 |
jstl | 1.2 | 1.2 |
juddi | 0.9rc4 | 0.9rc4 |
juli | 6.0.13 | 6.0.16 |
juli-adapters | 6.0.13 | 6.0.16 |
log4j | 1.2.14 | 1.2.14 |
myfaces-api | 1.2.0 | 1.2.2 |
myfaces-impl | 1.2.0 | 1.2.2 |
neethi | 2.0 | 2.0 |
ognl | 2.6.9 | 2.6.9 |
openejb | 3.0-beta-1 | 3.0 |
openejb-axis | 3.0 | 3.0 |
openejb-client | 3.0 | 3.0 |
openejb-core | 3.0 | 3.0 |
openejb-ejbd | 3.0 | 3.0 |
openejb-javaagent | 3.0 | 3.0 |
openejb-jee | 3.0 | 3.0 |
openejb-loader | 3.0 | 3.0 |
openejb-server | 3.0 | 3.0 |
openjpa | 1.0.0 | 1.0.2 |
pluto | 1.0.1 | 1.1.6 |
pluto-container | NA | 1.1.6 |
pluto-descriptor-api | NA | 1.1.6 |
pluto-descriptor-impl | NA | 1.1.6 |
pluto-portal-driver | NA | 1.1.6 |
pluto-portal-driver-impl | NA | 1.1.6 |
pluto-taglib | NA | 1.1.6 |
tranql-connector-db2-xa | 1.3 | 1.4 |
scout | 1.0rc1 | 1.0rc1 |
serp | 1.11.0 | 1.11.0 |
slf4j-api | NA | 1.4.3 |
slf4j-jcl | NA | 1.4.3 |
slf4j-log4j12 | NA | 1.4.3 |
swizzle-stream | 1.0.1 | 1.0.1 |
tomcat | 6.0.13 | 6.0.16 |
tranql | 1.3 | 1.4 |
tranql-connector-derby-client-local | 1.3 | 1.4 |
tranql-connector-derby-client-xa | 1.3 | 1.4 |
tranql-connector-derby-embed-local | 1.3 | 1.4 |
|
自定义服务器组装
Community Edition 的缺省下载版本是完全兼容的 Java EE5 认证服务器组装。根据您的业务需求,您可能不需要完整的服务器,而是只需要其中的一部分。例如,如果您的应用程序仅包含 Web 层,您可能只需要 Tomcat 并排除诸如 OpenEJB、Active MQ 等其他模块。以前提取自定义服务器是一个构建时操作,但是使用 Community Edition V2.1,您可以在运行时期间获取现有服务器的自定义快照。存在两种提取自定义服务器的方法:
- 以应用程序为中心:您选择应用程序成功运行所必需的一个或多个插件。
- 以功能为中心:您选择开发环境所需要的预期功能集。
我们将在下面几个部分中非常详细地讨论自定义服务器的创建。但是我们首先需要了解基本的 Community Edition 体系结构。Community Edition 提供了一个插件体系结构,其中服务器完全在插件的基础上组装而成。Community Edition 中的每一个模块都是插件,并且每一个插件都具有关联的依赖项。因此我们需要确保所组装的服务器具有其操作所需的所有插件。
在我们的示例中,我们将使用以应用程序为中心的方法来定义自定义服务器的内容。我们将使用现有的 Community Edition 示例(可通过 Community Edition 下载包获得)中的 jsp-examples-war。按照以下步骤操作以创建自定义服务器组装:
- 修改应用程序的部署计划。此步骤是必需的,因为该示例的缺省部署将应用程序安装为 WAR,而 Community Edition 将插件识别为 CAR。将 <dep:type>car</dep:type> 标记添加到部署计划。
- 将示例 jsp-examples-war 部署到 Community Edition V2.1。
- 您可以启动该应用程序,并使用 http://localhost:8080/jsp-examples/ 验证其功能。
- 下面,我们将确定应用程序需要的功能组件和依赖项。此步骤可以通过使用管理控制台中的 Dependency Viewer Portlet 来得以简化。使用 http://localhost:8080/console/ 启动管理控制台。
- 使用缺省用户名 system, 和密码 manager 登录。
- 在 Debug Views 下的欢迎页中,启动 Dependency Viewer Portlet,如图 1 所示:
图 1. 管理控制台中的 Dependency Viewer Portlet
- 由于我们已部署了一个 Web 应用程序,请选择 WebModule。在 WebModule 下面,选择 org.apache.geronimo.applications.examples/geronimo-jsp- examples/2.1.0.0/car-> dependencies,这将显示我们的 Web 应用程序需要的各个依赖项(请参见图 2):
图 2. jsp-examples-war 应用程序的依赖项
- 为了获得一个最基本的工作服务器,我们还需要包括 geronimo-boilerplate-minimal 插件,以实现启动、停止及其他功能。
我们现在已确定了该自定义服务器需要的依赖项。下一步我们将在所有这些依赖项的基础上组装一个自定义服务器:
- 在管理控制台中的 Applications 下面,选择 Plugins,如图 3 所示:
图 3. 管理控制台中的 Plugin Portlet
- 下一步选择 Assemble a server。在下一个屏幕上,为 groupId 输入 org.apache.geronimo.customserver,为 artifactId 输入 TestServer,如图 4 所示:
图 4. 所组装的服务器的构件
- 现在从 Plugins in local server 下面显示的列表中选择以下插件,然后单击 Assemble。
- com.ibm.wasce.assemblies/wasce-boilerplate-minimal/2.1.0.0/jar
- org.apache.geronimo.applications.examples/geronimo-jsp-examples/2.1.0.0/car
- org.apache.geronimo.configs/axis/2.1.1/car
- org.apache.geronimo.configs/axis2/2.1.1/car
- org.apache.geronimo.configs/j2ee-corba-yoko/2.1.1/car
- org.apache.geronimo.configs/jasper/2.1.1/car
- org.apache.geronimo.configs/openjpa/2.1.1/car
- org.apache.geronimo.configs/tomcat6/2.1.1/car
图 5. 选择插件
- 下一个屏幕(图 6)显示了要包括在该自定义服务器中的所有插件的列表。单击 Install。
图 6. 要包括在自定义服务器中的所有插件的列表
- 在下一个屏幕上(图 7),您应该看到一条消息,该消息指示成功的服务器组装,并包括该自定义服务器的位置(在我们的例子中为 <WASCE_HOME>/var/temp/assembly)。单击 Done。
图 7. 成功的服务器组装
- 下一步我们需要测试所组装的服务器。关闭现有的服务器,并从 <WASCE_HOME>\var\temp\assembly\bin\startup.bat 启动新的服务器。
- 最后,您可以使用 http://localhost:8080/jsp-examples/ 启动应用程序。
请注意,我们组装的服务器是一个最基本的服务器;您将不能获得管理控制台的图形用户界面。
为了便于参考,您可能希望在自己的自定义服务器中包括以下插件:
- org.apache.geronimo.plugins/console-tomcat/2.1.1/car :基于 GUI 的管理控制台
- org.apache.geronimo.plugins/sysdb-console-tomcat/2.1.1/car :管理控制台中基于 GUI 的 Database Portlet
- org.apache.geronimo.plugins/sysdb-console-tomcat/2.1.1/car :管理控制台中基于 GUI 的 Debug Views Portlet
- org.apache.geronimo.plugins/activemq-console-tomcat/2.1.1/car :管理控制台中基于 GUI 的 JMS 控制台
- org.apache.geronimo.plugins/plancreator-console-tomcat/2.1.1/car :管理控制台中基于 GUI 的 Deployment Plan Creator Portlet
正如您可以从我们的示例中判断出的那样,该自定义服务器具有非常强大的功能,可进一步利用模块化、可扩展的 Geronimo 插件体系结构。您可以在现有的运行服务器的基础上快速组装许多类型的服务器。
Deployment Plan Creator 向导
为了简化特定于服务器的部署计划(例如 geronimo-web.xml)的创建,Community Edition 的管理控制台中现在有一个名为 Plan Creator 的新 Porlet。Plan Creator 接受一个 Web 应用程序存档(Web application archive,WAR),并指导用户完成一系列步骤来自动生成 geronimo-web.xml 文件。它尚不支持在 EAR 和 EJB-JAR 的基础上创建 geronimo-application.xml 和 openejb-jar.xml。
Deployment Plan Creator 的一些突出功能包括:
- Web 应用程序中声明的 EJB、EJB Local、JDBC 连接池、JMS 连接工厂、JMS 目的地、JavaMail 会话和 Web 服务引用 是自动发现的。您通过列出服务器环境中可链接到的可用资源来解析那些引用。
- 上面描述的任何在 Java 类中通过标注 声明的引用也是自动发现的。
- 简化的安全 配置。
我们将使用 Community Edition 示例 中可用的 jsp-examples-war 应用程序来说明这一点。
- 在 jsp-examples-war-2.1.0.0.war 中,定位到应用程序存档中的 WEB-INF 下面的Web 应用程序部署计划 (geronimo-web.xml) 。
目前我们拥有如清单 1 所示的部署计划:
清单 1. 部署计划 geronimo-web.xml
<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-2.0" xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.2" xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2"> <dep:environment> <dep:moduleId> <dep:groupId>org.apache.geronimo.applications.examples</dep:groupId> <dep:artifactId>geronimo-jsp-examples</dep:artifactId> <dep:version>2.1.0.0</dep:version> </dep:moduleId> <dep:dependencies/> <dep:hidden-classes/> <dep:non-overridable-classes/> </dep:environment> <context-root>/jsp-examples</context-root> <!--<context-priority-classloader>false</context-priority-classloader>--> <security-realm-name>geronimo-admin</security-realm-name> <sec:security> <sec:default-principal> <sec:principal class="org.apache.geronimo.security.realm.providers. GeronimoUserPrincipal" name="anonymous"/> </sec:default-principal> <sec:role-mappings> <sec:role role-name="tomcat"> <sec:principal class="org.apache.geronimo.security.realm.providers. GeronimoGroupPrincipal"name="admin"/> </sec:role> </sec:role-mappings> </sec:security> </web-app> |
- 从 jsp-examples-war-2.1.0.0.war 存档中删除部署计划。
- 启动 Community Edition 管理控制台,并使用缺省用户名和密码登录。
- 在 Applications 下面,选择 Plan Creator,如图 8 所示:
图 8. 管理控制台中的 Plan Creator Portlet
- 在下一个屏幕中,单击 Browse 并选择 jsp-examples-war-2.1.0.0.war。单击 Configure,如图 9 所示:
图 9. 选择用于创建部署计划的 Web 存档
- 下一个屏幕为我们的环境提供了 Web 应用程序标识和类路径配置建议。您可以将 WebContextRoot 设置为 PlanCreatorTest,并将其余的值保留为缺省值,如图 10 所示。单击 Next。
图 10. 配置 Web 应用程序标识和类路径
- 下一个屏幕显示了用于安全领域和角色映射的配置。为 role1 字段选择 Principal 。Name 和 Class 字段随即出现。将其命名为 TestUser,并为 Class 选择 User Principal ,如图 11 所示。单击 Add。
图 11. 选择类
您现在应该看到已添加到部署计划的 Principal、Name 和 Class,如图 12 所示:
图 12. 配置 role1 的角色映射
- 接下来为 tomcat 字段选择 Principal。将其命名为 TestGroup,并为 Class 字段选择 Group Principal。选择 Add,如图 13 所示。
图 13. 配置 tomcat 的角色映射
您现在应该看到已添加到部署计划的 Principal、Name 和 Class。选择 Next。
- 下一个屏幕提供了要为应用程序选择的依赖项建议。我们的应用程序没有任何依赖项,因此我们将保留缺省选择。您可以选择诸如 ejb、数据库池、jms 资源等依赖项,但它们不是必需的。选择 Next。
- 下一个屏幕显示了所生成的部署计划,如清单 2 所示:
清单 2. 生成的部署计划
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1"> <dep:environment xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2"> <dep:moduleId> <dep:groupId>default</dep:groupId> <dep:artifactId>jsp-examples-war-2.1.0.0</dep:artifactId> <dep:version>1.0</dep:version> <dep:type>war</dep:type> </dep:moduleId> </dep:environment> <context-root>PlanCreatorTest</context-root> <security-realm-name>geronimo-admin</security-realm-name> <app:security xsi:type="sec:securityType" xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0" xmlns:app="http://geronimo.apache.org/xml/ns/j2ee/application-2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <sec:role-mappings> <sec:role role-name="role1"> <sec:principal name="TestUser " class= "org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal"/> </sec:role> <sec:role role-name="tomcat"> <sec:principal name="TestGroup " class= "org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal"/> </sec:role> </sec:role-mappings> </app:security> </web-app> |
- 选择 Deploy WAR,如图 14 所示:
图 14. 使用部署计划部署 WAR
- 您应该看到一条消息,表明我们的 Web 应用程序已成功部署。选择 Launch Web App 以启动该 Web 应用程序,如图 15 所示:
图 15. 启动 Web 应用程序
- 从图 16 中可以看到,该应用程序使用上下文根 PlanCreatorTest 启动。然而,原始部署计划(与 Web 应用程序打包在一起的部署计划)的上下文根为 jsp-examples。
图 16. 使用上下文根 PlanCreatorTest 来启动的应用程序
GShell
GShell 是一个用于构建丰富的命令行应用程序的框架。GShell 是用于执行大多数 Community Edition 命令的命令行处理环境。表 2 显示了各种 GShell 命令:
表 2. Gshell 命令 | |
命令 | 描述 |
---|---|
help 或 ? | 显示帮助信息 |
echo 或 print | 将参数打印到 STDOUT |
source 或 . | 将文件或 URL 加载到当前 Shell |
clear | 清除终端屏幕 |
set | 设置变量 |
unset | 取消设置变量 |
exit 或 quit | 退出 GShell |
geronimo/start-server | 启动服务器 |
geronimo/stop-server | 停止服务器 |
geronimo/wait-for-server | 等待服务器启动 |
geronimo/start-client | 启动应用程序客户端 |
deploy/connect | 连接到 WASCE 服务器 |
deploy/disconnect | 从 WASCE 服务器断开连接 |
deploy/deploy | 部署模块 |
deploy/redeploy | 重新部署模块 |
deploy/undeploy | 取消部署模块 |
deploy/distribute | 分发某个模块 |
deploy/start | 启动某个模块 |
deploy/restart | 重新启动某个模块 |
deploy/stop | 停止某个模块 |
deploy/list-modules | 列出模块 |
deploy/list-targets | 列出目标 |
deploy/list-plugins | 将插件安装到服务器中 |
deploy/install-library | 安装库 |
deploy/install-plugin | 安装插件 |
deploy/assemble | 从当前 WASCE 服务器提取 WASCE 服务器 |
下面看一下使用 Gshell 的示例。Community Edition 在 <WASCE_HOME>/bin 中提供了一个用于启动 Gshell 的批处理文件 gsh.bat。通过从命令提示符运行 gsh.bat 来启动 Gshell,如图 17 所示:
图 17. 启动 GShell
要使用 Gshell 启动服务器,可以输入命令 geronimo/start-server,如图 18 所示:
图 18. 使用 Gshell 启动服务器
要列出服务器上部署的模块,可以输入命令 deploy/list-modules。输入缺省用户名和密码,如图 19 所示:
图 19. 列出服务器上部署的模块
专家模式
在 Community Edition 管理控制台中,在 Applications 下面,各个 Portlet(WebAppWAR、系统模块、应用程序 EAR、EJB JAR、J2EE 连接器、应用程序客户端)显示了各个模块(分别为 Web 应用程序模块、系统模块、企业应用程序模块、EJB 模块、连接器模块、应用程序客户端)。通过这些 Portlet,您可以启动、停止、重新启动和卸载各个模块。缺省控制台将各个模块的这些操作显示为灰色。
专家模式允许高级用户对 Community Edition 服务器上运行的进程拥有更多的控制。缺省情况下,您不能修改关键进程。然而,专家模式选项允许对这些进程拥有完全控制,并且嵌入在前面提到的所有 Portlet 中。下面的示例说明了如何使用 Community Edition 中的专家模式。
- 启动管理控制台并使用缺省用户名和密码登录。
- 在 Applications 下面,选择 WebAppWARs。正如从图 20 中可以看到的,各个模块的停止、重新启动和卸载命令是灰色的。
图 20. WebAppWARs Portlet 的缺省显示画面
- 选中 Installed Web Applications 屏幕左上角的 Expert User 复选框。您将看到先前灰色的命令已经启用,如图 21 所示。现在您可以拥有对服务器上安装的所有模块的完全控制。
图 21. 启用 Expert User 以后的 WebAppWARs Portlet
监视控制台插件
服务器的运行状况可能非常关键;预测服务器崩溃对于任何运行的应用程序来说都至关重要。一般情况下,这样的服务器崩溃最终会导致大量的故障排除和大量关键数据的丢失。为了避免这样的灾难情形,您需要连续地监视服务器运行状况,并重新配置服务器以使其运行在最佳的水平。这种监视反过来又会提高生产环境的工作效率。为了解决此问题,Community Edition V2.1 管理控制台集成了一个新的 Monitoring 插件,此插件连续地监视各种统计信息,例如:
- 事务管理器
- JVM
- AJP/Web/WebSSL 连接器
- 线程池
- Web 应用程序
然而,您应该仅监视所需的组件,而不是监视所有的一切。沿用已久的经验规则是——所监视的组件越多,对服务器性能的影响越大。
Community Edition 的缺省安装预先部署了 Monitoring 插件。这个 Portlet 具有三个窗格:View、Servers 和 Graphs。下面让我们在一个示例的上下文中依次讨论其中每个窗格:
- 启动管理控制台,并使用缺省用户名和密码登录。
- 在控制台导航区域中,在 Server 下面选择 Monitoring 以启动该 Portlet。您将看到 View、Servers 和 Graphs 窗格。在右侧,您可以看到 +Create View、+Add Server、+Add Graph,如图 22 所示。您可以使用这些图标来分别添加新的视图、服务器和图表。
图 22. Monitoring Portlet 的缺省视图
Servers
在能够开始使用 Monitoring 插件之前,我们需要添加服务器。使用此窗格,您可以添加多个 Community Edition 实例,从而允许对多个计算机进行集中监视。下面的步骤说明了如何使用 Monitoring 插件添加服务器:
- 单击 Add a Server,如图 23 所示:
图 23. 在 Monitoring Portlet 中添加服务器
- 在下一个屏幕上,填充如图 24 所示的各个字段,然后单击 Add。
- Name: MyServer
- IP/Hostname: localhost
- Protocol: EJB
- Port: 4201
- Username: system
- Password: manager
图 24. 在 Monitoring Portlet 中配置服务器
- 服务器将被重定向到 Monitoring Portlet 的缺省视图,您将看到一条消息,报告该服务器已成功添加,如图 25 所示。此外,Servers 窗格还有一个名为 MyServer 的新条目。当前该查询的状态为 stopped。单击 +Enable Query 以开始数据的快照收集。
图 25. 启用数据的快照收集
- 现在您应该看到该查询的状态为 Online,在此状态下将每隔 5 分钟收集一次快照。您可以通过单击 Actions 下面的 Edit 来修改此间隔。
- 在此屏幕上,将 Snapshot Duration 更改为 1 分钟,然后单击 Save。您应该看到一条消息显示“Server has been updated”(服务器已更新)。选择 Monitoring 以返回到该 Portlet 的缺省视图。
图 26. 编辑现有的服务器配置
- 在 Server 窗格中,选择 MyServer 以显示由该服务器监视的各种统计信息。图 27 显示了那些统计信息:
图 27. 由我们的 MyServer 配置所监视的各种统计信息
下面让我们进一步了解一下该页面上的各个字段和功能:
- My Server 显示当前配置的状态、添加的时间戳、修改的时间戳、IP 主机名称,以及快照持续时间。
- Live Statistics 显示当前被监视的各个组件(例如 JVM、Tomcat AJP 连接器、Tomcat Web 连接器、Tomcat Web SSL 连接器、activemq-console-tomcat)。您还可以看到两个受监视的 Web 应用程序:SimpleJSF 和 jsp-examples-war-2.1.0.0。这其中每个应用程序与各个字段相关联。
- 在右侧,您可以看到 Statistics Collected,其中显示了当前为那些组件收集的统计信息。在每个字段旁边,您可以看到一个 ×,可以使用此图标来停止对某个组件的监视。
- Statistics Available 窗格显示了可用于包括在当前监视配置中的各个组件。选择 + 可以将组件添加到 Statistics Collected 面板,从而导致服务器开始监视新添加的组件。
- Actions panel 提供了用于配置当前服务器监视配置的各种选项。
- 在同一个屏幕上,可以尝试选择 Live Statistics 下面的某个链接。让我们选择 TomcatAJPConnector 下面的 Busy Threads Max 链接,如图 28 所示。
图 28. 选择 TomcatAJPConnector 下面的 Busy Thread Max
- 此链接启动一个用于为所选属性添加图表的 Portlet,如图 29 所示。这是一种更容易的图表创建方法,因为一些字段已经缺省地填充好了。不过,我们将在下一个部分中了解如何从头创建图表。
图 29. 通过 MyServer 配置添加图表
Graph
您可以使用此窗格创建自定义的图表。它还允许您对两个统计数据执行诸如加、减、乘、除等数学运算。下面让我们为当前的 MyServer 配置添加一个图表。
- 从 Monitoring Portlet 中,选择 +Add Graph,如图 30 所示:
图 30. 添加图表
- 在下一个屏幕上,填充以下值,如图 31 所示。然后单击 Add。
- Server: MyServer-localhost
- Name: TomcatAJP_BusyThread
- Description: This is to monitor the Busy thread Max for Tomcat AJP Connector
- X Axis label: Busy Threads
- Y Axis label: Time
- Timeframe: 5
- Mbean: TomcatAJPConnector
- Data series: As-is; Busy Threads Max
- Math operation: none
图 31. 填充用于添加图表的表单
- 您将返回到 Monitoring Portlet 的缺省视图,并有一条消息报告该图表已成功添加。选择所添加的图表以显示该图表,如图 32 所示:
图 32. 显示图表
View
由于有许多不同的图表,Community Edition 使用“视图”的概念将相关图表打包在一起,以实现更加可管理的使用。例如,您可以将与特定服务器相关的所有图表或显示服务器吞吐量的所有图表打包在一起。下面让我们逐步了解如何创建视图:
- 在 Monitoring Portlet 中,选择 +Create View。
- 在下一个屏幕上,提供新视图的名称和描述。您还会看到一个 Graphs 字段,其中显示了可用于当前配置的图表列表。到目前为止,我们仅添加了一个图表,因此没有多少图表可供选择。选中复选框并保存配置,如图 33 所示:
图 33. 配置视图
- 您将返回到 Monitoring Portlet 的缺省视图。选择 MyView 以查看当前配置,其中显示了您添加的图表。
图 34. 显示 MyView 配置
WADI 集群
应用程序服务器集群是这样一组服务器,它们像单个服务器一样透明地提供企业服务,例如 Servlet 和 JavaServer Pages (JSP) 支持。这些服务器通常在单独的系统上运行,它们交换消息以同步数据,从而使得任何单独的节点可以处理针对分布式应用程序的请求,以及在其节点发生故障的时候接管用户的会话。将多个服务器配置为集群通常称为集群。
目前,Community Edition 使用来自 Apache Tomcat 或 WADI(Web 应用程序分布式基础结构)的会话复制支持来实现集群。
Tomcat 集群具有某些限制。
- 它们不复制有状态的会话 Enterprise JavaBean (EJB)。您需要在分布式应用程序中避免有状态的会话 EJB。
- 它们不会将动态更新复制到 Java Naming and Directory Interface (JNDI)。您需要在集群的每个节点中配置您的分布式应用程序使用的所有 JNDI 名称。
- 它们不会将可分布的 Web 应用程序复制到集群中的其他节点。您需要将可分布的 Web 应用程序部署到每一个节点。
Community Edition V2.1 通过以下方式改进了 Tomcat 集群:
- 您现在可以将 WADI 与 Community Edition 的 Tomcat 配置一起使用,以支持在多个 Community Edition 服务器之间复制 HTTP 会话状态。
- 您现在可以将应用程序部署到以管理方式定义的 Community Edition 服务器组,从而使得跨许多 Community Edition 服务器管理单个应用程序变得更加容易。
对于使用 Tomcat Web 容器的配置,您现在可以使用 WADI 来支持 Web 应用程序的集群。要集群这些组件,它们的部署描述符需要使用特定的 XML 元素进行扩充。这些元素定义各种集群参数,用于控制如何在应用程序部署时连接和设置基础 WADI 的组件。
WADI 还提供了机群 的概念:
- 机群——提供集群范围的 Web 应用程序热部署。在服务器机群中,您通过将应用程序的 WAR 文件仅复制到集群中的一个节点来部署 Web 应用程序。机群负责处理跨整个集群的 Web 应用程序部署。类似地,从单个集群节点删除 WAR 文件将从集群中的所有节点删除该 Web 应用程序。您可以通过单个逻辑部署步骤将某个配置部署到 Community Edition 服务器集群。一旦部署到集群,然后就可以透明地启动、停止或从所有集群成员删除该配置。
- 机群部署——将某个应用程序部署到已配置的集群成员。
有关更多信息,请参阅关于集群的 Community Edition 文档。
Community Edition Eclipse 插件
Community Edition Eclipse 插件(以下称为 WEP)v2.1 在其建模框架中经历了重大的体系结构更改,从 Eclipse Modelling Framework (EMF) 到 Java Architecture on XML Binding (JAXB)。这样做是为了支持 WEP 的部署计划编辑器中的一些重大改进。因此将来的版本中预期将会推出某些智能编辑器!
此外,WEP v2.1 经过了大量的精简——WEP 内存占用空间从早期版本中的 13 MB 减少到了现在的 5 MB。此外,WEP 包含许多错误修复程序,使得使用 WEP 的体验更加顺利。
其他增强功能
- 管理控制台现在是基于组件的,以镜像服务器功能。当您创建自定义服务器组装时,只有所选功能或模块使用的对应 Portlet 才会被整合进来。
- Community Edition V2.1 现在包括对 IBM DB2 8.2、9.1 和 9.5 JDBC 驱动程序的支持,以及 Oracle Real Application Cluster (RAC) 支持。
- Community Edition V2.1 现在与 Red Hat Fedora 9、Ubuntu 8.04 Long Term Support(LTS) 兼容,并且建议使用 AIX Version 6 Update 1 操作系统。Java 支持包括对 IBM Java 32 位/64 位 SE 5 SR6b 的建议,并兼容 Sun Java 32 位 SE 5 Update 15 或更高版本。
- 添加了新的示例,包括:
- Bank——演示 EJB 3.0 会话 Bean、JPA 和 OpenEJB 客户端技术。
- jms-mdb-sample——演示 EJB 3.0 中的消息驱动 Bean。
- sendmail——演示 Community Edition 中的邮件会话。
- Community Edition 控制台已重新设计了新的外观。对管理控制台应用了若干增强功能,以改进用户体验。增强功能包括重命名控制台导航区域左侧窗格中的各个链接以提高可用性,例如在 Server 下面,JVM Portlet 已重命名为 Java System Info,Common Libs 已重命名为 Repository。
- Community Edition V2.1 中的各个组件模块已经过更新。有关模块的更新列表,请参见表 1。
- Community Edition V2.1 中的 config.xml 现在包括 Tomcat Web 的所有可用属性,以及 AJP 和 SSL 属性。
- 新的 gbean TomcatClusteringBuilder 帮助提供集群支持。Config-substitution.properties 也经过了修改,以包括诸如 MaxThreadPoolSize、ResourceBindingsQuery、clusterName、ResourceBindingsFormat 和 TmId 等各种新的配置参数。
结束语
正如老话所说的:——“只有探索了所有的可能性之后才会真正变得成熟”。此版本中探索的新选项使得 Community Edition 距离成熟更近了一步。Community Edition 团队进行的三年严格的开发、测试和反馈收集在此版本中得到了回报,并且持续的开发将提供持续的改进。正如我们已经看到的,使用此版本,用户可以使用 GShell 执行所有的 Geronimo 命令,在自己的服务器集的基础上创建多个服务器组装,以及通过专家模式和 Monitoring Portlet 完全控制服务器。Community Edition V2.1 中集成的许多其他功能使得配置、开发、部署和运行应用程序更加容易。我们只是略微谈到了该版本的突出功能。请通过访问参考资料部分列出的站点来详细探索新功能;本文仅只是个开始。 (责任编辑:A6)