问题标签 [java-batch]
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.
xml - Xml Spring批处理作业像if else一样执行
我做了春季批量工作,但我卡在了某个地方。我正在尝试在春季批处理 XML 作业中从用户那里获取参数,基于该参数我将运行不同的步骤。
例如。Argument= new 或 replace 基于 "Argument" ,将执行不同的步骤 If argument=new then step 1 Else If argument=replace then step 2 Else some error
非常感谢您的任何领导或帮助。
java - Java Batch Compiler - 通过命令行选项忽略所有警告
我看到了这些运行时编程选项: https ://help.eclipse.org/2018-12/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-using_batch_compiler.htm
但我想知道是否有一个命令行标志可以用来忽略编译器输出的警告(我只想查看错误)。
例如我看到:
只看错误,而不是警告。
java - Java Batch API:用于处理从 ItemReader.open() 抛出的异常的侦听器
是否有任何可以实现的侦听器接口来处理ItemReader.open()
方法抛出的异常?有很多监听器接口,但似乎没有一个适合这个。即ItemReadListener
仅捕获来自ItemReader.readItem()
(类似于ChunkListener
或ItemProcessListener
等)的异常
有JobListener
和StepListener
接口,但这两个没有定义在异常情况下将被调用的方法。
有什么办法可以做到这一点?
java - 将批处理数据存储在 NoSQL 数据库中,而不是 WildFly 上 Jberet 中的文件系统中
我正在 Java EE 平台上开发一个批处理应用程序,其中 Jberet(jsr-352 实现)用于 WildFly 应用程序服务器。Jberet 默认将所有批处理数据以 XML 格式存储在本地文件系统(独立/数据下)中。这正在使用 jberet-rest 组件显示在 jberet-ui 上。我们有一个要求,我们希望将此批处理数据存储在 NoSQL 数据库(例如 mongodb 或 DynamoDB)而不是文件系统中。实现这一点的最佳方法是什么?
java - 在 Java Batch 中从阅读器获取属性
我有一个在 WildFly 上运行的 Java Batch (JSR-352) 应用程序。该应用程序正在公开一个 rest-api 以触发作业执行。我想将一些来自 HTTP REST 请求的值提供给 Reader 类。实现这一点的最佳方法是什么?
作业开始的 REST API:
我想从中读取值的读者:
另外,目前我通过读取通知对象在属性中设置字符串值,是否有更好的方法来提供整个对象?
java - 在 EJB 中安排类似 Cron 的作业
我有关注 EJB,它正在以固定延迟安排“MyJob”。
我想用类似 cron 的表达式来安排这个工作,我如何在不使用 Quartz 或任何其他框架的情况下实现这个?
编辑:更具体地说 - 我希望像 cron 这样的表达式是属性驱动的。我想动态创建调度程序,这样我就不必为多个批处理作业创建多个 bean。
java - CDI 在 jberet 实现下无法与 Java EE Batch 一起使用
我在 WildFly 应用服务器上部署了一个使用 jberet 实现的 Java EE 批处理应用程序。此应用程序还公开了一个 REST API 以按需触发作业。
我有以下类创建要注入的bean:
在 REST api 中注入上述 bean 可以正常工作:
但是,在 ItemReader 中使用相同的 bean 会引发空指针异常,但是注入 JobContext 可以正常工作:
我在 src/main/resources/META-INF 下的 beans.xml:
src/main/resources/META-INF/batch-jobs/myjob.xml 下的作业文件:
src/main/resources/META-INF/batch.xml 下的批处理工件文件
我的 pom.xml 如下所示:
我尝试了@Produce、@JobScoped (org.jberet.cdi.JobScoped) 的各种组合以及使用@JobScoped、@Default 和@ApplicationScoped 注入带注释的类,但都产生相同的结果(使用注入对象时出现 NullPointerException)。
我错过了什么?
java - 我可以为所有步骤定义一个通用 StepListener 吗?Java 批处理作业 API
我写了一个 JobStepListener 需要在每个步骤之前和之后执行。但是,每个作业都包含许多步骤(超过 1000 个步骤),并且在每个步骤中插入侦听器会很乏味,特别是因为我有多个需要此功能的作业。因此,不要像这样编写每个步骤:
有没有办法像定义作业侦听器一样,但对于每一步?
jsr352 - 批处理作业定义:如何运行动态计算的分区数?
作为批处理 API (JSR-352) 的新手,我在建模以下(简化)场景时遇到了一些困难:
- 假设我们有一个
Batchlet
在 first 中生成一组动态文件的step
. - 在一秒钟内,所有这些文件必须在s (via和) 中
step
单独处理,从而生成一组新文件。chunk
ItemReader
ItemProcessor
ItemWriter
- 在第三个
step
中,这些新文件需要打包在一个大型档案中。
我找不到定义第二步的方法,因为规范似乎没有提供循环构造(在我的理解中partition
,仅适用于已知固定大小的集合)。split
flow
工作 xml 定义如何?是否必须放弃第二步分块的想法,还是必须将任务分成多个工作?还有其他选择吗?
jakarta-ee - JEE Batch Job Specification with many optional Steps
Is there a way to achieve the following logic with JSR 352 Batch API? I have a series of Steps that each need to be executed based on a different condition known when starting the job. ConditionsEntity is provided by an external system.
My first attempt fails because of: com.ibm.jbatch.container.exception.BatchContainerRuntimeException: A decision cannot precede another decision. I'm adding the FAILING Code here
UPDATE I have implemented the following suggested solution with a passThroughStep. It's working correctly, but I would still love to be able to avoid all this code duplication.
The Decider
My Test