7、EJB
(1)Spring和EJB
l Spring是輕量級容器,在許多場合可以用來替代EJB
l Spring使得訪問和實現EJB更容易
(2)EJB訪問
l 使用EJB通常有:
Ø 服務定位器:關心JNDI、初始化context、EJB Home查找
Ø 業務代表:減少耦合,隱藏實現細節
l 使用Spring不需要這些設計模式
(3)訪問本地SLSB
l 使用本地無狀態Session Bean
創建使用服務定位器訪問EJB的代理(業務代表)
l 你可以交換Bean的實現,而不需要改變客戶代碼:客戶程序使用業務接口,而不是EJB的特定接口
(4)訪問遠程SLSB
l 使用遠程無狀態Session Bean
(5)EJB實現
l AbstractEnterpriseBean
Ø 加載BeanFactory:EJB環境變量ejb/BeanFactoryPath指定XML BeanFactory文件在classpath中的位置;缺省的BeanFactory是XmlApplicationContext
l 應用程序只是使用EJB作爲前端
Ø 業務邏輯推遲到了BeanFactory的Bean中
(6)實現SLSB
l 無狀態Session Bean
l 擴展AbstractStatelessSessionBean
Ø 保存Session context
Ø 空實現ejbRemove
Ø ejbCreate()方法
Ø 在ejbActivate()和ejbPassivate()中拋異常
l 子類必須實現onEjbCreate()
l 例子:
(7)實現SFSB
l 保持狀態Session Bean
l 擴展AbstractStatefulSessionBean
Ø 保存Session context
Ø 空實現ejbRemove
Ø ejbCreate()方法
l 子類必須實現ejbCreate()、ejbActivate()和ejbPassivate()
l 例子:
(8)實現MDB
l 例子: