传智播客java学习--EJB3进阶

我今天学习了徐老师讲的EJB3的知识,我做了简单的笔记:

      

       SLSB无状态会话Bean的编程规则;

EJB类

编程规则

  至少有一个业务接口

  必须是具体类.不能是final或抽象的.

  必须有空构造

  可以是其它sessionbean或pojo的子类

    @Stateless

    public CustomerManagerBean extends BaseManagerBean

                        implements CustomerManager {

       ...

    }

   生命周期回调方法可以定义在bean类中或超类中.

   注解继承需要受到限制,超类中@Stateless or @Stateful注解在部署时将

 

   要被忽略.但定义的任何回调方法和资源注入都要被继承.

业务方法名不能以ejb开头,可能会干扰ejb底层处理.必须定义所有的方法为

  public的,但不能是final或static的.在远程业务接口中的定义的参数和返回

  值类型必须实现java串行化接口.

会话状态和Session bean类型

  如果bean要维护会话状态,记住上次交流的结果,这是有状态的会话bean.这意味

  着bean会从方法调用中存储数据到实例变量,并使用缓存的数据来处理下一次方

  法调用.

  SLSB不维护任何状态,SFSB趋向于对多个步骤的工作流进行建模,SLSB则趋向与

  对常规目的进行建模. SFSB典型案例就是购物车.

 

SLSB-生命周期回调

Bean的生命周期回调

  session bean有生命周期,意味着会有一系列状态的转变.客户端和bean都不

  负责bean实例何时创建,何时销毁,何时进行优化.这些行为都由容器进行管理.

  生命周期事件:

  可以归结为几个阶段或事件.最明显的是创建和销毁,所有的bean都需要这两个事

  件.SFSB还会有passivation(钝化)/activation(激活).

 

  bean初始化时,会发生如下过程:

    1.容器调用newInstance方法.

2.如果bean使用DI,所有依赖的资源、bean和环境组件都要注入进来.

 

回调方法是被注解标注的方法.比如@PostContruct和@PreDestroy.方法可以是

公有、私有、受保护和包保护的.

PostConstruct:实例创建并DI之后调用.

PreDestroy:bean销毁前调用,比如释放资源.

所有sessionbean都有以上两个事件.

SFSB有两个额外的事件:PrePassivate和PostActivate.

生命周期方法也可定义在bean类中或单独的拦截器类中.

 

SFSB-特征

SFSB要确保维护会话状态,和SLSB唯一的不同就是容器如何维护他们的生命周期.

容器要保证客户端若干次调用中使用的是同一个bean.因此SFSB和客户端是一对一

映射在一起的.这种关系保证了会话状态的维护,但是也增加了成本.他不能被返回到

池中,而且用户会话活动时还要重用.bean实例驻留于内存中以备客户下个请求使用.

当有大量并发客户持久SFSB时,会有内存开销问题.优化技术就是passivation钝

化.

 

SFSB编程规则

  SFSB实例变量用于存储会话状态,这些变量必须是java基本数据类型或实现串行化接口.

 

  SFSB由于不能池化和进行重用,如果没有方式进行销毁会非常危险,因此必须定义业务方法进行销毁.我们使用@Remove注解.

 

  除了postContruct和preDestory外,SFSB还有prePassivate和

  postAcitivate生命周期回调方法.分别在钝化前和激活后调用.

 

SFSB的钝化/激活

如果客户端长时间没有调用bean,若还驻留在内存中的话,会引起内存耗尽.容器会

启用钝化技术将bean缓存至磁盘,来节省内存.

注:钝化本质上就是将bean缓存至磁盘来释放内存空间.容器通过串行化技术完成这一功能,可将数据存放到存储设备上(文件或DB).激活刚好相反,将数据进行反序列化再载入到内存.

prePassivate回调方法用于准备数据的串行化,或者对无法串行化的变量复制到可

串行化的变量中,或者清除不需要串行化的数据. 比如关闭数据库连接 消息服务器

和套接字连接等等.

大多数时候prePassivate和preDestroy方法回调会指定相同的操作.

 

今天学习的知识就是这么多了,希望明天有更好的状态学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值