spring - 让 Spring 计划任务与任务执行器线程一起运行

标签 spring jakarta-ee websphere workmanagers

背景:我在 Websphere 7 应用程序中使用 Spring 3.0.x 来获取 CommonJ WorkManager 和 TimerManager。我使用它们在部署的应用程序中以一定的时间间隔执行任意任务。

问题:

我刚刚了解到,在调度程序中设置 bean 时,如下所示:

<bean id="threadTest" class="test.ThreadTester" />

<task:scheduled-tasks scheduler="myTimerExecutor">
    <task:scheduled ref="threadTest" method="execute" fixed-delay="300000" />
</task:scheduled-tasks>

在Websphere中,它将直接在TimerManager线程池中运行ThreadTester类。该线程池比 WorkManager 线程池具有更高的优先级(和更少的线程)。我希望线程与 WorkManager 一起运行,而不是处于正确的优先级,并使用为线程设置的正确资源。

作为替代方案,我可以在 ThreadTester 类中使用 Spring @Scheduled 注释,如下所示:

@Scheduled(fixedDelay = 300000)
public void execute() {
    ...
}

问题:

使用@Scheduled注解是否会使调度类在TimerManager线程池或WorkManager线程池中运行?

如果它使用 WorkManager 运行,那就太好了!这解决了我的问题。但是,如果它使用 TimerManager 直接执行该类,那么我想我必须编写一些包装器才能正确调用 WorkManager。

感谢您的帮助!

编辑:这里我介绍了如何使用 Websphere 7 commonj 实现设置调度程序和执行程序:

<bean id="myTaskExecutor" class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor"> 
    <property name="workManagerName" value="wm/default" />
    <property name="resourceRef" value="true"/>
</bean>

<bean id="myTaskScheduler" class="org.springframework.scheduling.commonj.TimerManagerTaskScheduler"> 
    <property name="timerManagerName" value="tm/default" />
    <property name="resourceRef" value="true" />
    <property name="shared" value="false" />
</bean>

<task:annotation-driven executor="myTaskExecutor" scheduler="myTaskScheduler" /> 

最佳答案

嗯,我发现,确实,@Scheduled beans 是在 Websphere 7 上的 TimerManager 线程池中运行的。

我所要做的就是吐出线程的堆栈跟踪,以查看调用它的层次结构。

for(StackTraceElement element: Thread.currentThread().getStackTrace()) {
    logger.debug(element.toString());
}

关于spring - 让 Spring 计划任务与任务执行器线程一起运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11766170/

相关文章:

ruby-on-rails - Guard-RSpec 和 Spring : command `cmd: spring rspec` doesn't run the specs within Guard

java - 如何将 HSSFWorkbook 对象转换为 XSSFWorkbook?

java - 有状态 EJB 生命周期问题

java - 有没有办法以编程方式检索已部署 Artifact 的名称?

java - 无法解析 MVC View Spring MVC 3

jsf - 具有 CACHE_EL_EXPRESSIONS 的 WebSphere 9.0.5.3 和 MyFaces 2.2

java - 迷失在翻译中 - 编码

java - SSL 上 cookie 的默认行为

java - jstat : -gccapacity output

java - Tomcat返回http状态错误: 401, Reason Phrase: Unauthorized