how to destory a stateful session bean when network is unavailable

问题描述

Inclientsidethereisablockwhichinvoketheremove()methodtodestorythestatefulsessionbean.Butifthenetworkisunavailablebeforetheremove()isinvoked,whatshouldwedotodestorythatstatefulseesionbeantoreleasetheresourcesithasoccupiedinordertonotcausememoryleak?Thanksforyourreply....

解决方案

解决方案二:
嗨,英文不行。帮不了你了~
解决方案三:
就是说:对于有状态会话bean,在客户端我们会写一个remove()去销毁这个bean来释放他所占用的资源。但是如果在客户端执行remove()之前,网络断掉了,那么为了收回资源,防止内存泄漏,有什么方法可以让jboss在服务器端自动销毁这个sessionbean?
解决方案四:
session.remove();session.invalidate();

解决方案五:
首先jboss如何得知网络断掉这种异常呢?
解决方案六:
做了实验,发现jboss根本捕获不到网络断掉的异常。。。
解决方案七:
建议用下事务管理机制!
解决方案八:
楼上可不可以说的仔细一点啊?
解决方案九:
楼主能不能设置失效时间,让系统发送请求给连接,如果没有反应,就remove。
解决方案十:
我个人的建议是在服务器端控制客户端的活动时间,用时间片段轮换给客户端使用,如果连续的不可达,则表示网络断开,这个控制都是服务器端定义使用
解决方案十一:
这是不是违背了ejb的初衷?回复8楼:不知道去哪里设置这个实效时间。。。jboss中的standardjboss.xml的那个30分钟的设置没看出起到什么作用,30分钟後,服务器并没有remove()那个sessionbean因为资源没有被释放,内存还是被占用着。jboss-service.xml中也只是设置transaction的实效时间这个应该是和数据库的交互时间吧,服务器在时间到期之后并没有remove()。另外,还有这个remove()在服务器端可以自己调用吗?
解决方案十二:
引用5楼leleconnie的回复:

做了实验,发现jboss根本捕获不到网络断掉的异常。。。

ifConnection.colse
解决方案十三:
justasisaidtoyouattheotherreplaywithchinese....
解决方案十四:
session.remove();session.invalidate();

时间: 2024-10-22 20:27:14

how to destory a stateful session bean when network is unavailable的相关文章

关于Stateful Session Bean的生命周期问题

问题描述 在Glassfish的EJB容器设置中,EJBCache的一个选项CacheResizeQuantity:缓存中的Bean达到最大数目后,被容器从备份存储中删除的钝化Bean的数目.为什么缓存中Bean达到最大数目后要从备份存储中删除钝化Bean呢?这对解决缓存无法增加Bean实例有什么作用呢?而且还有一个选项是RemovalSelectionPolicy:从缓存中删除有状态Bean依据的策略.这一项应该是和上一项结合使用的吧,那么既然是从缓存中删除有状态Bean,就应该是缓存中的Be

对EJB中Session Bean的见解

一.Enterprise Beans 在EJB(Enterprise Java Beans)中定义了两种不同类别的Enterprise Bean : *会话 Bean (Session Bean) *实体Bean (Entity Bean) 1. 会话 Bean (Session Bean) 会话 Bean 是调用它的客户端代码要完成的工作.当客户端与服务器建立联系,那么一个会话 Bean 就建立起来了.根据会话 Bean 的状态不同有分为: A. 状态会话 Bean (Stateful Ses

eclipse + JBoss 5 + EJB3开发指南(4):Session Bean中的注释方法

有时需要在Session Bean中初始化和释放一些资源.这些工作应该在SessionBean的@PostConstruct和 @PreDestroy方法中进行.其中用@PostConstruct注释的方法在SessionBean的构造方法调用之后以后EJB 容器在处理完一些其他工作后调用.用@PreDestroy注释的方法在SessionBean的对象实例被EJB容器销毁 之前调用. 除此之外,当有状态的SessionBean存在一定时间未被调用时,EJB容器会将该SessionBean对象钝

JBuilder2005+JBoss-4.0.2RC1+J2SDK1.5+Log4j 开发Session Bean例解(3)

session 作者:Junsan Jin 日期:2005-3-30 版本:1.0 信箱:junsan21@126.com ; junnef21@sohu.com 声明:本人保留本文的所有权利. 第三部分:开发Session Bean  新建EJB模块: 选择菜单:New〉Enterprise〉EJB〉EJB Designer,弹出对话框中选择New,选择Create empty EJB Module,点击next,填入名称Trader,一路OK即可.  设计EJB: 1.新建session b

JBuilder2005+JBoss-4.0.2RC1+J2SDK1.5+Log4j 开发Session Bean例解(4)

session 作者:Junsan Jin 日期:2005-3-30 版本:1.0 信箱:junsan21@126.com ; junnef21@sohu.com 声明:本人保留本文的所有权利. 第四部分:测试Session bean 在前面的三个部分已经完整地讲述了一个Session Bean的建立过程.下面来建立测试工程.   添加测试类: 在右边的树型菜单中选中com.inspiresky.trader右键 〉new 〉package,在对话框的输入框最后添加user,新建com.insp

eclipse + JBoss 5 + EJB3开发指南(5):使用配置文件发布Session Bean

Session Bean除了可以使用注释来发布外,也可以使用相应的配置文件来发布.在这种情况下,就不 需要在接口和Session Bean中使用注释了.在JBoss中需要两个文件对Session bean进行配置.这两个文 件是ejb-jar.xml和jboss.xml.这两个文件应该META-INF目录中,该目录应该放在jar文件的根目录. ejb-jar.xml文件负责配置session bean,下面是一个典型的配置代码: <?xml version="1.0" encod

Eclipse + JBoss 5 + EJB3开发指南(3):使用Session Bean的本地接口

有时客户端程序(如JSP.Servlet)会和EJB组件运行在同一个JVM上,如在同一个J2EE服务器(JBoss .Weblogic等)中运行.这时就没必要再通过远程(remote)接口访问Session Bean了,因为客户端和 session bean都在同一个jvm上,只需要通过本地接口(local)访问即可.就象直接访问本地类一样(当 然,不能直接访问EJB类,需要使用jndi和local接口来获得本地接口对象.当然,也可以通过remote接口 来访问ejb,不过这样会有一些性能损失.

循速渐进学用Session Bean(五)

创建一个实用的Session Bean HelloWorldSession例子的主要目的是帮助你熟悉一个session bean的整体结构.现在你已经熟悉了session bean的结构,你可以写一个更实用的bean了.特别地,你可以写一个由数据库中接收数据的bean. 以下的例子,假定你拥有一个SQL表格,里面包含有产品的代码和价格,你也可以使用以下SQL命令建立它: create table price(product_code varchar(10) not null primary ke

循速渐进学用Session Bean(四)

Session Bean要求.限制和许可 在EJB规范中,对Session Bean有一些限制和要求.这些限制会指出哪些是bean必须做的,哪些是不能做的,以及bean必须实现的一些方法和接口.也有一些规范指出哪些处理是允许做的,这是为了避免你以为这些处理是被其它限制禁止的. 实现SessionBean接口 session bean必须实现javax.ejb.SessionBean接口 声明该类为Public,而不是Final或者Abstract 要记住EJB容器需要创建bean实例,因此该类必