SpringFramework(10)

7EJB

1SpringEJB

l         Spring是轻量级容器,在许多场合可以用来替代EJB

l         Spring使得访问和实现EJB更容易

2EJB访问

l         使用EJB通常有:

Ø         服务定位器:关心JNDI、初始化contextEJB Home查找

Ø         业务代表:减少耦合,隐藏实现细节

l         使用Spring不需要这些设计模式

3)访问本地SLSB

l         使用本地无状态Session Bean

<bean id="myComponent"
    
    
class="...ejb.access.LocalStatelessSessionProxyFactoryBean">
    
    
<property name="jndiName">
    
    
<value>myComponent</value>
    
    
</property>
    
    
<property name="businessInterface">
    
    
<value>com.mycom.MyComponent</value>
    
    
</property>
    
    
</bean>
    
    

创建使用服务定位器访问EJB的代理(业务代表)

l         你可以交换Bean的实现,而不需要改变客户代码:客户程序使用业务接口,而不是EJB的特定接口

4)访问远程SLSB

l         使用远程无状态Session Bean

<bean id="myComponent"
    
    
class="...SimpleRemoteStatelessSessionProxyFactoryBean">
    
    
<property name="jndiEnvironment">
    
    
<ref bean="myEnvironment"/>
    
    
</property>
    
    
<property name="jndiName">
    
    
<value>myComponent</value>
    
    
</property>
    
    
<property name="businessInterface">
    
    
<value>com.mycom.MyComponent</value>
    
    
</property>
    
    
</bean>
    
    

5EJB实现

l         AbstractEnterpriseBean

Ø         加载BeanFactoryEJB环境变量ejb/BeanFactoryPath指定XML BeanFactory文件在classpath中的位置;缺省的BeanFactoryXmlApplicationContext

l         应用程序只是使用EJB作为前端

Ø         业务逻辑推迟到了BeanFactoryBean

6)实现SLSB

l         无状态Session Bean

l         扩展AbstractStatelessSessionBean

Ø         保存Session context

Ø         空实现ejbRemove

Ø         ejbCreate()方法

Ø         ejbActivate()ejbPassivate()中抛异常

l         子类必须实现onEjbCreate()

l         例子:

class MySlsb extends AbstractStatelessSessionBean {
    
    
protected void onEjbCreate() throws CreateException {
    
    
...
    
    
}
    
    
public void businessMethod() {
    
    
BeanFactory bf = getBeanFactory();
    
    
MyBusinessBean mbb = bf.getBean("myBusinessBean");
    
    
...
    
    
}
    
    
}
    
    

7)实现SFSB

l         保持状态Session Bean

l         扩展AbstractStatefulSessionBean

Ø         保存Session context

Ø         空实现ejbRemove

Ø         ejbCreate()方法

l         子类必须实现ejbCreate()ejbActivate()ejbPassivate()

l         例子:

class MySfsb extends AbstractStatefulSessionBean {
    
    
public void ejbCreate() throws CreateException {
    
    
loadBeanFactory();
    
    
...
    
    
}
    
    
public void ejbActivate() {
    
    
...
    
    
}
    
    
public void ejbPassivate() {
    
    
...
    
    
}
    
    
public void businessMethod() {
    
    
BeanFactory bf = getBeanFactory();
    
    
MyBusinessBean mbb = bf.getBean("myBusinessBean");
    
    
...
    
    
}
    
    
}
    
    

8)实现MDB

l         例子:

class MyMdb extends AbstractJmsMessageDrivenBean {
    
    
protected void onEjbCreate() throws CreateException {
    
    
...
    
    
}
    
    
public void onMessage(Message message) {
    
    
BeanFactory bf = getBeanFactory();
    
    
MyBusinessBean mbb = bf.getBean("myBusinessBean");
    
    
...
    
    
}
    
    
}
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值