标签:ejb session bean
EJB是企业级JavaBean,是一种分布式的具体实现。EJB的企业Bean分为三种,分别是Session Bean(会话Bean)、其中有分为Stateless Session Bean(无状态会话Bean)、Statefule Session Bean(有状态会话Bean);Message Driven Bean(消息驱动Bean)、Persistence(持久化)的Entity Bean(实体Bean)。这篇主要讲解Session Bean
会话Bean的作用:进行业务逻辑操作。比如注册用户、订单登记、数据库操作等等。
Session
从客户端获得EJB对象到客户端生命周期结束或者释放EJB对象为止称为一次会话。
会话和对象是一对一对应关系,一次会话对应一个实例化出来的对象;两次会话就对应两个对象。
对象状态
对象的状态是由其实例变量(即成员变量)的值组成
实例变量:与实例相关的变量,不同的实例,其变量值不同。一般是非静态变量
类变量:与类相关的变量,同一类中,其变量值全是相同的。一般是静态变量
有状态的Session Bean和无状态的Session Bean区别就在与多次会话过程中(请求/方法调用),实例变量的值能否被保存
有状态的会话Bean,即EJB能够在同一客户端在多次请求(方法调用)之间保持装状态信息
面对的是有状态的EJB就相当于每次调用这个对象的时候服务器新创建了一个对象给本次请求使用
根据不同的会话,服务器端会分配不同的session,那么如何在服务器端区分不同会话的session呢?通过jsessionid这个值来区分
面对的是有状态的EJB就相当于每次调用这个对象的时候服务器给我的是同一个对象。
它是以单例的形式管理的, 所以不能够区分不同的客户端
并非说EJB不能存在状态,二是EJB容器不会对EJB状态做保存。因为EJB容器不会对Srateless Session Bean的状态进行管理,所以它的性能要比Srateful Session Bean好
Class stateTest{
Private int value=0;
Public void changeValue(int value){
System.out.print(value);
System.out.print(this.value);
This.value=value;
}
}
分别将stateTest设置为有状态和无状态
客户端调用
stateTest test1 = new stateTest();
test1.changeValue(1);
test1.changeValue(2);
stateTest test2 = new stateTest();
test2.changeValue(1);
test2.changeValue(2);
执行结果
无状态
1 0 2 1 1 1 2 2
有状态
1 0 2 1 1 0 2 1
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:ejb session bean
原文地址:http://blog.csdn.net/y_love_f/article/details/47175301