EJB學習一

          最近在看EJB,概述一下基本的概念:
          EJB是用來創建分佈式、服務器端基於java的企業應用組件的模型,是java服務器端服務框架的規範,其最大的用處是部署分佈式應用程序。
          在J2EE裏,Enterprise Java Beans(EJB)稱爲Java 企業Bean,是Java的核心代碼,分別是會話Bean(Session Bean),實體Bean(Entity Bean)和消息驅動Bean(MessageDriven Bean)。 
          一 .Session Bean用於實現業務邏輯,它可以是有狀態的,也可以是無狀態的。每當客戶端請求時,容器就會選擇一個Session Bean來爲客戶端服務。Session Bean可以直接訪問數據庫,但更多時候,它會通過Entity Bean實現數據訪問。
         Stateful Session Bean:每次產生一個新的會話,能區分不同的會話。
         Stateless Session Bean : 服務器端是同一個對象,爲單例。
         本地(Local):客戶端與其調用的EJB對象在同一個JVM進程中,數據直接用傳址的方式傳輸。
         遠程(Remote):客戶端與其調用的EJB對象不在同一個JVM進程中,傳值,需要將參數序列化。
         Webservice :Webservice 客戶端可以訪問無狀態會話bean的接口
  二.Entity Bean是域模型對象,用於實現O/R映射,負責將數據庫中的表記錄映射爲內存中的Entity對象,事實上,創建一個Entity Bean對象相當於新建一條記錄,刪除一個Entity Bean會同時從數據庫中刪除對應記錄,修改一個Entity Bean時,容器會自動將Entity Bean的狀態和數據庫同步。
  三.MessageDriven Bean是EJB2.0中引入的新的企業Bean,它基於JMS消息,只能接收客戶端發送的JMS消息然後處理。MDB實際上是一個異步的無狀態Session Bean,客戶端調用MDB後無需等待,立刻返回,MDB將異步處理客戶請求。這適合於需要異步處理請求的場合,比如訂單處理,這樣就能避免客戶端長時間的等待一個方法調用直到返回結果。
         JMSJava的消息服務,JMS的客戶端之間可以通過JMS服務進行異步的消息傳輸。JMS支持兩種消息模型:Point-to-PointP2P)和Publish/SubscribePub/Sub),即點對點發佈訂閱模型。
        
點對點:P2P模型中,有下列概念:消息隊列(Queue)、發送者(Sender)、接收者(Receiver)。每個消息都被髮送到一個特定的隊列,接收者從隊列中獲取消息。隊列保留着消息,直到它們被消費或超時。
l       每個消息只有一個消費者(Consumer)(即一旦被消費,消息就不再在消息隊列中)
l       發送者和接收者之間在時間上沒有依賴性,也就是說當發送者發送了消息之後,不管接收者有沒有正在運行,它不會影響到消息被髮送到隊列。
l       接收者在成功接收消息之後需向隊列應答成功
如果你希望發送的每個消息都應該被成功處理的話,那麼你需要P2P模型。
          發佈訂閱:Pub/Sub模型中,有下列概念: 主題(Topic)、發佈者(Publisher)、訂閱者(Subscriber)。客戶端將消息發送到主題。多個發佈者將消息發送到Topic,系統將這些消息傳遞給多個訂閱者。
l       每個消息可以有多個消費者
l       發佈者和訂閱者之間有時間上的依賴性。針對某個主題(Topic)的訂閱者,它必須創建一個訂閱之後,才能消費發佈者的消息,而且,爲了消費消息,訂閱者必須保持運行的狀態。
當然,爲了緩和這種嚴格的時間相關性,JMS允許訂閱者創建一個可持久化的訂閱。這樣,即使訂閱者沒有被激活(運行),它也能接收到發佈者的消息。
       如果你希望發送的消息可以不被做任何處理、或者被一個消費者處理、或者可以被多個消費者處理的話,那麼可以採用Pub/Sub模型。
         消息的消費:JMS中,消息的產生和消費是異步的。對於消費來說,JMS的消費者可以通過兩種方式來消費消息。
l       同步 訂閱者或接收者調用receive方法來接收消息,receive方法在能夠接收到消息之前(或超時之前)將一直阻塞。
l       異步 訂閱者或接收者可以註冊爲一個消息監聽器。當消息到達之後,系統自動調用監聽器的onMessage方法。
    對客戶端來說,message-driven bean就是異步消息的消費者。當消息到達之後,由容器負責調用MDB。客戶端發送消息到destinationMDB作爲一個MessageListener接收消息。

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