系統(tǒng)實現中的業(yè)務EJB組件---SessionBean和MDB的設計實現_第1頁
系統(tǒng)實現中的業(yè)務EJB組件---SessionBean和MDB的設計實現_第2頁
系統(tǒng)實現中的業(yè)務EJB組件---SessionBean和MDB的設計實現_第3頁
系統(tǒng)實現中的業(yè)務EJB組件---SessionBean和MDB的設計實現_第4頁
系統(tǒng)實現中的業(yè)務EJB組件---SessionBean和MDB的設計實現_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第四部分:系統(tǒng)實現中的EJB組件-SessionBean和MDB的設計實現1、在該項目中填加一個EJB組件(1)選擇File-New菜單,然后在Object Gallery中選擇“EJB Module”模板,點擊“OK”按鈕(2)設置EJB組件在下面的對話框內對該EJB組件進行設置,將該EJB組件的名稱定為EBussEJBBean。(3)最后點擊“OK”按鈕,將生成對應的EJB組件的程序代碼。2、在該項目中新建一個有狀態(tài)的SessionBean(1)該有狀態(tài)的SessionBean的名稱為EBussSessionBean(2)設置該有狀態(tài)的Session EJB的屬性,如名稱、類型等名稱為:E

2、BussSessionBean,類型為stateful(有狀態(tài)), Session Synchronization為true,Transaction type事務類型選擇為容器管理(Container),interfaces類型為remote。Session synchronization選擇為false。(3)下面是針對UserInfo CMP而言給該有狀態(tài)的SessionBean添加屬性成員添加一個代表用戶數據的屬性成員,類型為UserInfoData,名稱為OnePersonInfoData并提供get和set方法。(4)下面是針對UserInfo CMP而言給該有狀態(tài)的SessionB

3、ean添加方法成員l 再增加一個ejbCreate方法,輸入參數為UserInfoData somePersonInfoData,接口類型為home(利用它可以創(chuàng)建出SessionBean的對象)。l 添加一個名稱TestUserNameAndPswd,輸入參數為String username, String userPswd,返回參數為boolean,接口類型為Remote。由于該方法要增加其它的異常拋出聲明,因此在其Remote接口和EBussSessionBean類中為該方法添加FinderException聲明l 添加一個名稱為getAllUserInfoData的方法,該方法不帶有輸

4、入參數,返回為java.util.Vector 類型,該方法為Remote接口類型的方法。由于該方法要增加其它的異常拋出聲明,因此在其Remote接口和EBussSessionBean類中為該方法添加FinderException聲明。l 再添加一個名稱為getUserInfoDataByID的方法,該方法帶有輸入參數 int userID,返回為clientData.UserInfoData 類型,該方法為Remote接口類型的方法。由于該方法要增加其它的異常拋出聲明,因此在其Remote接口和EBussSessionBean類中為該方法添加FinderException聲明。l 添加一個名

5、稱為addOneUserInfo的方法,該方法的輸入參數為UserInfoData onePersonInfoData,返回為boolean 類型,該方法為Remote接口類型的方法。由于該方法要增加其它的異常拋出聲明,因此在其Remote接口和EBussSessionBean類中為該方法添加CreateException聲明。l 添加一個名稱為getMaxUserID的方法,該方法的輸入參數為void,返回為int 類型,該方法為Remote接口類型的方法。由于該方法要增加其它的異常拋出聲明,因此在其Remote接口和EBussSessionBean類中為該方法添加FinderExcepti

6、on聲明。l 添加一個名稱為updateOneUserInfo的方法,該方法的輸入參數為UserInfoData onePersonInfoData,返回為boolean 類型,該方法為Remote接口類型的方法。由于該方法要增加其它的異常拋出聲明,因此在其Remote接口和EBussSessionBean類中為該方法添加FinderException聲明。l 添加一個名稱為deleteOneUserInfo的方法,該方法的輸入參數為String userID,返回為boolean 類型,該方法為Remote接口類型的方法。l 最后的狀態(tài)為:(5)下面是針對BookInfo CMP而言給該有狀

7、態(tài)的SessionBean添加屬性成員添加一個代表圖書數據的屬性成員,類型為BookInfoData,名稱為OneBookInfoData并提供get和set方法。(6)下面是針對BookInfo CMP而言給該有狀態(tài)的SessionBean添加方法成員l 再增加一個ejbCreate方法,輸入參數為BookInfoData someBookInfoData,接口類型為home(利用它可以創(chuàng)建出SessionBean的對象)。l 添加一個名稱為findBookWithEJBBean的方法,該方法帶有輸入參數String findKeyWordType, String nameString,返回

8、為java.util.Vector 類型,該方法為Remote接口類型的方法。并且增加其它的異常定義(請見下面所示)由于該方法要增加其它的異常拋出聲明,因此在其Remote接口和EBussSessionBean類中為該方法添加FinderException聲明package ebookstore;public interface EBussSession extends javax.ejb.EJBObject public java.util.Vector findBookWithEJBBean(String findKeyWordType, String nameString) throws

9、 RemoteException,FinderException; public class EBussSessionBean implements SessionBean public java.util.Vector findBookWithEJBBean(String findKeyWordType, String nameString) throws javax.ejb.FinderException3、編程該有狀態(tài)的SessionBean主要是響應Servlet的請求并根據請求訪問相關的CMP Bean,具體的代碼請見源程序。4、在該項目中新建一個無狀態(tài)的SessionBean(1)

