Welcome 微信登录

首页 / 软件开发 / JAVA / eclipse+JBoss 5+EJB3开发指南(2):编写有状态的SessionBean

eclipse+JBoss 5+EJB3开发指南(2):编写有状态的SessionBean2011-09-18 blogjava 哈佛校训编写有状态的(Stateful)的Session Bean也非常简单,只需要将无状态注释(@Stateless)改成有状 态注释(@Stateful)即可。如果使用Stateful Sessionbean,客户端在使用同一个SessionBean对象实例 时可以保存状态,也就是说,在多次引用该对象时实际上在服务端是使用的同一个Sessionbean的对象实 例,而无状态sessionbean使用了不同的sessionbean对象实例,因此,是无法保存状态的。

下面将编写一个简单的购物车的例子,该例子将客户购买的商品都保存在stateful sessionbean中的 List对象中。然后在客户端使用同一个sessionbean的对象实例输出这些商品。我们首先来实现一个 sessionbean的远程接口,这和无状态sessionbean是一样的。代码如下:

package service;

import java.util.List;
import javax.ejb.Remote;
@Remote
public interface ShoppingCart
{
// 添加某个商品信息
public void addCommodity (String value);
// 获得客户购买的所有商品的纱衔泥
public List<String> getCommodity();
}

为了方便,在这里只将商品名保存在List对象中,读者也可以在List对象中保存更复杂的信息,如使 用一个对象来保存商品信息。

下面来编写具体的Stateful sessionbean,代码如下:

package service;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateful;

@Stateful
public class ShoppingCartBean implements ShoppingCart
{
private List<String> shoppingCart = new ArrayList<String>();

@Override
public void addCommodity(String value)
{
shoppingCart.add(value);
}

@Override
public List<String> getCommodity()
{
return shoppingCart;
}
}