我有一个EJB问题。
考虑我们有一个有状态的bean(一个简单的购物车),用户使用简单的桌面应用程序获取其会话,而不是用户可以使用移动(另一个ui模块)或web继续其过程,所以问题是:
当会话是针对一个用户时,如何合并两个有状态会话?
我正在考虑保留所有会话,一旦用户尝试通过另一个模块继续其进程,系统将找到任何存在的会话并将其与新会话合并,但它需要很多代码并且可能使系统复杂化。有没有什么属于EJB本身呢?
另一个问题是,无状态和单例EJB有什么区别?!
答案 0 :(得分:1)
当会话为一个会话时,我将如何合并两个有状态会话 用户?有没有什么属于EJB本身呢?
不,JEE中没有这样的合并。
但是,您可以在不同的客户端之间共享相同的有状态引用。当您使用JNDI查找或依赖注入获得对有状态会话bean的引用时,Container会生成一个新的有状态bean实例,该实例将分配一个唯一的对象标识。
ejb引用知道此唯一标识,因此您使用此引用创建的每个请求都将在同一个有状态实例中处理。
因此,不同客户通过相同引用发出的不同请求将在同一有状态实例中处理,以允许在客户端之间共享Stateful状态。
容器负责序列化并发请求,因此您不必担心并发。
您需要解决的是如何向所有客户提供此ejb参考。
另一个问题是,无状态和单例EJB有什么区别?!
在其他差异中,上一个问题的相关性更为相关:
无状态
的Singleton
有状态