有状态java bean_17.4 有状态会话Bean开发

17.4 有状态会话Bean开发

如前所述,有状态会话Bean,可以存储用户相关信息,在服务器端,一个Bean对象只为客户服务,本节编写有状态会话Bean。

编写有状态会话Bean很简单,以上节的ConvertBean.java为例,只需将代码中的"Stateless"改为"Stateful"即可。代码为:

ConvertBean.javapackage impl;

import itf.Convert;

import javax.ejb.Remote;

import javax.ejb.Stateful;

@Stateful (mappedName="ConvertBean")

@Remote

public class ConvertBean implements Convert {

public ConvertBean(){

System.out.println("ConvertBean构造函数");

}

public String getRmb(String usd){

//从数据库查询汇率,此处简化,假如汇率是6.0

doublerate=6.0;

doubledblUsd=Double.parseDouble(usd);

doubledblRmb=dblUsd* rate;

Stringrmb=String.valueOf(dblRmb);

return rmb;

}

}

其中,@ Stateful (mappedName="ConvertBean")

@Remote

表示该EJB是一个具有远程接口的有状态会话Bean。

部署,然后调用TestConvert1.java,在服务器端打印的结果为:

反复运行客户端,服务器端构造函数都有调用,效果如图17-22所示:

7a84154437835a0310227583eb187dd7.png

图17-22 显示效果

说明是一个EJB对象为相应客户端服务。不过,读者可能会提出一个问题:既然是一个EJB为一个客户服务,是否会出现大量的EJB对象消耗内存的情况呢?实际上,EJB中的"钝化"机制,会让长期不用的EJB对象,过了一段时间从内存中腾出空间,存入缓存。这是EJB的一个特性,读者可以参考相应文献。

另外,客户也可以手工让有状态会话Bean从实例池中删除。方法是:在远程接口和实现类中定义一个方法,并在实现类中为其注释为"@Remove":

Convert.java……

public interface Convert {

……

public void remove();

}

ConvertBean.java

……

public class ConvertBean implements Convert {

……

@Remove

public void remove(){

//释放资源

}

}

此后,客户端通过接口调用remove方法即可。

【责任编辑:云霞 TEL:(010)68476606】

点赞 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值