在websphere中运行spring的workmanager任务执行器时收到异常。以下是我的代码
<bean id="workManager" class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor">
<property name="workManagerName" value="wm/MyWorkManager"/>
<property name="resourceRef" value="false"/>
</bean>
<bean name="myWorkManager" class="com.spring.test.services.concurrent.ConcurrentWorkManager" />
<bean name="myWorkListener" class="com.spring.test.services.concurrent.ConcurrentWorkListener" />我的ConcurrentWorkManager中的代码
@Autowired
private WorkManagerTaskExecutor workManager;
@Autowired
private WorkListener myWorkListener;
if(workList==null){
throw new WorkException("There are no works present in worklist to do work");
}
ArrayList<WorkItem> workItems = new ArrayList<WorkItem>();
for(Work work : workList){
workItems.add(workManager.schedule(work,myWorkListener));
}
workManager.waitForAll(workItems,WorkManager.INDEFINITE);
for(WorkItem work:workItems){
ConcurrentWorker worker=(ConcurrentWorker)work.getResult();
resultString.add(worker.getResult());
}现在,当我执行我的代码时,它在workmanager.schedule(work)方法上给出了stackoverflow异常
stackoverflow异常
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.schedule(WorkManagerTaskExecutor.java:202)
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.schedule(WorkManagerTaskExecutor.java:202)
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.schedule(WorkManagerTaskExecutor.java:202)
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.schedule(WorkManagerTaskExecutor.java:202)
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.schedule(WorkManagerTaskExecutor.java:202)
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.schedule(WorkManagerTaskExecutor.java:202)
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.schedule(WorkManagerTaskExecutor.java:202)
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.schedule(WorkManagerTaskExecutor.java:202)
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.schedule(WorkManagerTaskExecutor.java:202)
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.schedule(WorkManagerTaskExecutor.java:202)
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.schedule(WorkManagerTaskExecutor.java:202)
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.schedule(WorkManagerTaskExecutor.java:202)
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.schedule(WorkManagerTaskExecutor.java:202)
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.schedule(WorkManagerTaskExecutor.java:202)
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.schedule(WorkManagerTaskExecutor.java:202)
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.schedule(WorkManagerTaskExecutor.java:202)发布于 2014-01-12 19:17:55
如何在IBM Websphere (WS)应用服务器上设置和使用Spring WorkManagerTaskExecutor
(作者: Yosi Lev)
当在WS-AS下开发应用程序时,您必须运行线程,您应该创建并使用名为“Work-Manager”的特殊WS内部资源。这是在IBM Websphere应用服务器下运行托管线程的方法。
遵循以下步骤:首先,在Websphere上定义一个工作管理器资源,然后在Spring中连接并使用它:
登录到WS管理console
还要定义您的工作管理器JNDI名称,
例如: wm/taskex11
<bean id="myTaskExecutor"
class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor">
<property name="workManagerName" value="wm/taskex11" />
</bean> 注意!
See the "workManagerName" property value. The most important thing here, is to define the same Work-manager JNDI name you specified in the Websphere admin console on stage 5 (above). This is how Spring work-manager knows which WS JNDI it should locate to exploit WS defined resource.这似乎是在IBM WS AS下运行托管线程的唯一方法。
注入任何其他bean或资源时使用的其他应用程序bean:
@Autowired
private WorkManagerTaskExecutor workManagerTaskExecutor;方法:
Runnable r1 = new Runnable(){
@Override
public void run() {
for(int i = 0 ; i < 100;i++){
logger.info("run() method of Runnable. i=["+i+"], thread:["
+ Thread.currentThread().getName()+"]");
try {
Thread.sleep(500L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}//run
};//anonymous
workManagerTaskExecutor.execute(r1);
workManagerTaskExecutor.execute(r1);祝好运,
Yosi Lev
https://stackoverflow.com/questions/8930098
复制相似问题