深入學習EJB3.0之一:概述與搭建環境

    現在做的項目正在使用EJB3,雖然用了有一段時間,但是自己總感覺並不是十分理解其中的許多內容,也並不清楚到底用EJB有什麼好處,所以找了一本書(EJB3.0入門經典)進行研讀,並根據自己和網上大家的理解準備寫一系列詳細的學習日誌,如有錯誤,請大家不吝賜教。

一、EJB的概述:

1.EJB (Enterprise JavaBean)J2EE的一部分,定義了一個用於開發基於組件的企業多重應用程序的標準。J2EE裏,Enterprise Java Beans(EJB)稱爲Java 企業Bean,是Java的核心代碼,分別是會話BeanSession Bean),實體BeanEntity Bean)和消息驅動BeanMessageDriven Bean)。

① Session Bean用於實現業務邏輯,它可以是有狀態的,也可以是無狀態的。每當客戶端請求時,容器就會選擇一個Session Bean來爲客戶端服務。Session Bean可以直接訪問數據庫,但更多時候,它會通過Entity Bean實現數據訪問。

② Entity Bean是域模型對象,用於實現O/R映射,負責將數據庫中的表記錄映射爲內存中的Entity對象,事實上,創建一個Entity Bean對象相當於新建一條記錄,刪除一個Entity Bean會同時從數據庫中刪除對應記錄,修改一個Entity Bean時,容器會自動將Entity Bean的狀態和數據庫同步。

③ MessageDriven BeanEJB2.0中引入的新的企業Bean,它基於JMS消息,只能接收客戶端發送的JMS消息然後處理。MDB實際上是一個異步的無狀態 Session Bean,客戶端調用MDB後無需等待,立刻返回,MDB將異步處理客戶請求。這適合於需要異步處理請求的場合,比如訂單處理,這樣就能避免客戶端長時間的等待一個方法調用直到返回結果。

2.EJB實際上是SUNJ2EE中的一套規範,並且規定了一系列的API用來實現把EJB概念轉換成EJB產品.EJB是 BEANS,BEANS是什麼概念,那就是得有一個容納她,讓她可勁造騰的地方,就是得有容器.EJB必鬚生存在EJB容器中.這個容器可是功能強大之極!她首先要包裝你BEAN,EJB的客戶程序實際上從來就不和你編寫的EJB直接打交道,他們之間是通過HOME/REMOTE接口來發生關係的.它負責你的BEAN的所有的喫喝拉薩睡,比如BEAN的持續化,安全性,事務管理...

EJB是一個技術規範,標準描述了構建應用組件要解決的可擴展 (Scalable)、分佈式 (Distributed)、事務處理 (Transactional)、數據存儲 (Persistent)、安全性 (Secure);從技術上而言並不是一種"產品"。

3.EJB應用需要運行在EJB容器中(不同於Web容器和Servlet容器):

Web容器好比電視機Servlet容器好比VCD沒有VCD你可以看電視,但是有了VCD沒有電視機,你從哪看起?
沒有Servlet容器,你也可以用Web容器直接訪問靜態頁面,比如安裝一個apache等,但是如果要顯示Jsp/Servlet,你就要安裝一個Servlet容器了,但是光有Servlet容器是不夠的,因爲它要被解析成Html輸出,所以你仍需要一個Web容器大多數Servlet容器同時提供了Web容器的功能,也就是說大多Servelt可以獨立運行你的Web應用

 

EJB容器。更具有行業領域特色。他提供給運行在其中的EJB組件各種管理功能。只要滿足J2EE規範的EJB放入該容器,馬上就會被容器進行高效率的管理。並且可以通過現成的接口來獲得系統級別的服務。EJB 容器提供對企業 Bean 的本地訪問和遠程訪問。容器負責創建企業 Bean、將企業 Bean 綁定到命名服務以使其他應用程序組件可以訪問企業 Bean、確保只有授權的客戶機才能訪問企業 Bean 的方法、將 Bean 的狀態保存到持久性存儲中、高速緩存 Bean 的狀態以及在必要時激活或鈍化 Bean

JBossEJB容器,TomcatWeb容器,一般的JBoss都已經集成了Tomcat,如果沒有集成TomcatJBoss就不可以運行JspServlet

一般把具有完整的J2ee(包括EJB)功能的叫做應用服務器。

發佈到EJB容器的組件只能通過JNDI來訪問


4.JNDIJava Naming and Directory Interface)概述:

命名服務用於將名稱和對象聯繫起來,從而可以用名稱訪問對象,即容器幫你維護對象實例,你只需使用API即可獲得new好的對象實例。

JNDI結構:

二、建立EAP工程及創建數據源:

1.創建數據源

EJB工程中配置數據源並不像在使用Hibernate時再工程的配置文件中配置,而是將所需要的數據庫連接串、驅動、用戶名、密碼等在JBoss中配置成數據源,並使用jndi-nameEJB工程聯繫起來,JBoss中數據源的配置:

%JBOSS_HOME%/server/default/deploymssql-ds.xml配置(由於我使用的是SQLServer:

 

2.建立EAP工程

使用MyEclipse建立EAPEnterprise Application Project)工程,包含了EJB工程和Web工程以及將兩個工程進行關聯的一個工程,這樣就免去了分別建EJBWeb工程,然後再將EJB打包到Web工程中的繁瑣。

EAP工程被打包發佈到應用服務器上時,以.ear結尾(enterprise application archive)。

如下:

 

  在第一個工程中的application.xml中描述了打包成ear工程的各項屬性,如下:

 

在第二個工程,EJB工程下的persistence.xml中定義了工程所訪問的數據源,如下:

 

最後在瀏覽器的地址欄上輸入http://localhost:8888/LucubrateEJB3_1Web就可以看到此項目的index.jsp頁面了(我設置的端口號是8888)。

以上即爲此節的內容,簡單的介紹EJB和部署。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章