JavaEE容器組成
Web容器:包括Jsp與Servlet組件,可使用EJB中的組件完成複雜的商務邏輯;
EJB容器:包含組件EJB, EJB規範定義了一個開發和部署分散式商業邏輯的框架;
Applet容器 包含組件Applet,即可使用J2SE開發Applet
Application Client容器:包含組件Application Client
具體實現
View:Web容器中的JSP或Servlet、Applet、Applicationg Client。Servlet是實現Controller部分業務流程控制的主要手段;而EJB則主要針對Model部分的業務邏輯實現。
依靠JAVA EE的各種服務以及API與各種企業資源和企業級套用相連線。
JDBC JCA用於企業資源的連線,JAX-RPC JAXR SAAJ是實現WEB SERVICE以及WEB SERVICE連線的基本支持。
但在筆者看來,現在容器的概念變得有點模糊了,大家耳熟能詳是那些功能強大的開源框架,比如Hibernate、Struts2、Spring、JSF等,其中Hibernate就基於JDBC的基礎封裝了對事務和會話的管理,大大方便了對資料庫操作的繁瑣代碼,從這個意義上來說它已經接近容器的概念了,EJB的實體Bean也逐漸被以Hibernate為代表的持久化框架所取代。
針對接口是筆者特意強調的J2ee學習之路必備的思想,另外一個就是比較常規的 組件和容器的概念了。很多教材和專業網站都說J2EE的核心是一組規範與指南,強調J2ee的核心概念就是 組件+容器,這確實是無可厚非的。隨著越來越多的J2ee框架出現,相應的每種框架都一般有與之對應的容器。
組件,本意是指可以重用的代碼單元,一般代表著一個或者一組可以獨立出來的功能模組,在J2ee中組件的種類有很多種,比較常見的是EJB組件、DAO組件、客戶端組件或者應用程式組件等,它們有個共同特點是分別會打包成.war,.jar,.jar,.ear,每個組件由特定格式的xml描述符檔案進行描述,而且伺服器端的組件都需要被部署到套用伺服器上面才能夠被使用。
隨著WEB和EJB容器概念誕生,使得軟體套用業開始擔心SUN的夥伴們是否還在Java平台上不斷推出翻新的標準框架,致使軟體套用業的業務核心組件架構無所適從,從一直以來是否需要EJB的討論聲中說明了這種彷徨。
筆者曾經在2004年底中國軟體技術大會Ioc微容器(也就是Jdon框架的實現原理)演講中指出:我們需要一個跨J2SE/WEB/EJB的微容器,保護我們的業務核心組件(中間件),以延續它的生命力,而不是依賴J2SE/J2EE版本.