问题标签 [workmanagers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8329 浏览

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

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

问题:

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

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

作为替代方案,我可以像这样@Scheduled在类中使用 Spring 注释,而不是像上面那样在调度程序中设置 bean ThreadTester

问题:

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

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

谢谢你的帮助!

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

0 投票
0 回答
1148 浏览

jakarta-ee - EJB 并行处理的工作管理器

我需要并行化几个不同 EJB 的异步调用,在每个 EJB 中我都需要调用一个事务方法。我使用 WebLogic 的集群安装作为我的部署环境,理想情况下,我希望在集群的不同节点中的不同线程之间分配工作负载。

在找到有关该主题的先前 帖子后,我想使用 Work Managers 可能是我的环境的可行替代方案,但在阅读文档后,我留下了几个问题,如果有人有更多使用 Work 的经验,我将非常感激经理们可以对这些有所了解:

  1. 是否可以Work在 EJB 中实现接口,这样当run()方法被调用时,它可以调用该 EJB 的事务方法之一?我对异步和并发调用多个 EJB 感兴趣,每个 EJB 代表一个不同的工作单元,但我不知道工作管理器是否会将所需的执行上下文传播到我的 EJB。
  2. 如果我配置一个全局工作管理器,当我使用它时,它是否会自动在集群中的所有节点之间分配工作负载?还是发送给它的所有作品都将在同一个集群节点中执行,尽管在不同的线程中?- 如果是这种情况,我如何并行化我的工作负载,以使集群中的所有节点都能分担工作?

此外,如果有人可以提出不同的替代方案(而不是使用工作管理器),那就太好了,只要满足本问题第一段中的要求。

0 投票
0 回答
666 浏览

spring - 由 TimerManager 触发时如何在 WorkManager 中运行线程

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

背景 2:这是我之前的一个问题(标题不好)的后续问题,想知道从 TimerManager 触发的线程实际上是由 TimerManager 线程池还是从 WorkManager 线程池运行的(它最终是 TimerManager 线程水池)。 上一个问题:让Spring计划任务与任务执行器线程一起运行

问题:

当从 TimerManager 触发 WorkManager 线程池时,是否有一种简单或优雅的方式,使用 Spring 或其他方法来运行 WorkManager 线程池中的线程?

我更喜欢 Spring 解决方案,因为它更加与容器无关。

谢谢!

0 投票
1 回答
1715 浏览

jakarta-ee - 跨 WebLogic WorkManager 线程共享事务(使用 CommonJ)

我已经在我通过 JNDI 查找的实体 bean 上配置了工作管理器。更改背后的想法是对一些验证进行多线程处理,因为这可能很耗时,但这需要访问当前事务。

根据我的测试,似乎无法在工作线程中访问事务。我非常想在我的工作线程中访问事务 - 我可以这样做吗?

我希望做与此ExecutionContext类似的事情,其中​​在安排工作时传递 XID 对象,这意味着它继承了当前事务。WebLogic 支持吗?

这就是我所做的:

我已将工作管理器定义添加到weblogic-ejb-jar.xml如下:

在 bean 定义中添加了参考ejb-jar.xml

然后在我的代码中,我查找了工作管理器并安排了一些工作来执行。

我得到的输出如下所示,表明事务在生成的线程中不可用。是否可以将此事务共享到工作线程中?我认为他们已经将其作为 JCA 1.5 (JSR 112) 的一部分。

编辑:我也尝试过使用 weblogic.connector.work.WorkManager 和 javax.resource.spi.work.WorkManager,但是在执行 JNDI 查找时这些都没有返回。这些似乎确实允许将 ExecutionContext 传递给工作管理器,从而允许给出 XID。我对这些类的初始测试似乎不起作用。也许我错过了什么?

0 投票
2 回答
4004 浏览

multithreading - 需要示例代码解释 Tomcat 中的 Workmanager

我想知道如何在 Tomcat 7 中使用 WorkManager。我遇到了开源库Foo-CommonJ,但我没有找到解释用法的示例代码。FooWorkManager 的构造函数的输入参数是 commonj.work.work 类的一个实例,因为没有人提供commonj.work.work类(tomcat 和 foo-commonj 都没有)。基本上我需要一个示例代码来解释在 tomcat 中 WorkManager (FooCommonj jar) 的用法。如果 Foo-Commonj 不能正确支持 workmanager,那么还有其他选择。

0 投票
1 回答
1724 浏览

weblogic11g - JNDI 树中的 Weblogic WorkManager

为什么针对应用服务器的 WorkManager 不是应用服务器 JNDI 树的一部分?我在这方面花了很多时间。还是我错过了什么?然后可以使用 java:comp/env/WorkManagerName 获取它。

0 投票
1 回答
529 浏览

jakarta-ee - 使用 EJB 的后台进程

我试图弄清楚如何解决我遇到的设计问题。假设在我的应用程序中,我需要一种在后台持续工作的守护程序/服务来管理对象池,以使它们可供客户端使用。特别是这个守护进程负责管理这些对象的整个生命周期。

现在,在没有深入了解这个守护进程范围的细节的情况下,我正在考虑如何设计它。我的第一个想法是依赖WorkManagerAPI。由于我有一个 Singleton EJB 对我的应用程序核心进行建模,因此我的想法是获取一个WorkManager然后生成守护进程(显然是实现Work. 我在开发资源适配器时使用了 WorkManager,我认为我也可以在 EJB 中使用它,但是站在 Glassfish (3.1.2.2) 对WorkManagerAPI 的支持(基本上由 提供javax.resource.spi.work)我发现在 RA 上下文之外这是不可能的.

我浏览了网络,发现Daniel Veselka 的一篇有趣的文章似乎解决了介绍 WorkManager 的 CommonJ 实现的问题,我明确地考虑采用这种方法。

你怎么看待这件事?

0 投票
0 回答
1693 浏览

jakarta-ee - 如果应用程序使用 WorkManager API,如何从 Jboss 5.x 迁移到 Jboss 7.x

我们正在努力迁移生产环境中的现有应用程序,在某些情况下使用 WorkManager(作为垂直可扩展性)来并行化工作负载。

该应用程序也使用 JMS,但由于性能问题,某些部分使用JBossWorkManagerTaskExecutor [Spring 3.1] 实现,以便为所有正在运行的线程共享相同的 JVM 内存并避免在 Java EE 环境中打开本机线程。

我阅读了很多其他关于这个主题的讨论以及原因,因为 WorkManager API 在 Jboss 7.x 上不可用,例如:

https://community.jboss.org/thread/169380

https://community.jboss.org/message/718053

但是我们真的不明白我怎样才能(以非常快的方式)将应用程序从 Jboss 5.x 迁移到 Jboss 7.x(Jboss EAP 5 到 Jboss EAP 6)而不影响源代码(或只是很小的影响) .

如果我理解正确,那么只有一种方法可以实现 JCA 资源适配器以使用 workmanager,因为 workmanager 不能通过 JMX 使用。这样对吗?

由于上述原因,我认为没有机会介绍 commonj。

目前我们无法重写源代码,我们希望避免打开本地线程以在非常短的时间内解决这种情况。

有人解决了这个问题吗?有人像以前版本的 Jboss 一样使用 WorkManager 实现 JCA 资源适配器吗?

0 投票
3 回答
6402 浏览

spring - Spring WorkManagerTaskExecutor 无法在 websphere 中初始化

我想使用 Websphere 工作管理器在 jee 上下文中执行异步作业,但我在创建 spring WorkManager 时遇到问题。

豆定义:

我在 websphere 帮助中找到了这个定义。但问题是这以 noClassDefFound 结束。我注意到org.springframework.scheduling.commonj自 2.xx 版以来 spring-context 中缺少pckg

它被替换为org.springframework.jca.work.WorkManagerTaskExecutor?

当我使用这个其他弹簧类时,我得到错误:

原因:org.springframework.jndi.TypeMismatchNamingException:JNDI 位置 [wm/default] 上可用的类型 [class com.ibm.ws.asynchbeans.WorkManagerImpl] 的对象不可分配给 [javax.resource.spi.work.WorkManager]

所以这里有什么交易?谢谢

是 - 7.0.0.23 春天 - 3.1.2

0 投票
0 回答
951 浏览

java - 测试工作经理

我无法测试 CommonJ workManager。我不知道我应该遵循哪种方法。我创建了一个实现要执行的任务的工作类和一个更新作业状态(例如开始、完成、拒绝等)的 WorkListener。通过使用单元测试,我可以单独测试 Worker 和 Listener 对象,但在我看来这还不够。我想测试这两个对象之间的合作。

例如,一种可能性是创建一个 Worker 对象并模拟出 Listener :