背景與目標
本文展示如何用 J2EE 重構 Domino 版 Amazon Web Services 應用,對比 Domino 與 J2EE 的開發模式差異,面向有經驗的 Java 開發者。
J2EE 技術棧選型策略
| 架構層次 | 技術選項 | 適用場景 |
| 表示層 | JSP / Velocity / FreeMarker | 簡單 Web 應用,邏輯輕量 |
| 控制層 | Servlet / Struts 1.x / Spring MVC | 需集中請求分發、表單驗證、國際化 |
| 業務層 | JavaBean / EJB (Session Bean) | 複雜事務、安全、分散式部署需求 |
| 持久層 | JDBC / JPA (Hibernate) / iBATIS | 關係資料庫映射、效能調優 |
方案一:JSP + Servlet(最簡架構)
- 優點:零框架依賴、部署輕量、適合極簡原型。
- 缺點:業務邏輯易滲入 JSP、重用性差、測試困難。
- 適用:內部工具、快速驗證概念。
方案二:JSP + JavaBean + Struts 1.x(經典 MVC)
- Struts 提供:
ActionForm 表單驗證、Action 控制器、struts-config.xml 集中映射。
- JavaBean 封裝業務邏輯與資料存取,JSP 僅負責渲染。
- 2000 年代主流架構,現已停止維護,**不建議新專案採用**。
方案三:JSP + EJB 2.x + Struts(重型企業級)
- EJB 封裝資料庫存取與業務邏輯,支援分散式事務、容器管理安全、叢集部署。
- JSP 僅為表示層,透過 JNDI 查找 EJB Home 接口。
- 缺點:開發複雜、部署描述檔繁瑣、效能開銷大、測試需容器。
Domino vs J2EE 關鍵差異
| 維度 | Domino | J2EE |
| 資料模型 | 文檔導向、無結構、多值欄位天生支援 | 關係模型、嚴格 Schema、多值需關聯表 |
| 部署單元 | 單一 NSF 檔案含資料+邏輯+UI | 分層 WAR/EAR,可獨立擴展各層 |
| 擴展性 | 叢集同步、垂直擴展為主 | 水平擴展、無狀態服務、負載均衡 |
| 開發成本 | 低(低代碼)、快速原型 | 高(全代碼)、長期維護優勢 |
混合架構選項(遷移過渡期)
- Domino UI + Java Servlet 處理:Domino 表單提交到 Servlet,效能優於 Agent。
- JSP/Tomcat UI + Domino 資料庫:使用 Domino JSP Tag Library 存取 NSF,改善圖形化控制力。
- Lotus Domino Toolkit for WebSphere Studio:官方整合工具,第三篇將詳細介紹。
現代化架構建議(2024+)
- **微服務 + REST/gRPC**:業務領域拆分為獨立服務,API 閘道統一入口。
- **Spring Boot 3.x / Quarkus**:開箱即用、原生雲、GraalVM 支援。
- **事件驅動**:Kafka 解耦核心交易與下游通知/報表/搜尋。
- **資料庫遷移**:Domino NSF → PostgreSQL / MongoDB(文檔相容)+ 雙寫同步過渡。
- **前端分離**:React/Vue/Angular + TypeScript,JSP 退役為 SSR/SSG 邊緣渲染角色。
結語
J2EE 提供標準化、可攜帶、可擴展的企業級開發平台,但伴隨高複雜度。技術選型應遵循「恰好夠用」原則:小團隊、簡單業務選 Spring Boot;大規模、跨組織、強一致性事務場景才引入完整 Jakarta EE / 微服務體系。
- 上一篇文章: JSP 連接 SQL Server 2005 完整指南:JDBC 驅動安裝與實戰代碼
- 下一篇文章: 基於 JSP + JavaMail API 開發 WebMail 系統核心模組實戰
Copyright ©
程式碼之家 All Rights Reserved