使用Eclipse開發J2EE應用

----集成Eclipse, Lomboz和JBoss

姜巍巍 ([email protected])
聯想集團軟件設計中心的開發工程師
2003 年 6 月

Eclipse是一個非常優秀的集成開發環境,這個在IBM支持下的開放源碼項目經過一段時期的發展完善,已經爲廣大Java開發者所熟悉。Eclipse的出現,爲Java開發者提供了免費使用強大的Java IDE的機會,通過集成大量的plugin,Eclipse的功能可以不斷擴展,以支持各種不同的應用。

Lomboz是一個免費的Eclipse plugin,它將很多Java應用服務器、J2EE組件和Web應用開發集成到Eclipse中,可以幫助Java開發者使用Eclipse建立、測試、部署J2EE應用。

JBoss是一個開放源碼、功能強大的Java應用服務器,也是目前最受Java開發者歡迎的Java應用服務器,被Java World的編輯們評爲2002年的最佳應用服務器。2003年到目前爲止的下載量已經超過了一百五十萬次。

一、下載、安裝和配置

1. Eclipse的下載和安裝

首先需要安裝JDK,可以到Sun的網站上去下載最新版本並安裝。

然後到www.eclipse.org去下載Eclipse的最新版本,目前的最新版本是2.1。下載以後解壓到自己想要的目錄中,比如D:/Eclipse,直接運行eclipse.exe,第一次運行的時候會自動尋找JDK並完成相應的配置,然後就進入了Eclipse的主界面。關於Eclipse的基本使用方法,developerWorks,Eclipse的網站以及Eclipse的隨機文檔上都有詳細地介紹,這裏不詳細描述了。

2. Jboss的下載、安裝

JBoss目前的最新版本是3.2.1,不過我覺得這個版本有一些問題,啓動服務器的時候會有一些jar包找不到,導致WARN和ERROR的發生。所以我推薦下載3.0.7,也可以下載集成了Tomcat 4.1.24的JBoss 3.0.7版本。

下載後解壓,我們假設JBOSS_HOME爲JBoss的主目錄,執行JBOSS_HOME/bin/run.bat,就啓動了JBoss服務器。一般會在1分鐘左右啓動完畢。

3. Lomboz的下載、安裝和配置

Lomboz目前的最新版本是2.1,我們假設Eclipse的主目錄爲ECLIPSE_HOME,下載以後將其解壓到ECLIPSE_HOME/plugins文件夾下面,這樣在這個文件夾下面就多了一個com.objectlearn.jdt.j2ee文件夾。

然後啓動Eclipse, 會自動出現Customize Perspective的對話框,如果沒有出現的話,也可以通過菜單"Window->Customize Perspective"來顯示這個對話框,如下圖所示:


展開File->New,選擇所有與Lomboz相關的選項;

展開Window->Show View,選擇Lomboz J2EE View;

展開Other,選擇Lomboz Actions。

確認OK。

下面要進行Lomboz的配置:

首先,打開屬性對話框,確保Java->New Project中的設置:


接着在Lomboz屬性中,確保如下設置:


最後,設置服務器屬性。

Lomboz預先定義了一些常用的Java服務器的設置,這些配置文件放在ECLIPSE_HOME/plugins/com.objectlearn.jdt.j2ee/servers 文件夾下面,你可以用文本編輯器手工修改(除非你所用的服務器不在Lomboz默認的服務器中,否則我不推薦你這麼做),也可以在Eclipse的屬性對話框中設置,設置的過程非常簡單,如下圖所示:


記得每次修改以後,都要點擊Apply。

上圖是Properties標籤下的設置,Classpath標籤下一般不需要做任何改動(注意:如果你沒有聽我文章開始部分的勸告,使用了JBoss3.2.0以上的版本,可能需要手工加入多了個jar包,這是體力活,有些麻煩。我不知道這是不是JBoss的問題,具體操作我在下面會提一下)。

通過以上三個步驟,就完成了Lomboz對J2EE開發的支持和JBoss的配置。你可以進入文章的第二部分"使用Eclipse開發Web應用"了。

注意事項:

a.如果服務器不在默認服務器之列;

在ECLIPSE_HOME/plugins/com.objectlearn.jdt.j2ee/servers 文件夾下新建一個後綴名爲server的文件,然後根據已有的server文件爲模版,用文本編輯器編輯server文件。建立了一個新的server文件以後,也可以在Lomboz的屬性頁中進行相應的設置。

b. 如果使用了JBoss3.2.0版本。

打開Window>Preferences>Lomboz>ServerDefinitions,選擇你的服務器,然後選擇classpath標籤,將如下的jar包加入到server library中:

