软讯网络 > 编程语言 > Java > EJB(Enterprise JavaBeans)入门(6)
【标 题】:EJB(Enterprise JavaBeans)入门(6)
【关键字】:
Java,is,EJB,Bean,Enterprise,JavaBean,Beans,Be,EJB,Enterprise,JavaBeans
【来 源】:网络
EJB(Enterprise JavaBeans)入门(6)

...
FileInputStream fileStream = new FileInputStream("c:\\product.obj");
ObjectInputStream in = new ObjectInputStream(fileStream);
Product product = (Product)in.readObject();
out.close()
...
真正发生了什么
- Bean 的实例没有被序列化
如果 Bean 实例本身被序列化,当它被重新构建时一个新的实例需要被创建这就丢失了实例池的意义
- Bean 的状态被序列化
每个属性需要被单独考虑
什么会被序列化?
- 一个可序列化 (serializable) 的对象
- 一个 null
- 对特定不可序列化对象的直接引用:
- 一个 Bean 的 home 或 remote 接口的引用
- 对 SessionContext 的引用
- 对不可序列化部分的直接引用的序列化
- 容器必需对不可序列化的 EJB 在钝化时保存它们的 remote 和 home 接口
- 也许依赖于 Java 的 java.io.ObjectOutputStream 和 java.io.ObjectInputStream 中的对象替换技术来实现
部分序列化
- 构成状态的每样属性必需是可序列化的
- 所有属性的内容必需包含可序列化的值
- Helper 类
- 否则容器可以选择在钝化时回收该 Bean 实例
部属有状态会话 Bean
Bean 也有属性:从 Server Configuration 中可以访问到它们

常见错误
- 忘记将 Bean 设为 "stateful"
- 注意要好好测试您的 Bean
- "Ghost" 数据 (来自其它实例) 可能意味着您忘记将 "state management" 属性设正确
- 在初始函数和构造函数中设置状态
也会产生 "Ghost" 数据
本章讲述内容
- 会话 Bean 的实例是被共享的
- 在 create 方法中初始化 Bean,而不是在构造函数或初始化函数中
(未完待续)