10、名稱為EBussStateLessBean(2)設置該EJB的屬性,如名稱、類型等名稱為:EBussStateLessBean,類型為Stateless(無狀態(tài)), Transaction type事務類型選擇為容器管理(Container),interfaces類型為remote。(3)給該無狀態(tài)的SessionBean添加方法成員5、編程該無狀態(tài)的SessionBean6、在該項目中添加一個消息對列的MDB(1)(2)設置該MDBl 該MDB的名稱為:EBussMDBBeanl Message Selector:為消息的過濾設置l 在DestinName:EBussJMSQueueJNDI

11、消息對列的JNDI名稱,應該與weblogic中的mydomain JMS Servers MyJMSServer JMS Destinations的 JNDI Name名稱保持一致l Connect Factory Name:myfactory(為在weblogic中所設置的JMS connection factory的JNDI Name)Transaction type為 Bean類型(3)在該MDB EJB中增加一個EBussSessionHome類型的成員和EBussSession類型的成員以訪問SessionBean , 成員對象的名稱為sessionEJBHomeObject,數據

12、類型為EBussSessionHome類型。不提供get和set方法。再增加一個成員對象,名稱為sessionEJBRemoteObject,數據類型為EBussSession類型。(4)查看JBuilder所生成的該MDB的程序package ebookstoreservlet;import javax.ejb.*;import javax.jms.*;import javax.naming.*;public class EBussMDBBean implements MessageDrivenBean, MessageListener MessageDrivenContext messag

13、eDrivenContext; EBussSessionHome sessionEJBHomeObject; EBussSession sessionEJBRemoteObject; public void ejbCreate() throws CreateException /*todo Complete this method*/ public void ejbRemove() /*todo Complete this method*/ public void onMessage(Message msg) /*todo Complete this method*/ public void

14、setMessageDrivenContext(MessageDrivenContext messageDrivenContext) this.messageDrivenContext = messageDrivenContext; (5)編程該MDB中的onMessage(Message msg)方法(屬于MessageListener接口中所定義出的方法)以接收從Servlet消息的生產者所發(fā)送來的對列消息如“查詢某一人員的信息”或者“預訂業(yè)務”,然后對業(yè)務代理類中的SessionBean的代理方法進行調用,再通過SessionBean去調用CMP以獲得數據。package ebookst

15、ore;import javax.ejb.*;import javax.jms.*;import javax.naming.*;import eBussinDelegate.*; /引入商業(yè)業(yè)務代理方法所在的包public class EBussMDBBean implements MessageDrivenBean, MessageListener MessageDrivenContext messageDrivenContext;/* 下面為在Queue MDB中訪問業(yè)務代理所需要的對象聲明*/ EBookBussDelegate eBookBussDelegate=null; publi

16、c void ejbCreate() throws CreateException /*todo Complete this method*/ public void ejbRemove() /*todo Complete this method*/ public void onMessage(Message msg) try TextMessage TMS = (TextMessage) msg; String queueMessageText = TMS.getText(); System.out.println(所獲得的消息對列的內容是: + queueMessageText); eBo

17、okBussDelegate=new EBookBussDelegate(); eBookBussDelegate.getQueueMessageTextFromMDB(queueMessageText); System.out.println(已經調用了業(yè)務代理中的方法); catch (Exception ex) System.out.println(在發(fā)送消息對列時出現了錯誤,成為如下:+ex.toString(); public void setMessageDrivenContext(MessageDrivenContext messageDrivenContext) this.me

18、ssageDrivenContext = messageDrivenContext; 當消息的發(fā)送者向消息對列發(fā)送消息時,該MDB將接收消息對列中的消息,然后將在服務器的控制臺上顯示出消息的內容。7、在該項目中添加一個消息主題的MDB(1)(2)設置該Topic MDBBean的參數l 該MDB的名稱為:TopicMDBEJBBeanl Message Selector:為消息的過濾設置l 在DestinName:EBussJMSTopicJNDI消息主題的JNDI名稱,應該與weblogic中的mydomain JMS Servers MyJMSServer JMS Destinations

19、的 JNDI Name名稱保持一致l Destination Type選擇為javax.jms.Topicl Connect Factory Name:myfactory(為在weblogic中所設置的JMS connection factory的JNDI Name)l Transaction type為 Bean類型(注意:一定要選擇為Bean方式)否則會出現如下的錯誤內容(3)查看所生成的Topic Bean的代碼 TopicMDBEJBBean.java(注意:其包名稱也應該為ebookstore包)package ebookstore;import javax.ejb.*;import

20、 javax.jms.*;import javax.naming.*;public class TopicMDBEJBBean implements MessageDrivenBean, MessageListener MessageDrivenContext messageDrivenContext; public void ejbCreate() throws CreateException /*todo Complete this method*/ public void ejbRemove() /*todo Complete this method*/ public void onMe

21、ssage(Message msg) /*todo Complete this method*/ public void setMessageDrivenContext(MessageDrivenContext messageDrivenContext) this.messageDrivenContext = messageDrivenContext; (4)編程該MDB中的onMessage(Message msg)方法(屬于MessageListener接口中所定義出的方法)以接收從Servlet消息的生產者所發(fā)送來的主題消息,然后對業(yè)務代理類中的SessionBean的代理方法進行調用,再通過SessionBean去調用CMP以獲得數據。package ebookstore;import javax.ejb.*;import javax.jms.*;import javax.naming.*;import eBussinDelegate.*; /引入商業(yè)業(yè)務代理方法所在的包public class TopicMDBEJBBean implements MessageDrivenBean, MessageListener MessageDrivenContext messageDrivenContex

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論