-
簡介
本文主要介紹如何使用BEA Workshop配置ZK(http://www.zkoss.org)開發環境。文中以現如今使用比較廣泛的開源Web服務器Tomcat與商業應用服務器BEA WebLogic Server為實驗服務器,結合BEA Workshop為開發工具介紹了ZK開發環境的配置過程以及相關的最佳實踐,幫助大家少走彎路,更好的使用ZK。
-
介質準備
- BEA WebLogic Server 10:BEA WebLogic Server 10中自帶了BEA Workshop for WebLogic Platform開發工具,因此,無需單獨下載BEA Workshop。
下載地址:http://commerce.bea.com/products/weblogicplatform/weblogic_prod_fam.jsp
- ZK 2.3:此版本是2007年3月20日發布的ZK最新版。
- Apache Tomcat 5.5.23
- BEA WebLogic Server 10:BEA WebLogic Server 10中自帶了BEA Workshop for WebLogic Platform開發工具,因此,無需單獨下載BEA Workshop。
- BEA Workshop配置服務器
由于ZK是一個基于AJAX技術的展現層開發框架,因此,理論上講ZK可以安裝部署在任何符合J2EE規范的Servlet 容器上。這里我分別選擇了在開源領域與商業領域最為流行的兩個J2EE 服務器:Tomcat(嚴格上講應該被稱作Web服務器)與WebLogic Server作為實驗對象。
由于BEA Workshop使用了Eclipse的WTP子項目,因此,服務器配置過程都是遵循WTP的方式,這里不再詳述。
詳情參閱:http://www.eclipse.org/webtools/main.php
- ZK與Tomcat
建立ZK應用最簡便的方式是以ZK Demo為起點,這樣省去了很多配置工作。下面我們看看如何在BEA Workshop中配置ZK應用。
第一步:導入WAR
第二步:選擇ZK Demo WAR包
第三步:拷貝ZK相關Jars文件
將%ZK_HOME%\dist\lib目錄下的所有jar文件(如果需要更多ZK附加功能,加入ext與zkforge目錄下的jar文件)到WebContent\WEB-INF\lib目錄下。
第三步:測試
啟動Tomcat服務器,打開瀏覽器輸入:http://localhost:8080/zkdemo/userguide/index.zul
分析:雖然我們已經成功的建立了一個ZK應用,但是我們也應注意,這個ZK應用的尺寸太過龐大,這是由于ZK框架包含了大量的jar文件,如果我們再新建一個ZK應用,我們不得不把ZK框架相關的jar文件再復制一份到應用的WEB-INF\lib目錄下。另一個問題是如果應用發生變動,整個Web應用需要重新部署時,由于過多的jar文件造成應用重部署速度緩慢。
解決辦法:我們可以將ZK框架相關的jar包復制到%TOMCAT%\common\lib下,這樣我們就無需在WEB-INF\lib下放入任何ZK框架相關的jar文件,也就是說所有的應用都可以訪問ZK框架相關的jar文件。
再分析:然而,問題還是存在,這次我們使用ZK,我們把ZK相關的jar文件放入%TOMCAT%\common\lib,那么,如果我們再使用Spring,也把Spring相關的jar文件放入相同的目錄,其結果就是%TOMCAT%\common\lib目錄下jar文件數量不斷增加,并且,各個jar文件版本難以控制;另外,ZK本身也需要大量的配置信息,這些配置信息一部保存在web.xml文件中,同時,WEB-INF/下還有很多配置文件,如:zk.xml、portlet.xml、lang-addon.xml、t3-label.properties等,當我們建立新的ZK應用時,不得不把這些配置信息與配置文件再次復制。這使得部署在Tomcat下的ZK應用難以管理與維護。如何解決這個問題呢?這就要發揮商業軟件的優勢了。
- ZK與BEA WebLogic Server
BEA WebLogic Server 9.0及以后的版本引入了一個非常重要的新特性—J2EE共享庫(J2EE Shared Libraries)。通過J2EE共享庫可以將一個J2EE模塊共享給其他企業應用(EAR包或EAR包的展開目錄)的J2EE模塊使用。也許你會覺得這個新特性聽起來很抽象,沒關系,我們結合一個實例來看看她的威力。
第一步:配置J2EE共享庫
導入zkdemo(此過程與3.1相同),將項目名改為zk2.3-web-lib,將ZK相關Jar文件復制到WebContent\WEB-INF\lib目錄下(此過程與3.1相同)
查看WebContent\META-INF的MANIFEST.MF文件,確認包含如下內容:
Specification-Version: 2.3.0
Implementation-Version: 2.3.0
第二步:導入WAR包
生成zk2.3-web-lib.war包
第三步:創建共享庫
在BEA Workshop “Window“菜單上選擇“Preferences”,然后在左邊導航樹上選擇“WebLogic->J2EE Libraries
點擊Add,選擇剛生成的zk2.3-web-lib.war
第五步:創建WAR項目
創建名為zktestWAR的WAR項目
第六步:添加共享庫
其實,這一步就是在weblogic.xml中寫入配置信息,打開weblogic.xml文件可以看到以下內容:
<?xml version="1.0" encoding="UTF-8"?> <wls:weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd"> <wls:context-root>zktestWAR</wls:context-root> <wls:library-ref> <wls:library-name>zk2.3-web-lib</wls:library-name> <wls:specification-version>2.3.0</wls:specification-version> <wls:implementation-version>2.3.0</wls:implementation-version> <wls:exact-match>true</wls:exact-match> </wls:library-ref> </wls:weblogic-web-app>
另外,我們也可以通過Merged Projects視圖查看項目信息
在Merged Projects視圖中,斜體字就是被引用的J2EE共享庫資源,正體字是新建項目中的資源,如果我們想覆蓋J2EE共享庫某個資源,可以右鍵點擊該資源,選擇Copy To Project,然后在項目中任意修改被復制的資源。
第七步:測試
雖然我們只是建立了一個空的zktestWAR應用,但是由于使用了J2EE共享庫特性,zkdemo中所有的配置信息(如:web.xml)、類庫信息(所有在WEB-INF\lib目錄下的jar文件)、標簽、頁面等都被共享使用。啟動WebLogic Server,部署zktestWAR應用,打開瀏覽器輸入:http://localhost:7001/zktestWAR/userguide/index.zul
分析:通過使用J2EE共享庫特性,應用的尺寸變小,其重新部署時間大大縮減。同時,我們可以根據自己的面要配置不同J2EE共享庫,如:Spring、Struts等,應用可以自主決定使用何種J2EE共享庫,無需關注細節。
- ZK與Tomcat
- BEA Workshop開發環境配置
由于ZK頁面使用的是基于XML的ZUL語言,因此,我們要想開發ZK時使用語法加亮,可以通過配置Eclipse來實現。
在BEA Workshop “Window“菜單上選擇“Preferences”,然后在左邊導航樹上選擇“General->Content Types
當我們打開.zul文件時,就可以看到語法加亮特性了,例如:
<?xml version="1.0" encoding="UTF-8"?> <window title="My First window" border="normal" width="200px"> Hello, World! </window>
如果你更喜歡象VB或是SWT Designer那樣的可視化開發環境,也沒有問題,我們可以使用eZing Builder(官方網站:http://ezingbuilder.sourceforge.net/cms/)。安裝eZingBuilder插件如下圖:
看看效果,是不是很炫!!
- 總結
BEA Workshop是一款強大的開發工具,可以用來開發包括ZK在內的各種應用。同時結合高質量的BEA WebLogic Server服務器引擎,大大加速了應用的開發與部署的速度,另外,通過使用BEA WebLogic Server的新特性(如:J2EE共享庫)提高了應用的可管理性與可維護性。