【发布时间】:2017-07-03 09:28:58
【问题描述】:
我有以下设置:Wildfly 9 为远程 EJB 客户端提供服务,并运行一些 TimerTask 实例来执行一些逻辑。
大多数 EJB 方法由远程客户端调用,因此是安全的(通过 @RolesAllowed)。 现在,其中一些方法也将由服务器中的 TimerTask 调用,在这种情况下,我没有主体或安全上下文,这会导致 EJB 方法调用失败。
我的解决方法是这样的:
EJB:
@RolesAllowed({"readRole"})
public void readSomething() {
this.readSomethingImpl();
}
public void readSomethingUnrestricted() {
this.readSomethingImpl();
}
readSomething() 是远程接口的一部分,readSomethingUnrestricted() 是本地接口的一部分。
缺点是我有一组相当大的 EJB 服务方法,我不想复制所有方法(一个限制用于远程调用,一个不限制用于本地调用)。
有没有更好的方法来实现这个?
谢谢!
【问题讨论】:
标签: java security jakarta-ee ejb wildfly