当前位置: 首页 > 知识库问答 >
问题:

为购物车EJB使用@stateful和@sessionscoped

田德运
2023-03-14

我知道在web应用程序中使用有状态EJB和无状态EJB有很多争论。

购物车是最常见的用例:Oracle的Java EE示例在正式文档中也大量使用它。

在stackoverflow上,我找到了很多有趣的答案,比如JavaEE中的购物车困境,这经常会说:

好吧...SFSB在企业、复杂场景中很好,例如,如果您希望与其他应用程序共享它们,并且使它们不仅对JSF/Web客户机可用

但是...如果您只是在开发您爷爷的电子商务网站,只需坚持使用HttpSession/SessionScoped CDI管理的bean,并用SLSB编写您的业务方法,因为它们更高效,以此类推...

然而,因为我还在学习和发现阶段,我只想给SFSB一个尝试,一个人,尝试建立一个简单的购物车。

我看到了一个有趣的教程,建议在HttpSession中存储一个从JNDI检索的@Stateful shopping cart ejb接口实例,这是web客户端第一次需要它的时候,然后在web会话期间照常使用它。在我的JSF表示层中,我想我会有一个@sessionscoped@命名的bean(我们称之为ShopController),并且在它的初始化中,将有状态ejb的一个实例存储在实例变量中。

我想知道是否可以通过使用@SessionScoped CDI注释将@Stateful bean直接绑定到http会话。

它会像上面描述的那样工作吗?CDI会为每个web会话创建一个SFSB吗?

共有1个答案

单嘉泽
2023-03-14

@sessionscoped用于@namedbean,而@statefule用于@ejbbean。如果我没有错,那么您不能同时对bean进行注释。如果要使用@statefule,只需用@ejb@local注释shoppingcartbean,然后在shopcontroller中引用它。类似这样的事情:

@Named
@SessionScoped
public class ShopController {
    ...
    @EJB
    private ShoppingCart cart;
    ...

    // Getters and Setters
}

@Local
@Stateful
public class ShoppingCart {
    ...
}
 类似资料:
  • 购物车 手淘iOS 5.2.5 Android 5.2.7,天猫客户端暂未支持 Tida.cart({ sellerNick: "莱夫箱包旗舰店", itemId: "42828909348", skuId: "73068526031" }, function (data) { alert(JSON.stringify(data)); }); 该接口支持SPI回

  • 购物车类允许项目被添加到session中,session在用户浏览你的网站期间都保持有效状态。这些项目能够以标准的 "购物车" 格式被检索和显示,并允许用户更新数量或者从购物车中移除项目。 请注意购物车类只提供核心的"购物车"功能。它不提供配送、信用卡授权或者其它处理组件。 初始化购物车类 重要:购物车类利用 CodeIgniter 的 Session 类把购物车信息保存到数据库中,所以在使用购物

  • 购物车类允许项目被添加到 session 中,session 在用户浏览你的网站期间都保持有效状态。 这些项目能够以标准的 "购物车" 格式被检索和显示,并允许用户更新数量或者从购物车中移除项目。 重要 购物车类已经废弃,请不要使用。目前保留它只是为了向前兼容。 请注意购物车类只提供核心的 "购物车" 功能。它不提供配送、信用卡授权或者其它处理组件。 使用购物车类 初始化购物车类 将一个项目添加到

  • 我试图从以下链接实现这个购物车示例http://o7planning.org/en/10605/create-a-java-shopping-cart-web-application-using-spring-mvc-and-hibernate 我使用了与它相同的代码。但我得到了以下错误。 有人能帮我解决这个吗?

  • 本文向大家介绍Python实现购物车购物小程序,包括了Python实现购物车购物小程序的使用技巧和注意事项,需要的朋友参考一下 概要 按理说,我们入门的第一个小程序都应该是Hello World。因为比较简单,我这也就不做过多的演示 了。 下面是我写的一个小程序。主要用于练习Python的基本语法,以及入门。 主要实现功能 要求用户输入自己预期消费额度. 展示现有商品信息,要求用户选择 用户选择对

  • 最初,我选择了一个包(Woo订阅) 然后添加了所有详细信息。 但未提交。 回到网站,所以再次购买我需要选择一个包。所以我选择了这个包,并填写了详细信息,然后转到付款包。 现在在我的购物车中,两个包都存在(即我没有第一次购买就选择的包和最近的包) 如何修复此问题,使最新选定的一个在购物车中,而较早的一个在选定最新的一个后立即删除。 我尝试了这个Woocommerce从购物车中删除所有产品,并将当前产