gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 04:31:17 25 4
gpt4 key购买 nike

当 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/

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