上篇列舉的程式限制,實為 Java 語言與 J2SE 強大特性的子集。EJB 容器雖允許在 J2SE 層面使用受限特性,但 EJB 元件本身必須透過 Java 2 安全機制間接存取,而非直接呼叫 API。Java 2 為 EJB 1.1 定義了許可權集(如 FilePermission、NetPermission、ReflectPermission、SecurityPermission),以強化前述限制。
眾多容器未強制執行這些限制,寄望開發者自律。違規元件或過度依賴非標準權限,或權限不足,極難在多容器間移植,且隱藏難以預測的運行時缺陷。關鍵在於:違規程式碼編譯期無法偵測,因皆為標準 Java 功能。
未來規範或允許透過部署工具自訂安全許可,現有容器提供的額外權限屬非標準行為。
EJB 容器是元件的受管執行環境,提供:
資源封裝資源管理器存取(如 JDBC Connection),資源工廠建構資源(如 DataSource)。J2EE Connector Architecture (JCA) 正標準化資源適配器與連接/交易/安全契約,讓應用伺服器以統一方式整合 ERP、大型主機、資料庫等企業系統。
因容器全權負責生命週期、並發、資源、安全,故須消除與容器鎖定/並發管理衝突的可能,並堵塞安全漏洞。同時,EJB 元件應專注商業邏輯,依賴容器服務而非自行解決系統層問題。
最佳實務:使用符合 Java 2 安全策略、且強制執行程式限制的容器進行測試,確保可移植性與一致行為。
EJB 開發者必須知悉、理解並嚴守編程限制。這些限制雖阻擋標準 Java 特性使用,違反者編譯期不報錯,容器亦不強制執行,但它們已成為元件契約條款,是構建可靠、可移植元件的基石。請謹慎遵循。