JBOSS_HOME/lib/concurrent.jar 
JBOSS_HOME /lib/boss-system.jar
JBOSS_HOME /server/default/lib/jboss.jar 
JBOSS_HOME /server/default/lib/jpl-pattern.jar 
JBOSS_HOME /server/default/lib/jpl-util.jar 
JBOSS_HOME /server/default/lib/jnpserver.jar 
JBOSS_HOME /server/default/lib/jboss-transaction.jar

我的JBoss320.server文件中的全部內容在本文的最後部分呈現。

二、使用Eclipse開發Web應用

首先,打開File->New->Lomboz J2EE Project,創建一個名爲TestJ2EE的J2EE Project。

點擊Next,默認各種設置,點擊Next,進入下一個對話框,在Targeted Server中加入已經配置好的服務器,如下圖:


在Web Modules和EJB Modules中分別新建Web模塊和EJB模塊,在本例中,我們分別命名爲MyWeb和MyEJB,然後點擊Finish。這樣,一個J2EE項目的框架就自動生成了。

在MyWeb模塊下面,自動生成了兩個jsp文件:index.jsp和error.jsp,以及WEB-INF文件下面的配置文件。我們可以在此基礎上面添加自己的jsp文件和servlet,然後build project。

在Eclipse的工具欄上點擊Lomboz J2EE project outliner的按鈕:


這樣,在Eclipse上就出現了Lomboz J2EE View,如下圖所示:


由於我事先已經部署了另一個Web服務器:Tomcat,所以在MyWeb這個模塊上面出現了它所綁定的這兩個服務器,JBoss 3.0 All 旁邊的紅色標記表示它是默認的服務器。可以通過右擊Web模塊選擇更改默認的服務器,如下圖:


選擇好服務器以後,在Lomboz J2EE View中右鍵單擊服務器,選擇運行服務器,等服務器啓動好以後,右鍵單擊Web模塊,選擇Deploy Module,這樣就完成了Web模塊在服務器上的部署。打開IE瀏覽器,鍵入http://127.0.0.1:8080/MyWeb,就可以看到自己開發的Web應用了。

這裏有一點需要說明,如果採用Tomcat作爲Web服務器的話,如果Web模塊需要重新部署,則須重新啓動Tomcat服務器,JBoss則不需要這麼做。

注意事項:

如果從Eclipse中啓動JBoss服務器的時候,遇到了這個問題:


Error occurred during initialization of VM 
java/lang/NoClassDefFoundError: java/lang/Object

一般遇到這個問題,可能是由於JRE沒有設置好,請在Eclipse中的Preference對話框中,展開Java->Installed JREs,查看JRE是否設置好了;然後打開所開發的項目屬性對話框,查看Java Build Path的library中是否有JRE System Library,沒有的話,點擊Add Library,添加JRE System Library。


三、使用Eclipse開發EJB

在第二部分"使用Eclipse開發Web應用"中,我們已經在TestJ2EE這個J2EE項目中添加了一個名爲MyEJB的EJB模塊。下面我們通過Lomboz EJB Creation Wizard向MyEJB模塊中添加一個Session Bean。

點擊File->New->Lomboz EJB Creation Wizard,或者右擊MyEJB模塊,選擇New->Lomboz EJB Creation Wizard,顯示出如下對話框:


在com.dino.testj2ee.myejb這個包下面創建一個名爲MyEJB的Stateless Session Bean。完成以後,在TestJ2EE項目的src文件夾下面,出現了一個名爲MyEJBBean.java的文件,右擊這個文件,選擇New->Lomboz EJB Method Wizard,可以給這個EJB添加各種方法。我添加了一個helloWorld方法,返回一個String類型。如下圖所示:


然後,需要把MyEJB這個Session Bean添加到MyEJB這個模塊上面:右擊MyEJB.java,選擇Lomboz J2EE…->Add EJB to Module,選擇MyEJB,OK。

右擊MyEJB模塊,選擇LombozJ2EE…->Generate EJB Classes,這樣就在ejbsrc目錄下面自動生成了下面幾個文件:

MyEJBHome.java
MyEJBRome.java
MyEJBLocalHome.java
MyEJBLocal.java
MyEJBSession.java (MyEJBSession extends MyEJBBean)
MyEJBUtil.java

Build project以後,自動將模塊打包完畢。接着就可以按照部署Web模塊的步驟來部署EJB模塊了。

最後,我們建立一個應用程序來測試EJB。

通過File->New->Lomboz EJB Test Client Wizard打開一個對話框,按下圖填寫:


完成以後,在src目錄下面生成了TestMyEJB.java,在其中的testBean方法中加入測試代碼:


System.out.println(myBean.helloWorld());

如果目前JBoss服務器已經啓動,而且MyEJB模塊已經部署的話,執行TestMyEJB,就會在Console窗口上顯示出:


hehe, I can deploy EJB by Eclipse!

四、總結

