Bhu*_*han 7 java ejb java-ee stateful-session-bean
如果有状态会话bean要钝化,则将其状态写入硬盘,然后释放bean实例以提供其他请求(至少这是我的理解).当同一个客户端再次处于活动状态时,bean实例将从硬盘读取状态以重新获得状态.但是bean实例如何知道哪个客户端必须读取哪个文件来维护状态呢?
我是J2EE的新手,所以如果我问一个非常天真的怀疑,请原谅我.如果我需要了解任何其他主题来理解这一点,请指出我正确的方向.
Wil*_*ung 13
最好将状态会话Bean(SfSB)可视化为非常接近普通Java类的实例.您查找(或注入)SfSB的实例,容器将为您创建一个并返回实例.然后,您可以像处理任何其他Java实例一样使用该实例.
这意味着您可以将实例存储到会话中,将其序列化为磁盘等.
细节是您正在使用的实例实际上是实际的底层SfSB实例的代理.这不是真正的SfSB本身.
当您在bean的本地代理上进行调用时,将bean存入内存是容器作业.bean的钝化和激活是在幕后为您完成的(尽管您可以通过bean生命周期进入该过程).
容器需要找到钝化的SfSB的任何信息都存储在您正在使用的代理中,但这对您来说是不透明的.你不用担心它.
因此,在典型的基于Web的场景中,生命周期是您获取bean实例,将其存储在Web会话中,然后像平常一样简单地使用它.如果容器决定它需要钝化你的bean以腾出空间或其他什么,它会自动为你钝化它.当您的用户返回时,您的应用程序会从Web会话中提取实例并进行调用.那时,如果bean被钝化,容器将再次自动为你激活bean.整个机制取决于容器,但对您来说是透明的.重要的是要记住,你必须坚持从容器中获取的SfSB,就像你对任何java对象一样.
最后需要注意的是,如果您允许SfSB钝化太长时间,容器会自动为您删除它.
| 归档时间: |
|
| 查看次数: |
3584 次 |
| 最近记录: |