我在部署的包含一个有状态会话bean的Java Web应用程序时遇到问题。一切正常,直到我尝试调用这个bean。我得到一个例外:
javax.ejb.NoSuchObjectLocalException: The EJB does not exist. session-key: 1f0090bf8a25c4d1-6500a82656529888-2
我试图谷歌它,我发现这个异常意味着具有相应会话密钥的有状态会话bean不存在或由于某种原因被破坏。但是在我的localhost上一切正常。
根据网络上的一些文章,可能存在一些数据库错误导致该会话bean被销毁。我在MySQL错误日志中找不到任何内容。其他STATELESS会话bean工作正常,可以在数据库上运行而不会出现任何问题。
我被困在这里,不知道该尝试什么。你有什么想法可能有什么不对吗?有没有我必须在JDBC连接池或资源中设置以管理会话bean工作?
更新: 我相信来自日志的这些错误消息以某种方式解释错误:
[#|2013-05-09T18:32:31.386+0000|INFO|glassfish3.1.2|org.shoal.ha.cache.command.load_request|_ThreadID=27;_ThreadName=Thread-2;|Skipped Loading of 1f0090bf8a25c4d1-6500a8265c5d6306-c since there is only one instance running in the cluster.|#]
[#|2013-05-09T18:32:31.386+0000|SEVERE|glassfish3.1.2|javax.enterprise.system.container.ejb.com.sun.ejb.containers.util.cache|_ThreadID=27;_ThreadName=Thread-2;|NRU-cz.compoundsearch.resources.SimilarityResource: Cannot load from BACKUPSTORE FOR Key: <1f0090bf8a25c4d1-6500a8265c5d6306-c>|#]
[#|2013-05-09T18:32:31.387+0000|WARNING|glassfish3.1.2|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=27;_ThreadName=Thread-2;|EJB5184:A system exception occurred during an invocation on EJB SimilarityResource, method: public java.util.List cz.compoundsearch.resources.SimilarityResource.returnResults(java.lang.Integer,java.lang.Integer)|#]
答案 0 :(得分:0)
system exception occurred during an invocation on EJB
表示从bean中抛出了运行时异常。你肯定也在你的日志中,在你发布的最后一行之后。
当从EJB方法抛出未使用@AplicationException
注释的未经检查的异常时,该bean会立即被销毁,并且尝试调用它的任何方法都会导致此错误。
您能否解释一下如何使用Rest资源中的有状态 bean? Glassfish如何知道要调用哪个实例?上次我检查@ConversationScoped
或@SessionScoped
时,JAX-RS播放效果不佳。
答案 1 :(得分:-1)
你在哪里调用EJB?在会话bean中?在控制器? 转到实体,看看你是否改变了名字中的一个字符......
这种情况发生在我身上,问题是我错误地切换了一个角色 寻找名称(...)facade
错误地更改了一些大写字母
试着看看这个
适合我