SpringFramework(10)

类别:Java 点击:0 评论:0 推荐:

7EJB

1SpringEJB

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

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

2EJB访问

l         使用EJB通常有:

Ø         服务定位器:关心JNDI、初始化context、EJB 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

Ø         加载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         例子:

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");

...

}

}

本文地址:http://com.8s8s.com/it/it16265.htm