Java EJB2.x的原因是什么;“检测到可重入方法调用”;例外情况?如何解决这些问题?
我正在开发一个EJB2CMP遗留应用程序,它运行在JBoss4.0.4GA应用服务器上,并部署了实体/无状态会话bean。所有EJB样板代码都是通过XDoclet从EntityEJB/EntityEJBManager注释生成的 我注意到,当我的GUI客户端调用facadeJava 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”消息,该消息会回滚事务 这个例外意味着什么?我怎样才能避免出现这样的错误(不幸的是,
create
方法时,我的服务器日志中有很多EJBException案例,其中包含“Reentrant method call detected”消息,该消息会回滚事务
这个例外意味着什么?我怎样才能避免出现这样的错误(不幸的是,我还不能重现)
更新:然而,在我看来,它似乎说我的应用程序不能同时访问?它确实意味着所讨论的实体bean不能同时访问,这很有意义,因为它可能会损坏数据。我以前见过EJB1调用EJB2的情况,EJB2作为同一事务的一部分在容器内调用EJB1 您可以通过将EJB1标记为可重入来告诉容器允许此操作,这将允许在同一事务中多次访问它 这是在具有以下标记的部署描述符中完成的:
<reentrant>True</reentrant>
True
应该有一个对应的EntityEJB注释,XDoclet可以用来为您生成此注释。我们刚刚遇到了相同的问题,我们的解决方案是双重的。首先,我们确保在ejb-jar.xml中没有一个ejb具有NotSupported的事务属性。然后,我们使用“每个事务实例”作为乐观锁定策略。这有点像皮带和支架的方法,但它是有效的