jakarta ee - Java EE 服务器中的 Spring Batch



你能在Java EE服务器中运行Spring Batch吗(例如。WebLogic),假设作为一个Web应用程序?Spring Batch 在 Java EE 服务器中创建更多线程(用于多线程步骤和并行步骤)是否存在任何问题?这是框架根据Java EE规范创建的线程吗?

我认为没关系,人们在阅读以下链接后正在这样做

http://static.springsource.org/spring-batch/reference/html-single/index.html#runningJobsFromWebContainer

请帮忙。

这是一个老问题,但我毕竟会添加一个答案。
是的,可能存在一些问题。我在 WebSphere 服务器上遇到了这样的问题。
根据他们的文件: http://www-01.ibm.com/support/docview.wss?uid=swg21246676

使用 Java™ 调用(如 "newThread()") 来生成新线程不是 根据 J2EE 规范提供支持。这个生成的线程 不继承 J2EE 上下文。建议改为做什么 是使用异步 Bean 或 Commonj WorkManager 线程。这些 线程具有适当的 J2EE 上下文并支持间接 JNDI 查找。

Spring batch 使用 new Thread 创建自己的线程,这些线程不继承 J2EE 上下文。
在我的特定案例中,Spring Batch Job 中的一个通过 https 消耗了一些 REST 服务,结果发现 Spring Batch 生成的线程看不到 WebSphere 服务器中安装的 https 证书,从而导致证书错误。

我认为这里没有问题。

Spring Batch(如Quartz Scheduler)作为Web应用程序运行,它不受禁止创建线程的约束,这仅适用于EJB组件(不适用于Servlet)。

因此,只要您不超过服务器容量限制,Spring Batch 可以在任何 EE 应用程序中运行。

这是一种常见的做法。《Spring Batch In Action》第 4.4 章一书讨论了完全相同的场景,即从 Web 容器启动批处理作业。批处理作业应在具有 N 个线程的线程池中运行。池中的线程数应由性能负载测试的吞吐量结果确定。

最新更新