从字面上理解不困难,stateless不保留用户信息,stateful保存,我的问题是,stateful怎么知道请求来自同一用户,或者是不同用户呢,从调用方法上,有什么区别呢
就一个网上用的很多的买东西的例子,用stateful bean写一个买东西的程序,
  Cart cart = (Cart)context.lookup("CartBean");
            
            System.out.println("Adding items to cart");
            
            cart.addItem("Pizza");
            cart.addItem("Pasta");
            cart.addItem("Noodles");
            cart.addItem("Bread");
            cart.addItem("Butter");
我直观的觉得,这里就算把CartBean改成stateless也区别不大,因为我已经得到这个stateful bean的引用了。还是说如果是stateless的话,其他用户操作additem的时候,可能会操作同一个session bean, 这样可能会添加到同一个list中,从而造成混乱

解决方案 »

  1.   

    stateful 表示保存有永久性数据,需要跨调用域保证其中数据的有效性。
    stateless 表示不保存永久性数据,当然可以有临时性数据,但只在当下可以使用这些数据,不在当下这些数据不被保证。所以放在 stateful bean 中的数据应该实现 Serializble 接口,而在 stateless bean 中的成员变量在定义时最好加上 transient 关键字。
      

  2.   

    http://lonvea.javaeye.com/blog/556362
      

  3.   

    有兴趣的话,可以看一下这个帖子
    http://topic.csdn.net/u/20091026/15/d2705875-147c-4945-870a-f57b1115b608.htmlSession Bean 中所谓的状态指的是 Session Bean 中的成员字段状态。一般来说,如果 Session Bean 中有成员字段的话,那就不能使用 Stateless Session Bean 了,只能使用 Stateful 的了。