我在 Weblogic Application Server 10.3.2 上运行了以下代码。在 timerExpired 上执行的长时间运行的任务花费的时间比服务器范围的 StuckThreadMaxTime 长 600 秒。我不想修改此值,而只是忽略此特定处理线程的卡住线程超时。
我可以从这里看到如何使用 commonj WorkManager 来完成:http: //download.oracle.com/docs/cd/E11035_01/wls100/config_wls/self_tuned.html#wp1069945
然后将以下内容添加到 weblogic.xml 文件中的 work-manager 标记中:
<ignore-stuck-threads>true</ignore-stuck-threads>
但是我到底如何为 Timer/TimerManager 做同样的事情呢?
web.xml
<resource-ref>
<res-ref-name>tm/TestTimer</res-ref-name>
<res-type>commonj.timers.TimerManager</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Unshareable</res-sharing-scope>
</resource-ref>
测试定时器.java:
import commonj.timers.Timer;
import commonj.timers.TimerListener;
import commonj.timers.TimerManager;
public class TestTimer implements TimerListener {
public void init()
TimerManager timerManager =
(TimerManager)initContext.lookup("java:comp/env/tm/TestTimer");
timerManager.schedule(this, SCHEDULE_DELAY);
}
@Override
public void timerExpired(Timer timer) {
// perform long-running task
}
}