无法从计划任务中获取安全上下文
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()
方法中你可以做任何你想做的事情,包括程序化事务管理。
我收到错误
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()
方法中你可以做任何你想做的事情,包括程序化事务管理。