效能痛點
- JNDI 查找是幾乎所有 EJB 交互的必要步驟
- 每次查找皆有顯著效能開銷
- 應用常使用多個 Bean,多組件重複查找 → 系統主要瓶頸
優化核心策略
- 快取 Home Interface:首次查找後存入快取,後續直接取用
- 通用輔助類 (Factory):封裝查找邏輯,提供統一存取點
- 工廠風格解決方案:結合快取與 Factory,實現工業級優化
實作要點
- 使用
Hashtable 或 ConcurrentHashMap 快取 Home 物件
- Factory 方法:
getHome(String jndiName, Class homeClass)
- 首次查找:
InitialContext.lookup() + PortableRemoteObject.narrow()
- 後續直接回傳快取實例
- 考慮叢集環境下的快取失效與重新查找機制
優化效果
- 消除重複 JNDI 查找開銷
- 降低網路往返與序列化成本
- 提升 EJB 呼叫整體回應速度
詳細參考
Brett McLaughlin 專欄文章:
https://www-900.ibm.com/developerWorks/cn/java/j-ejb0924/index.shtml