无状态EJB问题

时间:2020-03-06 14:48:01  来源:igfitidea点击:

我们有一个无状态的EJB,它位于Web服务(EJB3)的后面,该EJB还加载了EntityManager,它在其进行的调用中传递。对此,我有一个问题。

对Web服务的同时调用是否使用相同的EJB或者存在不同的实例?我问这个问题,特别是关于注入的EntityManager的使用。

谢谢

解决方案

取决于Application服务器使用相同还是不同。我们可能会认为它们好像是不同的。

现在,如果我们要注入它,我假定我们已将其声明为实例变量,这对于无状态EJB是一个非常糟糕的主意,因为好了。它不应该具有状态。

让应用服务器完成其工作,而不是注入EntityManager,我们只需从上下文中进行操作即可。来自无状态的每个方法调用都属于一个事务,并且不会干扰其他调用。

总结:假设它们是不同的实例,并且不要向自己注入此类对象。从应用服务器负责离开它们的上下文中获取它们。

希望我能正确理解问题。