繁体   English   中英

为不同的用户界面共享一个有状态EJB?

[英]Share a Stateful EJB for different user interfaces?

我有一个EJB问题。

考虑我们有一个有状态的bean(一个简单的购物车),并且用户使用一个简单的桌面应用程序来获取会话,而不是用户可以使用mobile(另一个ui模块)或web来继续其过程,因此问题是:

当会话针对一个用户时,如何合并两个有状态会话?

我当时正在考虑保留所有会话,并且一旦用户尝试通过另一个模块继续其进程,系统将找到任何存在的会话并将其与新会话合并,但是它需要大量代码,并且可能会使系统复杂。 有什么属于EJB本身的吗?

还有一个问题是,无状态和单例EJB有什么区别?

当会话针对一个用户时,如何合并两个有状态会话? 有什么属于EJB本身的吗?

不,JEE中没有这样的合并。

但是,您可以在不同的客户端之间共享相同的状态引用。 使用JNDI查找或依赖项注入获得对有状态会话Bean的引用时,容器将创建一个新的有状态Bean实例,并为其分配一个唯一的对象标识。

ejb引用知道此唯一身份,因此,使用此引用进行的每个请求都将在同一Stateful实例中处理。

因此,将在同一Stateful实例中处理不同客户端通过相同引用提出的不同请求,从而允许在客户端之间共享Stateful状态。

容器负责序列化并发请求,因此您不必担心并发性。

您需要解决的是如何使此ejb的参考适用于所有客户。

还有一个问题是,无状态和单例EJB有什么区别?

除其他差异外,在上一个问题的上下文中更相关的是:

  • 无状态

    • 每个请求一个实例
    • 没有对话状态
  • 独生子

    • 每个应用程序一个实例
    • 有对话状态
    • 状态由所有客户端共享
  • 有状态

    • 每个客户一个实例(参考)
    • 有对话状态
    • 该状态仅适用于他的客户

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM