許多人聽過 J2EE,但真正理解其含義的有多少?簡單來說,J2EE 是一套企業級應用系統模型與規範,涵蓋 Java RMI、EJB、JMS、JSP 等技術。善用 J2EE 資源,我們能快速建構強大的企業應用,如電信計費系統、知識管理平台等。你可能以為這需要巨額投資?其實不然,利用網路上免費開源的元件組裝,即可白手起家打造可用系統(當然電腦錢得自己出)。
注意:版本號需嚴格對應,否則易發生相容性問題。
從 Sun 官網下載最新 JDK(如 jdk1.4),安裝至 D:\worktools\jdk1.4。右鍵「我的電腦」→「進階」→「環境變數」:
JAVA_HOME=D:\worktools\jdk1.4、CLASSPATH=%JAVA_HOME%\LIB;%JAVA_HOME%\TOOLS.JARPATH 追加 %JAVA_HOME%\bin(WinXP 即時生效,Win9x 需重開機)
下載 MySQL 3.23.35,建議安裝至 C:\MYSQL。安裝完成後執行 WINMYSQLADMIN.EXE,設定帳號密碼(預設 root/空密碼)即可使用。
下載 mysql-cc 0.9.4(免費),連線設定:用戶 root、密碼空白、Port 3306、Host localhost。建立資料庫 mytest,資料表 myejb(欄位 id、context 均為 varchar),插入測試資料:(1,'time'), (2,'blank'), (3,'talk')。
解壓 JBoss 3.2.3 至 D:\worktools\Jboss3.2.3。複製 \docs\examples\jca\mysql_ds.xml 至 \server\default\deploy,編輯重點欄位:
jndi-name → mytestDSconnection-url → jdbc:mysql://localhost:3306/mytestdriver-class → org.gjt.mm.mysql.Driveruser-name / password → 對應 MySQL 帳密存檔並重命名為 mytest-ds.xml。下載 mysql-connector-java-3.0.11-stable,提取 mysql-connector-java-3.0.11-stable-bin.jar 至 JBoss\server\default\lib 並改名 mySQL.jar。
解壓 Eclipse 2.1 與 Lomboz 2.1.3,將 Lomboz 產生的 com.objectlearn.jdt.j2ee、com.objectlearn.jdt.j2ee.editors 兩資料夾複製至 Eclipse \plugins 目錄。啟動 Eclipse:
JDK Tools.jar 指向 %JAVA_HOME%\lib\tools.jar,取消勾選 Restart Server After Deploy(JBoss 支援熱部署)File → New → Project → Lomboz J2EE Project,專案名 EJBTest。建立 EJB Module myEJB,Target Server 選 JBoss 3.2.x。
File → New → Lomboz EJB Creation Wizard:
Rip.ejb.cmpmytestmyejb(對應 MySQL 資料表)mytest-ds.xml(對應 JBoss 設定的 JNDI 名稱 java:/mytestDS)id、context,設 id 為 Primary Key打開生成的 mytestBean.java,在 ejbCreate() 加入兩個 String 參數 id、context,並呼叫 setId()、setContext()。
mytestBean.java → Lomboz J2EE → Add EJB to Module 勾選 myEJBmyEJB → Lomboz J2EE → Generate EJB Classes,生成 Home、Remote、PK 等 6 個類別在 myEJB/META-INF 下編輯 jbosscmp-jdbc.xml 關鍵段落:
<jbosscmp-jdbc>
<enterprise-beans>
<defaults>
<datasource>java:/mytestDS</datasource>
<datasource-mapping>mySQL</datasource-mapping>
<preferred-relation-mapping>foreign-key</preferred-relation-mapping>
</defaults>
</enterprise-beans>
</jbosscmp-jdbc>
右鍵 myEJB → Deploy Module → Debug Server 啟動 JBoss。
新增 Web Module myWeb,Target Server 同 JBoss 3.2.x。
<%@ page import="javax.ejb.*,javax.naming.*,Rip.ejb.cmp.*,java.util.*,java.rmi.RemoteException" %>
<html><head><title>Welcome - First EJB</title></head><body>
<center><%
InitialContext ctx = new InitialContext(System.getProperties());
mytestHome home = (mytestHome) ctx.lookup("mytestBean");
try {
mytest bean = home.create("18", "Hello, I am Rip"); // 新增資料
Collection col = home.findAll(); // 查詢所有
Iterator it = col.iterator();
while (it.hasNext()) {
mytest elem = (mytest) it.next();
out.println(elem.getId() + ":" + elem.getContext() + "<br>");
}
} catch (Exception e) { e.printStackTrace(); }
%></center></body></html>
右鍵 myWeb → Deploy Module。瀏覽器開啟 https://localhost:8080/myWeb/index.jsp 即可看到資料輸出。
核心 EJB 程式碼僅數十行,展現快速開發優勢。但 EJB 屬重量級架構,遠端呼叫耗資源;實務上可改用 Local Interface 或採用 Hibernate 等 O/R Mapping 框架輕量化。篇幅有限,未盡錯誤排解請來信 kknd0669@sina.com 討論。