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

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

编写有状态的(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;  
public interface ShoppingCart  
{  
   //  添加某个商品信息ITPUB个人空间  
    public void addCommodity (String value);  
  //  获得客户购买的所有商品的纱衔泥ITPUB个人空间!  
    public List getCommodity();  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

 

为了方便,在这里只将商品名保存在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 shoppingCart = new ArrayList();  
 
 public void addCommodity(String value)  
 
        shoppingCart.add(value);          }  
      public List getCommodity()  
   {        return shoppingCart;  
    }      
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
   

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

package test;  
 
import java.util.List;  
import java.util.Properties;  
import javax.naming.InitialContext;  
import service.ShoppingCart;  
 
public class Client  
{  
 
    public static void main(String[] args) throws Exception  
    {  
        Properties prop = new Properties();  
        InitialContext ctx = new InitialContext();  
        ShoppingCart shoppingCart = (ShoppingCart) ctx  
                .lookup("ShoppingCartBean/remote");  
        shoppingCart.addCommodity("自行车");  
        shoppingCart.addCommodity("笔记本电脑");  
        shoppingCart.addCommodity("液晶电视");  
        List<String> commodities = shoppingCart.getCommodity();  
        for(String commodity: commodities)  
        {  
            System.out.println(commodity);  
        }  
 
    }  
 

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
责任编辑:佚名 来源: 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-24 15:57:44

JPQL命名查询

2009-06-10 12:34:01

Session BeaEclipse+JBo

2009-06-24 15:58:15

EntityManag

2009-06-10 11:09:40

配置文件SessionEclipse+JBo

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

2024-10-16 15:16:37

Python装饰器开发

2021-01-27 11:32:12

接口测试代码

2009-06-17 08:51:26

Eclipse启动JB

2009-06-17 09:01:20

JBoss访问EJB

2009-06-16 15:15:18

WebLogic EJ
点赞
收藏

51CTO技术栈公众号