3

您能否在 Java EE 服务器(例如 WebLogic)中运行 Spring Batch,比如说作为 Web 应用程序?Spring Batch 在 Java EE 服务器内创建更多线程(用于多线程步骤和并行步骤)是否有任何问题?框架创建的线程是否违反 Java EE 规范?

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

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

请帮忙。

4

3 回答 3

1

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

根据 J2EE 规范,不支持使用诸如“newThread()”之类的 Java™ 调用来生成新线程。这个衍生的线程不继承 J2EE 上下文。建议改为使用异步 bean 或 Commonj WorkManager 线程。这些线程具有适当的 J2EE 上下文并支持间接 JNDI 查找。

Spring批处理使用创建它自己的线程new Thread,并且这些线程不继承J2EE上下文。
在我的特定情况下,Spring Batch 作业之一通过 https 使用了一些 REST 服务,结果证明 Spring Batch 产生的线程看不到 WebSphere 服务器中安装的 https 证书,从而导致证书错误。

于 2018-08-11T12:11:09.513 回答
0

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

于 2013-02-05T07:00:57.610 回答
0

我认为这里没有问题。

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

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

于 2013-02-04T09:26:58.723 回答