零星的javax.ejb.AccessLocalException

零星的javax.ejb.AccessLocalException,java,jakarta-ee,java-ee-6,glassfish-3,ejb-3.1,Java,Jakarta Ee,Java Ee 6,Glassfish 3,Ejb 3.1,我用的是Glassfish 3.0.1。在尝试调用本地EJB时,有时会出现以下错误: [#|2010-11-10T19:17:25.014+0000|INFO|glassfish3.0.1|javax.enterprise.system.core.security| _ThreadID=26;_ThreadName=Thread-1;|JACC Policy Provider: Failed Permission Check, context(myApplication/myWarModule-

我用的是Glassfish 3.0.1。在尝试调用本地EJB时,有时会出现以下错误:

[#|2010-11-10T19:17:25.014+0000|INFO|glassfish3.0.1|javax.enterprise.system.core.security|
_ThreadID=26;_ThreadName=Thread-1;|JACC Policy Provider: Failed Permission Check,
context(myApplication/myWarModule-1_0-SNAPSHOT_war_internal)- 
permission((javax.security.jacc.EJBMethodPermission MyEJB myMethod,Local,java.lang.Long))|#]

[#|2010-11-10T19:17:25.015+0000|WARNING|glassfish3.0.1|
javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=26;
_ThreadName=Thread-1;|A system exception occurred during an invocation on EJB 
MyEJB method public void com.example.MyEJB.myMethod(java.lang.Long)
javax.ejb.AccessLocalException: Client not authorized for this invocation.
    at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1850)
    at com.sun.ejb.containers.EjbAsyncTask.call(EjbAsyncTask.java:95)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)

99%的情况下,一切正常。但当它发生时,每次尝试调用该EJB方法都会导致相同的错误。解决此问题的唯一方法是取消部署应用程序,然后再次部署。有人能告诉我发生了什么吗?

您是如何实现EJB安全的?是通过AOP横切还是其他方法?可能是您的配置在某些情况下失败,也可能是Glassfish错误:)听起来像是死锁。可能在应用程序代码中,也可能在容器中。下次发生这种情况时,请在执行重新部署解决方案之前获得heapdump(kill-QUIT)。如果用户在报告可能的线程问题时向我发送heapdump,我可能会晚一点向他们发送鲜花:),但我想告诉大家,我可以通过关闭Glassfish并删除应用程序生成的策略文件来解决问题。见帕斯卡·蒂文特的回答:@MikeBaranczak你的建议很有帮助。将其重新添加为解决方案会很好。您是如何实现EJB安全性的?是通过AOP横切还是其他方法?可能是您的配置在某些情况下失败,也可能是Glassfish错误:)听起来像是死锁。可能在应用程序代码中,也可能在容器中。下次发生这种情况时,请在执行重新部署解决方案之前获得heapdump(kill-QUIT)。如果用户在报告可能的线程问题时向我发送heapdump,我可能会晚一点向他们发送鲜花:),但我想告诉大家,我可以通过关闭Glassfish并删除应用程序生成的策略文件来解决问题。见帕斯卡·蒂文特的回答:@MikeBaranczak你的建议很有帮助。将其重新添加为解决方案会很好