Eclipse 作為 IBM 支持的開源 IDE,憑藉豐富的外掛生態系統成為 Java 開發者首選。結合 Lomboz (J2EE 開發外掛) 與 JBoss (開源應用程式伺服器),即可構建零成本、功能完整的 J2EE 開發、測試、部署一體化環境。本文詳細記錄從下載安裝到建立 Web/EJB 模組、部署測試的完整流程。
| 元件 | 建議版本 | 下載來源 |
|---|---|---|
| JDK | 最新版 | Sun 官網 |
| Eclipse | 2.1 | www.eclipse.org |
| JBoss | 3.0.7 (含 Tomcat 4.1.24) | JBoss 官網 |
| Lomboz | 2.1 | Lomboz 官網 |
注意: JBoss 3.2.x 版本啟動時有 JAR 缺失警告,建議使用穩定的 3.0.7 版。
安裝 JDK → 解壓 Eclipse 至目錄 (如 D:\Eclipse) → 執行 eclipse.exe,首次啟動自動偵測 JDK 完成配置。
解壓 JBoss,設定 JBOSS_HOME 環境變數。執行 %JBOSS_HOME%\bin\run.bat,約 1 分鐘完成啟動。
%ECLIPSE_HOME%\plugins,產生 com.objectlearn.jdt.j2ee 資料夾Window → Customize Perspective:
File → New 勾選所有 Lomboz 相關選項Window → Show View 勾選 Lomboz J2EE ViewOther 勾選 Lomboz ActionsWindow → Preferences → Lomboz):
plugins/com.objectlearn.jdt.j2ee/servers),可透過屬性頁圖形化設定 JBoss 參數 (Home 目錄、Port、Classpath 等),修改後記得按 Apply在 Window → Preferences → Lomboz → ServerDefinitions 選擇 JBoss,Classpath 標籤加入以下 JAR:
JBOSS_HOME\lib\concurrent.jar
JBOSS_HOME\lib\jboss-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
File → New → Lomboz J2EE Project,專案名 TestJ2EETargeted Server 加入已配置的 JBossMyWeb) 與 EJB Module (MyEJB)MyWeb 含 index.jsp、error.jsp、WEB-INF 設定檔Run Server 啟動 JBossDeploy Modulehttps://127.0.0.1:8080/MyWeb 驗證提示: Tomcat 重新部署需重啟伺服器,JBoss 支援熱部署無需重啟。
啟動 JBoss 出現 Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/Object:
Window → Preferences → Java → Installed JREs 確認 JRE 設定正確Java Build Path → Libraries 確認有 JRE System Library,否則 Add Library 加入MyEJB Module → New → Lomboz EJB Creation Wizardcom.dino.testj2ee.myejb,建立 MyEJB Stateless Session BeanMyEJBBean.java,右鍵 → New → Lomboz EJB Method Wizard 添加方法 (如 helloWorld() 回傳 String)Lomboz J2EE → Add EJB to Module 選擇 MyEJBLomboz J2EE → Generate EJB Classes 自動產生 Home、Remote、Local、Util 等介面類別同 Web 模組步驟:J2EE View 中右鍵 EJB Module → Deploy Module。
File → New → Lomboz EJB Test Client WizardTestMyEJB,在 testBean() 加入測試代碼:System.out.println(myBean.helloWorld());TestMyEJB,Console 應顯示測試輸出Eclipse + Lomboz + JBoss 組合提供完全免費、開源的 J2EE 開發棧,涵蓋編碼、除錯、部署、測試全流程。對複雜企業級應用,建議在專案實作中累積經驗並回饋社群。
<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>