无法从计划任务中获取安全上下文

Can't get security context from scheduled task

我收到错误

org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task.

java.lang.SecurityException: No security context bound to the current thread

在核心模块上使用计划任务在应用程序启动时执行一次任务:

<task:scheduled-tasks scheduler="scheduler">
    <task:scheduled ref="app_OlapService" method="initialize" fixed-rate="9223372036854775807"/>
</task:scheduled-tasks>

我已经在注入的 Authentication 实例上尝试了 @Authenticated 注释和 authentication.begin()。

看起来像是调度单独引发的错误,我也遇到了空方法体的相同错误

考虑到我需要使用事务并且 @PostConstruct AppContext.Listener 不允许我这样做,我也对其他方法持开放态度。

也许您正在调用服务的方法。此类调用会被拦截并检查是否存在有效的用户会话,因此它在调用时应该已经存在。它在从客户端或已通过身份验证的中间件代码调用服务时起作用。

对于您的情况,我建议将逻辑从服务提取到托管 bean,并从服务和调度程序调用它。

至于AppContext.Listener,在applicationStarted()方法中你可以做任何你想做的事情,包括程序化事务管理。