gpt4 book ai didi

websphere中的Spring commonj.Workmanager

转载 作者:行者123 更新时间:2023-12-01 10:31:40 26 4
gpt4 key购买 nike

在 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 异常

堆栈溢出异常
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)

最佳答案

如何在 IBM Websphere (WS) 应用服务器下设置和使用 Spring WorkManagerTaskExecutor

(约西列夫)

在 WS-AS 下开发应用程序并且您必须运行线程时,您应该创建并使用称为“工作管理器”的特殊 WS 内部资源。
这是在 IBM Websphere 应用服务器下运行托管线程的方法。

遵循以下阶段:首先,在 Websphere 上定义一个工作管理器资源,然后在 Spring 中连接并使用它:
1.登录WS管理控制台
2. 选择:资源 -> 异步 bean -> 工作管理器。
3. 选择范围服务器+单元
4.按[新建]按钮
5.定义一个工作经理
还定义您的工作经理 JNDI 名称,
例如:wm/taskex11
6. 在 spring-config-file.xml 添加如下:

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

笔记 !
请参阅“workManagerName”属性值。
这里最重要的是定义与您相同的 Work-manager JNDI 名称
在第 5 阶段(上图)的 Websphere 管理控制台中指定。
这就是 Spring 工作管理器如何知道它应该定位哪个 WS JNDI
利用 WS 定义的资源。

似乎这是在 IBM WS AS 下运行托管线程的唯一方法。
7. 因为你在 Spring 中定义了这个(stage-6)infra-bean,你可以将它注入(inject)到你的
注入(inject)任何其他 bean 或资源时的其他应用程序 bean:
@Autowired
private WorkManagerTaskExecutor workManagerTaskExecutor;

8、创建一个Runnable对象,提供给workManagerTaskExecutor的execute()
方法:
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);

祝你好运,
约西列夫

关于websphere中的Spring commonj.Workmanager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8930098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com