Eclipse+JBoss+EJB3编写有状态的SessionBean

开发 后端
面将编写一个简单的购物车的例子,该例子将客户购买的商品都保存在stateful sessionbean

编写有状态的(Stateful)的Session Bean也非常简单,只需要将无状态注释(@Stateless)改成有状态注释(@Stateful)即可。如果使用Stateful Sessionbean,客户端在使用同一个SessionBean对象实例时可以保存状态,也就是说,在多次引用该对象时实际上在服务端是使用的同一个 Sessionbean的对象实例,而无状态sessionbean使用了不同的sessionbean对象实例,因此,是无法保存状态的。

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

  1. package service;  
  2. import java.util.List;  
  3. import javax.ejb.Remote;  
  4. public interface ShoppingCart  
  5. {  
  6.    //  添加某个商品信息ITPUB个人空间  
  7.     public void addCommodity (String value);  
  8.   //  获得客户购买的所有商品的纱衔泥ITPUB个人空间!  
  9.     public List getCommodity();  

 

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

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

  1. package service;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4. import javax.ejb.Stateful;  
  5. @Stateful 
  6. public class ShoppingCartBean implements ShoppingCart  
  7.     private List shoppingCart = new ArrayList();  
  8.  
  9.  public void addCommodity(String value)  
  10.  
  11.         shoppingCart.add(value);          }  
  12.       public List getCommodity()  
  13.    {        return shoppingCart;  
  14.     }      
   

最后我们编写一个客户端调用程序,代码如下:

 

  1. package test;  
  2.  
  3. import java.util.List;  
  4. import java.util.Properties;  
  5. import javax.naming.InitialContext;  
  6. import service.ShoppingCart;  
  7.  
  8. public class Client  
  9. {  
  10.  
  11.     public static void main(String[] args) throws Exception  
  12.     {  
  13.         Properties prop = new Properties();  
  14.         InitialContext ctx = new InitialContext();  
  15.         ShoppingCart shoppingCart = (ShoppingCart) ctx  
  16.                 .lookup("ShoppingCartBean/remote");  
  17.         shoppingCart.addCommodity("自行车");  
  18.         shoppingCart.addCommodity("笔记本电脑");  
  19.         shoppingCart.addCommodity("液晶电视");  
  20.         List<String> commodities = shoppingCart.getCommodity();  
  21.         for(String commodity: commodities)  
  22.         {  
  23.             System.out.println(commodity);  
  24.         }  
  25.  
  26.     }  
  27.  
责任编辑:佚名 来源: BlogJava
相关推荐

2009-06-10 12:54:35

无状态的SessionEclipse+JBo

2009-06-24 15:59:04

消息驱动Bean

2009-06-24 15:56:47

实体Bean连接策略

2009-06-10 11:42:26

Session BeaEclipse+JBo

2009-06-24 15:47:13

实体Bean

2009-06-10 12:34:01

Session BeaEclipse+JBo

2009-06-24 15:57:44

JPQL命名查询

2009-06-10 11:09:40

配置文件SessionEclipse+JBo

2009-06-24 15:58:15

EntityManag

2009-06-24 15:53:08

Entity Bean多对多映射

2009-06-24 15:51:47

Entity Bean一对多映射

2009-06-24 16:00:00

2009-06-24 15:49:54

Entity Bean一对一映射

2009-06-24 15:55:09

EclipseJBossJ2ee

2009-06-15 16:06:25

JBoss IDE

2021-01-27 11:32:12

接口测试代码

2009-06-17 08:51:26

Eclipse启动JB

2009-06-17 09:01:20

JBoss访问EJB

2009-06-26 15:36:27

Session BeaEJB

2009-06-16 15:15:18

WebLogic EJ
点赞
收藏

51CTO技术栈公众号