Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EJB2.x的原因是什么;“检测到可重入方法调用”;例外情况?如何解决这些问题?_Java_Exception_Jboss_Ejb - Fatal编程技术网

Java EJB2.x的原因是什么;“检测到可重入方法调用”;例外情况?如何解决这些问题?

Java EJB2.x的原因是什么;“检测到可重入方法调用”;例外情况?如何解决这些问题?,java,exception,jboss,ejb,Java,Exception,Jboss,Ejb,我正在开发一个EJB2CMP遗留应用程序,它运行在JBoss4.0.4GA应用服务器上,并部署了实体/无状态会话bean。所有EJB样板代码都是通过XDoclet从EntityEJB/EntityEJBManager注释生成的 我注意到,当我的GUI客户端调用facadecreate方法时,我的服务器日志中有很多EJBException案例,其中包含“Reentrant method call detected”消息,该消息会回滚事务 这个例外意味着什么?我怎样才能避免出现这样的错误(不幸的是,

我正在开发一个EJB2CMP遗留应用程序,它运行在JBoss4.0.4GA应用服务器上,并部署了实体/无状态会话bean。所有EJB样板代码都是通过XDoclet从EntityEJB/EntityEJBManager注释生成的

我注意到,当我的GUI客户端调用facade
create
方法时,我的服务器日志中有很多EJBException案例,其中包含“Reentrant method call detected”消息,该消息会回滚事务

这个例外意味着什么?我怎样才能避免出现这样的错误(不幸的是,我还不能重现)



更新:然而,在我看来,它似乎说我的应用程序不能同时访问?

它确实意味着所讨论的实体bean不能同时访问,这很有意义,因为它可能会损坏数据。

我以前见过EJB1调用EJB2的情况,EJB2作为同一事务的一部分在容器内调用EJB1

您可以通过将EJB1标记为可重入来告诉容器允许此操作,这将允许在同一事务中多次访问它

这是在具有以下标记的部署描述符中完成的:

<reentrant>True</reentrant>
True

应该有一个对应的EntityEJB注释,XDoclet可以用来为您生成此注释。

我们刚刚遇到了相同的问题,我们的解决方案是双重的。首先,我们确保在ejb-jar.xml中没有一个ejb具有NotSupported的事务属性。然后,我们使用“每个事务实例”作为乐观锁定策略。这有点像皮带和支架的方法,但它是有效的