前言
J2EE 規格龐大、技術棧豐富,開發「任務關鍵型」企業級應用面臨諸多抉擇:持久層用 JDBC、Entity Bean、JDO、Hibernate、iBATIS、TopLink?表現層用 JSP、Velocity、Freemarker、Struts、JSF、Spring MVC?本文結合 JBoss 3.2.1 實戰經驗,提煉四大核心要訣。
要訣一:結合業務需求選擇合理架構——無銀彈,只有適合
場景 A:外部數據源導入為主,低併發
→ 直接 JDBC 操作資料庫,簡單高效。
場景 B:外部數據源導入為主,高併發/大流量
→ Entity Bean + 快取策略。JBoss 3.2.1 提供多種快取模式:
- Standard CMP 2.x EntityBean + Commit Option D:確保快取與資料源同步,效能大幅優於直連 JDBC。
- 唯讀實體標記
read-only 進一步提升查詢效能。
替代方案:TopLink 等 O/R Mapping 工具。
場景 C:數據由系統自主生成/操作
→ CMP Entity Bean (EJB 2.0/2.1)。EJB 1.1 惡名昭彰,但 2.0 引入:
- Local Interface(避免 RMI 開銷)
- CMR (Container Managed Relationship)
- Read-Only 模式
- Session Facade 模式統一業務入口
關鍵:EJB 容器層調優(JBoss standardjboss.xml 配置 Bean Lock 策略等)將效能關注點上移至中間件層,而非資料庫層,保持資料庫移植性。
要訣二:框架選用原則——站在巨人肩膀上,但別背太多巨人
推薦成熟框架
| 框架 | 定位 | 核心價值 |
| Struts 1.1 | Web MVC (Model 2) | 成熟穩定、標籤庫豐富、與 Jakarta 生態整合、向 JSF 遷移路徑清晰 |
| Log4j | 日誌 | 簡單、高效、靈活配置、JBoss 內建採用、兼容 java.util.logging |
| realMethods | 全棧 J2EE 框架 | 涵蓋各層設計模式實現、已開源、源碼可作學習範本 |
| BC4J (Oracle ADF 前身) | 商業組件框架 | Oracle 生態深度整合、企業級支援 |
選用鐵律
- 不可過度引入: 專案最多 2-3 個核心框架,避免升級維護地獄。
- 學習內部實現: 研究 realMethods 等框架如何實現 Business Delegate、Service Locator、DAO、Front Controller 等模式,吸收精華並適配專案。
- 關注框架演進: Struts → Struts 2 / Spring MVC / JSF,技術棧快速迭代,選型需考慮 3-5 年生命週期。
要訣三:開發模式與工具鏈標準化
現實團隊角色
美工 / JSP 程式設計師 / EJB 程式設計師(缺乏規範定義的完整角色:架構師、部署工程師、測試工程師...)
協作基石
- 版本控制必須使用: CVS / Subversion / VSS / Git(現代首選),每日構建可運行版本。
- 建模工具輔助溝通: Together / Rose / Enterprise Architect / StarUML。
- IDE 整合版控: 選擇支援版控插件的 IDE。
三套推薦工具鏈
- 建模+IDE+版控+伺服器: Together + JBuilder + VSS/CVS + JBoss(開發階段)
- IBM 全家桶: WebSphere Studio (含建模、IDE、版控、測試、部署)
- 輕量級開源鏈: Eclipse/JCreator + Ant + XDoclet + JBoss(現代演進:Maven/Gradle、Git、Jenkins、SonarQube)
手工構建/部署/測試 能深化對生命週期理解,但生產專案應採用自動化工具鏈提升效率與一致性。
要訣四:分階段、分類型測試體系——質量是設計出來的,也是測試出來的
單元測試
- 工具:JUnit(現代:JUnit 5 + Mockito + AssertJ)
- 目標:功能正確性、邊界條件、異常路徑覆蓋。
整合測試
- 工具:OptimizeIt Suite Enterprise(現代:VisualVM、JProfiler、YourKit、Java Flight Recorder)
- 重點:記憶體洩漏檢測、CPU 熱點分析、執行緒死鎖/競態、代碼覆蓋率。
- 案例:Swing 桌面應用記憶體洩漏通過 Profiler 定位解決。
壓力/效能測試
- 工具:Rational Robot / LoadRunner / JMeter / Gatling / k6
- 指標:吞吐量 (TPS)、響應時間分佈、錯誤率、資源飽和度。
其他關鍵成功因子
- 資料庫設計直接決定 Entity Bean 效能(表結構不合理 → 效能崩塌)。
- 團隊技能最大化:結對編程、代碼審查、技術分享會、輪崗機制。
- 架構評審機制:關鍵決策留存 ADR (Architecture Decision Records)。
總結
J2EE 開發成功 = 業務驅動架構 + 克制框架選型 + 標準化工程化流程 + 全生命週期測試體系。拋棄「技術至上」迷思,回歸「解決業務問題」本質,在約束中尋找最優解,方為架構師與資深工程師的核心價值。