通過以上的介紹,我們瞭解到,Lomboz使Eclipse開發J2EE應用變得非常簡便,而且Eclipse, Lomboz, JBoss這些工具都是免費和開放源碼的項目,所以這樣的組合對Java開發者來說更有吸引力。

對於開發複雜的J2EE應用來說,上面的介紹可能還不夠全面,希望大家在做項目的過程中體會,再將總結出來的經驗放到developerWorks上來分享。

參考資料:

  • www.eclipse.org Eclipse的官方網站;
  • www.jboss.org JBoss的官方網站;
  • www.objectlearn.com Lomboz的網站,上面有關於Lomboz的教程。
  • Eclipse in Action: A Guide for Web Developers, by David Gallardo, Ed Burnette and Robert McGovern, Manning Publications. 一本介紹使用Eclipse開發的好書。
  • JBoss 3.0: Quick Start Guide, by JBoss Group. 一本關於JBoss入門的好書。

關於作者

姜巍巍,是聯想集團軟件設計中心的開發工程師,熱衷於J2EE和Web服務技術。閒暇時,喜歡閱讀計算機書籍,並頻繁光顧各個Java論壇;週末的晚上,一般會乖乖的在電視機前面觀看意甲直播。地址:北京市上地信息產業基地開拓路7號先鋒大廈 郵編:100085 。您可以通過E-mail: [email protected] 與他取得聯繫。

附錄:JBoss320.server


<serverDefinition name="JBOSS 3.2" 
	ejbModules="true" webModules="true" earModules="true"> 
<property id="serverRootDirectory" label="Application Server Directory:" 
	type="directory" default="D:/jboss-3.2.0" /> 
<property id="serverAddress" label="Address:" 
	type="string" default="127.0.0.1" /> 
<property id="serverPort" label="Port:" 
	type="string" default="8080" /> 
<property id="classPathVariableName" label="Classpath Variable Name:" 
	type="string" default="JBOSS32" /> 
<property id="classPath" label="Classpath Variable:" 
	type="directory" default="D:/jboss-3.2.0" /> 
	
<serverHome>${serverRootDirectory}</serverHome> 
<webModulesDeployDirectory>${serverRootDirectory}/server/all/deploy</webModulesDeployDirectory> 
<ejbModulesDeployDirectory>${serverRootDirectory}/server/all/deploy</ejbModulesDeployDirectory> 
<earModulesDeployDirectory>${serverRootDirectory}/server/all/deploy</earModulesDeployDirectory> 
<jndiInitialContextFactory>org.jnp.interfaces.NamingContextFactory</jndiInitialContextFactory> 
<jndiProviderUrl>jnp://${serverAddress}:1099</jndiProviderUrl> 
<startClass>org.jboss.Main</startClass> 
<startWorkingDirectory>${serverRootDirectory}/bin</startWorkingDirectory> 
<startVmParameters></startVmParameters> 
<startProgramArguments>-c all</startProgramArguments> 
<stopClass>org.jboss.Shutdown</stopClass> 
<stopWorkingDirectory>${serverRootDirectory}/bin</stopWorkingDirectory> 
<stopVmParameters></stopVmParameters> 
<stopProgramArguments>${serverAddress} ${serverPort}</stopProgramArguments> 
<serverClassPath> 
<jar type="variable">JDK_TOOLS</jar> 
<jar type="variable">${classPathVariableName}/bin/run.jar</jar> 
<jar type="variable">${classPathVariableName}/bin/shutdown.jar</jar> 
<jar type="variable">${classPathVariableName}/client/jboss-j2ee.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/javax.servlet.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/commons-httpclient.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/concurrent.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/getopt.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/jboss-boot.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/jboss-common.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/jboss-jmx.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/jboss-system.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/jdom.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/log4j-boot.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/webdavlib.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/xercesImpl.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/xml-apis.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jnet.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/gnu-regexp.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jboss.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jnpserver.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jpl-util.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jpl-pattern.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jsse.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jbossha.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jboss-jaas.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jts.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jboss-transaction.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/javagroups-2.0.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jmxri.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jmxtools.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jbossmx.jar</jar> 
</serverClassPath> 
<clientClassPath> 
<jar type="variable">${classPathVariableName}/client/jboss-j2ee.jar</jar> 
<jar type="variable">${classPathVariableName}/client/jnp-client.jar</jar> 
<jar type="variable">${classPathVariableName}/client/jboss-client.jar</jar> 
<jar type="variable">${classPathVariableName}/client/jboss-common-client.jar</jar> 
<jar type="variable">${classPathVariableName}/client/jbosssx-client.jar</jar> 
<jar type="variable">${classPathVariableName}/client/log4j.jar</jar> 
<jar type="variable">${classPathVariableName}/client/jnet.jar</jar> 
<jar type="variable">${classPathVariableName}/client/jaas.jar</jar> 
</clientClassPath> 
</serverDefinition>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章