multithreading - EJB池与Spring : how to manage work load in spring?

标签 multithreading spring jakarta-ee ejb

当 EJB 应用程序接收到多个请求(工作负载)时,它只需池化 EJB 即可管理该工作负载,因此,当某个线程使用每个 EJB 对象时,下一个线程必须排队等待,直到某个 EJB 结束工作(避免系统过载和效率下降)。

Spring 使用无状态单例(根本不池化),这些单例由“失控”数量的线程使用。

是否有办法控制工作负载的交付方式? (相当于EJB实例池)。

谢谢!

最佳答案

对于 Web 应用程序,servlet 容器有一个线程池,用于确定它可以同时处理多少传入 HTTP 请求。在消息驱动 POJO 的情况下,JMS 配置定义了一个类似的线程池来处理传入的 JMS 消息。然后,每个线程都将访问 Spring bean。

谷歌搜索 RMI 线程,似乎没有办法为 RMI 配置线程池。每个 RMI 客户端都分配有一个线程。在这种情况下,您可以使用 Spring 的 Task Executor framework进行池化。使用<task:executor id="executor" pool-size="10"/>在你的上下文配置中将设置一个具有 10 个线程的执行器。然后注释将使用 @Async 处理工作的 Spring bean 的方法。

使用 Spring 任务执行器,您可以单独保留 Servlet 和 JMS 池配置,并在一个位置为您的特定工作配置池。

关于multithreading - EJB池与Spring : how to manage work load in spring?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6491089/

相关文章:

c++ - 删除对象后退出包含对象指针的线程的最佳方法

java - 子线程名称未在run()中打印

android - 当蓝牙连接在 c 中丢失时,蓝牙读取线程不会退出

java - informix 数据库中没有指定的表(t_all)?

Spring Boot 应用程序失败,退出代码为 0

java - 无法安装 eclipse IDE - 缺少 JRE。无法打开文件

ruby-on-rails - 使用 Rails 运行多个后台并行作业

java - 通过 Maven 在 Spring Boot 中配置 Activity 配置文件

java - 重复类定义错误

java - primefaces 中调整窗口大小的事件