EJB学习一
最近在看EJB,概述一下基本的概念: EJB是用來創(chuàng)建分布式、服務器端基于java的企業(yè)應用組件的模型,是java服務器端服務框架的規(guī)范,其最大的用處是部署分布式應用程序。 在J2EE里,Enterprise Java Beans(EJB)稱為Java 企業(yè)Bean,是Java的核心代碼,分別是會話Bean(Session Bean),實體Bean(Entity Bean)和消息驅(qū)動Bean(MessageDriven Bean)。?
??????????一?.Session Bean用于實現(xiàn)業(yè)務邏輯,它可以是有狀態(tài)的,也可以是無狀態(tài)的。每當客戶端請求時,容器就會選擇一個Session Bean來為客戶端服務。Session Bean可以直接訪問數(shù)據(jù)庫,但更多時候,它會通過Entity Bean實現(xiàn)數(shù)據(jù)訪問。 Stateful Session Bean:每次產(chǎn)生一個新的會話,能區(qū)分不同的會話。 Stateless Session Bean : 服務器端是同一個對象,為單例。 本地(Local):客戶端與其調(diào)用的EJB對象在同一個JVM進程中,數(shù)據(jù)直接用傳址的方式傳輸。 遠程(Remote):客戶端與其調(diào)用的EJB對象不在同一個JVM進程中,傳值,需要將參數(shù)序列化。 Webservice :Webservice 客戶端可以訪問無狀態(tài)會話bean的接口
二.Entity Bean是域模型對象,用于實現(xiàn)O/R映射,負責將數(shù)據(jù)庫中的表記錄映射為內(nèi)存中的Entity對象,事實上,創(chuàng)建一個Entity Bean對象相當于新建一條記錄,刪除一個Entity Bean會同時從數(shù)據(jù)庫中刪除對應記錄,修改一個Entity Bean時,容器會自動將Entity Bean的狀態(tài)和數(shù)據(jù)庫同步。
三.MessageDriven Bean是EJB2.0中引入的新的企業(yè)Bean,它基于JMS消息,只能接收客戶端發(fā)送的JMS消息然后處理。MDB實際上是一個異步的無狀態(tài)Session Bean,客戶端調(diào)用MDB后無需等待,立刻返回,MDB將異步處理客戶請求。這適合于需要異步處理請求的場合,比如訂單處理,這樣就能避免客戶端長時間的等待一個方法調(diào)用直到返回結(jié)果。 JMS是Java的消息服務,JMS的客戶端之間可以通過JMS服務進行異步的消息傳輸。JMS支持兩種消息模型:Point-to-Point(P2P)和Publish/Subscribe(Pub/Sub),即點對點和發(fā)布訂閱模型。 點對點:在P2P模型中,有下列概念:消息隊列(Queue)、發(fā)送者(Sender)、接收者(Receiver)。每個消息都被發(fā)送到一個特定的隊列,接收者從隊列中獲取消息。隊列保留著消息,直到它們被消費或超時。 l?????? 每個消息只有一個消費者(Consumer)(即一旦被消費,消息就不再在消息隊列中) l?????? 發(fā)送者和接收者之間在時間上沒有依賴性,也就是說當發(fā)送者發(fā)送了消息之后,不管接收者有沒有正在運行,它不會影響到消息被發(fā)送到隊列。 l?????? 接收者在成功接收消息之后需向隊列應答成功 如果你希望發(fā)送的每個消息都應該被成功處理的話,那么你需要P2P模型。 ????????? 發(fā)布訂閱:在Pub/Sub模型中,有下列概念: 主題(Topic)、發(fā)布者(Publisher)、訂閱者(Subscriber)。客戶端將消息發(fā)送到主題。多個發(fā)布者將消息發(fā)送到Topic,系統(tǒng)將這些消息傳遞給多個訂閱者。 l?????? 每個消息可以有多個消費者 l?????? 發(fā)布者和訂閱者之間有時間上的依賴性。針對某個主題(Topic)的訂閱者,它必須創(chuàng)建一個訂閱之后,才能消費發(fā)布者的消息,而且,為了消費消息,訂閱者必須保持運行的狀態(tài)。 當然,為了緩和這種嚴格的時間相關性,JMS允許訂閱者創(chuàng)建一個可持久化的訂閱。這樣,即使訂閱者沒有被激活(運行),它也能接收到發(fā)布者的消息。 ?????? 如果你希望發(fā)送的消息可以不被做任何處理、或者被一個消費者處理、或者可以被多個消費者處理的話,那么可以采用Pub/Sub模型。 消息的消費:在JMS中,消息的產(chǎn)生和消費是異步的。對于消費來說,JMS的消費者可以通過兩種方式來消費消息。 l?????? 同步 – 訂閱者或接收者調(diào)用receive方法來接收消息,receive方法在能夠接收到消息之前(或超時之前)將一直阻塞。 l?????? 異步 – 訂閱者或接收者可以注冊為一個消息監(jiān)聽器。當消息到達之后,系統(tǒng)自動調(diào)用監(jiān)聽器的onMessage方法。 ????對客戶端來說,message-driven bean就是異步消息的消費者。當消息到達之后,由容器負責調(diào)用MDB。客戶端發(fā)送消息到destination,MDB作為一個MessageListener接收消息。
?
??????????一?.Session Bean用于實現(xiàn)業(yè)務邏輯,它可以是有狀態(tài)的,也可以是無狀態(tài)的。每當客戶端請求時,容器就會選擇一個Session Bean來為客戶端服務。Session Bean可以直接訪問數(shù)據(jù)庫,但更多時候,它會通過Entity Bean實現(xiàn)數(shù)據(jù)訪問。 Stateful Session Bean:每次產(chǎn)生一個新的會話,能區(qū)分不同的會話。 Stateless Session Bean : 服務器端是同一個對象,為單例。 本地(Local):客戶端與其調(diào)用的EJB對象在同一個JVM進程中,數(shù)據(jù)直接用傳址的方式傳輸。 遠程(Remote):客戶端與其調(diào)用的EJB對象不在同一個JVM進程中,傳值,需要將參數(shù)序列化。 Webservice :Webservice 客戶端可以訪問無狀態(tài)會話bean的接口
二.Entity Bean是域模型對象,用于實現(xiàn)O/R映射,負責將數(shù)據(jù)庫中的表記錄映射為內(nèi)存中的Entity對象,事實上,創(chuàng)建一個Entity Bean對象相當于新建一條記錄,刪除一個Entity Bean會同時從數(shù)據(jù)庫中刪除對應記錄,修改一個Entity Bean時,容器會自動將Entity Bean的狀態(tài)和數(shù)據(jù)庫同步。
三.MessageDriven Bean是EJB2.0中引入的新的企業(yè)Bean,它基于JMS消息,只能接收客戶端發(fā)送的JMS消息然后處理。MDB實際上是一個異步的無狀態(tài)Session Bean,客戶端調(diào)用MDB后無需等待,立刻返回,MDB將異步處理客戶請求。這適合于需要異步處理請求的場合,比如訂單處理,這樣就能避免客戶端長時間的等待一個方法調(diào)用直到返回結(jié)果。 JMS是Java的消息服務,JMS的客戶端之間可以通過JMS服務進行異步的消息傳輸。JMS支持兩種消息模型:Point-to-Point(P2P)和Publish/Subscribe(Pub/Sub),即點對點和發(fā)布訂閱模型。 點對點:在P2P模型中,有下列概念:消息隊列(Queue)、發(fā)送者(Sender)、接收者(Receiver)。每個消息都被發(fā)送到一個特定的隊列,接收者從隊列中獲取消息。隊列保留著消息,直到它們被消費或超時。 l?????? 每個消息只有一個消費者(Consumer)(即一旦被消費,消息就不再在消息隊列中) l?????? 發(fā)送者和接收者之間在時間上沒有依賴性,也就是說當發(fā)送者發(fā)送了消息之后,不管接收者有沒有正在運行,它不會影響到消息被發(fā)送到隊列。 l?????? 接收者在成功接收消息之后需向隊列應答成功 如果你希望發(fā)送的每個消息都應該被成功處理的話,那么你需要P2P模型。 ????????? 發(fā)布訂閱:在Pub/Sub模型中,有下列概念: 主題(Topic)、發(fā)布者(Publisher)、訂閱者(Subscriber)。客戶端將消息發(fā)送到主題。多個發(fā)布者將消息發(fā)送到Topic,系統(tǒng)將這些消息傳遞給多個訂閱者。 l?????? 每個消息可以有多個消費者 l?????? 發(fā)布者和訂閱者之間有時間上的依賴性。針對某個主題(Topic)的訂閱者,它必須創(chuàng)建一個訂閱之后,才能消費發(fā)布者的消息,而且,為了消費消息,訂閱者必須保持運行的狀態(tài)。 當然,為了緩和這種嚴格的時間相關性,JMS允許訂閱者創(chuàng)建一個可持久化的訂閱。這樣,即使訂閱者沒有被激活(運行),它也能接收到發(fā)布者的消息。 ?????? 如果你希望發(fā)送的消息可以不被做任何處理、或者被一個消費者處理、或者可以被多個消費者處理的話,那么可以采用Pub/Sub模型。 消息的消費:在JMS中,消息的產(chǎn)生和消費是異步的。對于消費來說,JMS的消費者可以通過兩種方式來消費消息。 l?????? 同步 – 訂閱者或接收者調(diào)用receive方法來接收消息,receive方法在能夠接收到消息之前(或超時之前)將一直阻塞。 l?????? 異步 – 訂閱者或接收者可以注冊為一個消息監(jiān)聽器。當消息到達之后,系統(tǒng)自動調(diào)用監(jiān)聽器的onMessage方法。 ????對客戶端來說,message-driven bean就是異步消息的消費者。當消息到達之后,由容器負責調(diào)用MDB。客戶端發(fā)送消息到destination,MDB作為一個MessageListener接收消息。
?
轉(zhuǎn)載于:https://blog.51cto.com/gracehopper2000/158660
總結(jié)
- 上一篇: 计算方法太牛了,留着以后教孩子!!!
- 下一篇: JAVA通过JCO连接SAP例子