Java 在Wildfly 9上以匿名用户身份访问安全EJB

Java 在Wildfly 9上以匿名用户身份访问安全EJB,java,security,jakarta-ee,ejb,wildfly,Java,Security,Jakarta Ee,Ejb,Wildfly,我有以下设置:Wildfly 9为远程EJB客户机提供服务,并运行一些执行某些逻辑的TimerTask实例 大多数EJB方法由远程客户端调用,因此是安全的(通过@RolesAllowed)。 现在,其中一些方法也将由服务器内的TimerTask调用,在这种情况下,我没有主体或安全上下文,这会导致EJB方法调用失败 我的解决方法如下: EJB: readSomethingUnrestricted()是远程接口的一部分,readSomethingUnrestricted()是本地接口的一部分 缺点是

我有以下设置:Wildfly 9为远程EJB客户机提供服务,并运行一些执行某些逻辑的TimerTask实例

大多数EJB方法由远程客户端调用,因此是安全的(通过@RolesAllowed)。 现在,其中一些方法也将由服务器内的TimerTask调用,在这种情况下,我没有主体或安全上下文,这会导致EJB方法调用失败

我的解决方法如下:

EJB:

readSomethingUnrestricted()是远程接口的一部分,readSomethingUnrestricted()是本地接口的一部分

缺点是我有一组相当大的EJB服务方法,我不想复制所有这些方法(一个用于远程,一个用于本地调用)

有没有更好的方法来实现这一点


谢谢

你应该能够通过注释你的计时器任务来完成你想要的。

谢谢你,史蒂夫。不幸的是,这个问题仍然存在。查看文档,此注释位于类级别。仍然得到相同的错误。我的TimerTask是EAR内部战争的一部分,它试图在同一个EAR的JAR中与EJB“对话”,这可能会有所不同。
@RolesAllowed({"readRole"})
public void readSomething() {
    this.readSomethingImpl();
}


public void readSomethingUnrestricted() {
    this.readSomethingImpl();
}