Java 当从JAX-RS和EJB调度程序/CXF、OpenEJB调用相同的EJB时,如何传播主体
我有一个BusinessEJB,它正在创建一些数据库实体,它必须知道当前记录的主体。 这个EJB可以通过REST(通过另一个@Path注释的代理EJB)调用,也可以从JAX-RS上下文中调用——直接从其他EJB调用——甚至是EJB调度程序调用 问题是如何使用一个通用解决方案将主体传播到此EJB—在JAX-RS调用期间,我可能会从令牌中获取主体(我尝试设置SecurityContext,但它只传播到@Path注释类—而不是最终EJB),以及如何为EJB计时器调用的调用设置“系统”主体。 我使用了一些本地解决方案,但我相信一定有合适的方法Java 当从JAX-RS和EJB调度程序/CXF、OpenEJB调用相同的EJB时,如何传播主体,java,jakarta-ee,ejb,jax-rs,Java,Jakarta Ee,Ejb,Jax Rs,我有一个BusinessEJB,它正在创建一些数据库实体,它必须知道当前记录的主体。 这个EJB可以通过REST(通过另一个@Path注释的代理EJB)调用,也可以从JAX-RS上下文中调用——直接从其他EJB调用——甚至是EJB调度程序调用 问题是如何使用一个通用解决方案将主体传播到此EJB—在JAX-RS调用期间,我可能会从令牌中获取主体(我尝试设置SecurityContext,但它只传播到@Path注释类—而不是最终EJB),以及如何为EJB计时器调用的调用设置“系统”主体。 我使用了一
@Stateless
class BusinessEJB
{
public void createRecord() {
...
currentUser = ?????????
newEntity.setCreatetBy( currentUser.. );
}
}
@Path("/api")
class RestEJB {
@EJB
BusinessEJB businessEJB;
public void createRecord() {
businessEJB.createRecord();
}
}
class SchedulerEJB
{
@EJB
BusinessEJB businessEJB;
@Shedule
private void sheduleFn() {
// here we should set some system user context ???
businessEJB.createRecord();
}
}
您是否尝试过使用
SessionContext#getCallerPrincipal()
?您是否尝试过使用SessionContext#getCallerPrincipal()
?和