java - 向 Quartz 作业的迁移代码不起作用(因为需要会话范围的 bean)
问题描述
我在 Quartz 作业中迁移了一个异步运行的代码。
现在,当我尝试使用会话范围视图时出现此错误,该视图在石英作业完成时调用:
org.quartz.JobExecutionException:org.springframework.beans.factory.BeanCreationException:创建名为“scopedTarget.vaadinView”的bean时出错:范围“会话”对当前线程无效
org.springframework.beans.factory.BeanCreationException:创建名为“scopedTarget.vaadinView”的bean时出错
我的豆是:
@Scope(value = "session", proxyMode = ScopedProxyMode.INTERFACES)
public class VaadinView implements View, DisposableBean
我知道 Quartz 作业在另一个线程上运行,会话上下文丢失了。因此,在调用作业之前,我将请求属性存储在作业本身中
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
然后,在调用会话范围的 bean 之前,我正在恢复请求属性:
RequestContextHolder.setRequestAttributes(attributes); // workaround
vaadinView.doSomethingOnUI(); // error here
问题是现在 a 有同样的错误,但有另一条消息,告诉我会话是必需的:
Caused by: java.lang.IllegalArgumentException: Session must not be null
at org.springframework.util.Assert.notNull(Assert.java:134)
at org.springframework.web.util.WebUtils.getSessionMutex(WebUtils.java:403)
at org.springframework.web.context.request.ServletRequestAttributes.getSessionMutex(ServletRequestAttributes.java:253)
at org.springframework.web.context.request.SessionScope.get(SessionScope.java:91)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:346)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.aop.target.SimpleBeanTargetSource.getTarget(SimpleBeanTargetSource.java:35)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:192)
我的问题是:如何使用石英作业线程来更新 UI
注意:我正在使用 Grails + Vaadin + SpringBoot
解决方案
推荐阅读
- docker - Keycloak very high resource usage in Docker
- python - 将数据框中所有列的 timedelta 更改为整数
- python - 如何通过类似的字段值在 django 模型中创建最新的对象?
- c# - 结束 += (s, e) =>
- botframework - How do we get to know to which response user has reacted(like/dislike) on MS teams?
- c# - DataTable importrow 跳过一些值
- wso2 - wso2 身份服务器不记名令牌
- django - 如何在 Django 中发送带有 html 页面的电子邮件?
- c# - 如何将 Azure Service Fabric Linux VM 指标获取到 Application Insights?
- javascript - HighCharts:饼图中未显示总值