J2EE技術為實現服務器端和中間件應用程序提供了堅實的基礎。J2EE容器(比如BEA WebLogic Server)可以治理系統級的元素,包括應用程序生命周期、安全性、事務、遠程控制和并發性,而且它可以保證為JDBC、JMS和JTA之類的常見服務提供支持。然而,J2EE的龐大和復雜性使開發和測試變得異常困難。傳統的J2EE應用程序通常嚴重依靠于通過容器的JNDI才可用的服務。這意味著需要大量直接的JNDI查找,或者要使用Service Locator模式,后者稍微有所改進。這種架構提高了組件之間的耦合度,并使得單獨測試某個組件成為幾乎不可能實現的事情。您可以閱讀Spring Framework創建者所撰寫的J2EE Development without EJB一書,其中深入分析了這種架構的缺陷。