探索 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 包括以下新功能集:
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。按照以下步驟操作以創建自定義伺服器組裝:
我們現在已確定了該自定義伺服器需要的依賴項。下一步我們將在所有這些依賴項的基礎上組裝一個自定義伺服器:
請注意,我們組裝的伺服器是一個最基本的伺服器;您將不能獲得管理控制台的圖形用戶界面。
為了便於參考,您可能希望在自己的自定義伺服器中包括以下插件:
正如您可以從我們的示例中判斷出的那樣,該自定義伺服器具有非常強大的功能,可進一步利用模塊化、可擴展的 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 的一些突出功能包括:
我們將使用 Community Edition 示例 中可用的 jsp-examples-war 應用程序來說明這一點。
目前我們擁有如清單 1 所示的部署計劃:
<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> |
您現在應該看到已添加到部署計劃的 Principal、Name 和 Class,如圖 12 所示:
您現在應該看到已添加到部署計劃的 Principal、Name 和 Class。選擇 Next。
<?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> |
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 所示:
要使用 Gshell 啟動伺服器,可以輸入命令 geronimo/start-server,如圖 18 所示:
要列出伺服器上部署的模塊,可以輸入命令 deploy/list-modules。輸入預設用戶名和密碼,如圖 19 所示:
專家模式
在 Community Edition 管理控制台中,在 Applications 下面,各個 Portlet(WebAppWAR、系統模塊、應用程序 EAR、EJB JAR、J2EE 連接器、應用程序客戶端)顯示了各個模塊(分別為 Web 應用程序模塊、系統模塊、企業應用程序模塊、EJB 模塊、連接器模塊、應用程序客戶端)。通過這些 Portlet,您可以啟動、停止、重新啟動和卸載各個模塊。預設控制台將各個模塊的這些操作顯示為灰色。
專家模式允許高級用戶對 Community Edition 伺服器上運行的進程擁有更多的控制。預設情況下,您不能修改關鍵進程。然而,專家模式選項允許對這些進程擁有完全控制,並且嵌入在前面提到的所有 Portlet 中。下面的示例說明了如何使用 Community Edition 中的專家模式。
監視控制台插件
伺服器的運行狀況可能非常關鍵;預測伺服器崩潰對於任何運行的應用程序來說都至關重要。一般情況下,這樣的伺服器崩潰最終會導致大量的故障排除和大量關鍵數據的丟失。為了避免這樣的災難情形,您需要連續地監視伺服器運行狀況,並重新配置伺服器以使其運行在最佳的水平。這種監視反過來又會提高生產環境的工作效率。為了解決此問題,Community Edition V2.1 管理控制台集成了一個新的 Monitoring 插件,此插件連續地監視各種統計信息,例如:
然而,您應該僅監視所需的組件,而不是監視所有的一切。沿用已久的經驗規則是——所監視的組件越多,對伺服器性能的影響越大。
Community Edition 的預設安裝預先部署了 Monitoring 插件。這個 Portlet 具有三個窗格:View、Servers 和 Graphs。下面讓我們在一個示例的上下文中依次討論其中每個窗格:
Servers
在能夠開始使用 Monitoring 插件之前,我們需要添加伺服器。使用此窗格,您可以添加多個 Community Edition 實例,從而允許對多個計算機進行集中監視。下面的步驟說明了如何使用 Monitoring 插件添加伺服器:
下面讓我們進一步了解一下該頁面上的各個欄位和功能:
Graph
您可以使用此窗格創建自定義的圖表。它還允許您對兩個統計數據執行諸如加、減、乘、除等數學運算。下面讓我們為當前的 MyServer 配置添加一個圖表。
View
由於有許多不同的圖表,Community Edition 使用“視圖”的概念將相關圖表打包在一起,以實現更加可管理的使用。例如,您可以將與特定伺服器相關的所有圖表或顯示伺服器吞吐量的所有圖表打包在一起。下面讓我們逐步了解如何創建視圖:
WADI 集群
應用程序伺服器集群是這樣一組伺服器,它們像單個伺服器一樣透明地提供企業服務,例如 Servlet 和 JavaServer Pages (JSP) 支持。這些伺服器通常在單獨的系統上運行,它們交換消息以同步數據,從而使得任何單獨的節點可以處理針對分散式應用程序的請求,以及在其節點發生故障的時候接管用戶的會話。將多個伺服器配置為集群通常稱為集群。
目前,Community Edition 使用來自 Apache Tomcat 或 WADI(Web 應用程序分散式基礎結構)的會話複製支持來實現集群。
Tomcat 集群具有某些限制。
Community Edition V2.1 通過以下方式改進了 Tomcat 集群:
對於使用 Tomcat Web 容器的配置,您現在可以使用 WADI 來支持 Web 應用程序的集群。要集群這些組件,它們的部署描述符需要使用特定的 XML 元素進行擴充。這些元素定義各種集群參數,用於控制如何在應用程序部署時連接和設置基礎 WADI 的組件。
WADI 還提供了機群 的概念:
有關更多信息,請參閱關於集群的 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 的體驗更加順利。
其他增強功能
結束語
正如老話所說的:——“只有探索了所有的可能性之後才會真正變得成熟”。此版本中探索的新選項使得 Community Edition 距離成熟更近了一步。Community Edition 團隊進行的三年嚴格的開發、測試和反饋收集在此版本中得到了回報,並且持續的開發將提供持續的改進。正如我們已經看到的,使用此版本,用戶可以使用 GShell 執行所有的 Geronimo 命令,在自己的伺服器集的基礎上創建多個伺服器組裝,以及通過專家模式和 Monitoring Portlet 完全控制伺服器。Community Edition V2.1 中集成的許多其他功能使得配置、開發、部署和運行應用程序更加容易。我們只是略微談到了該版本的突出功能。請通過訪問參考資料部分列出的站點來詳細探索新功能;本文僅只是個開始。 (責任編輯:A6)
[火星人 ] WebSphere Application Server Community Edition V2.1 中的新增功能已經有1024次圍觀