问题标签 [jberet]
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.
ejb - 从最后一个结束日期开始安排 java 批处理作业
我使用 jsr-352 编写工作并将其部署在 wildfly 上。如何在最后一个结束时间之后安排一项延迟的作业,如下面的时间线,其中=
是执行时间和-
延迟时间:
注意:作业执行的最大数量为 1
jakarta-ee - 在 Wildfly 上查找作业的运行执行次数
我在 Wildfly 上使用 jdbc 作业存储库。当我杀死wildfly进程时,一些作业执行仍处于启动状态。当我重述wildfly时,我会执行执行BatchRuntime.getJobOperator().getRunningExecutions
并给出提到的作业执行。当我在内存存储库中使用时,它工作正常。我想检查真正运行的执行次数。
hibernate - 当实体从读取器传递到处理器时出现 LazyInitializationException
我在 Wildfly 9.0.1 中使用 java 批处理 (jsr-352)。对实体的惰性字段进行步进(基于块)访问的处理器。当处理器想要获取惰性字段时,我给出LazyInitializationException
. 当我在 wildfly 11.0.0.Alpha1 上运行它时,一切正常。在 wildfly 9.0.1 中,当我使用存储库获取此字段时,没有问题。我怎样才能使用存储库做到这一点?
读者:
处理器:
作家:
这是完整的错误:
wildfly - 如果在部署时不知道作业名称,如何开始作业?
我正在尝试启动批处理作业,这在部署时是未知的。(管理员用户可以通过 rest-api 定义自己的工作)我打电话给:
--> Class org.wildfly.extension.batch.jberet.deployment.JobOperatorService - 不允许启动未知作业。
Javadoc 说:
我如何开始在部署时未确定的工作?
提前致谢
wildfly-swarm - 使用 Thorntail (Wildfly Swarm) 和 JBeret 获取 JobOperatorImpl 时出错
我需要获取 JobOperatorImpl 来处理 JBeret 中以编程方式定义的作业。我使用 Thorntail 作为具有 io.thorntail:batch-jberet 依赖项的容器。
但我得到一个例外:Caused by: java.lang.ClassCastException: org.wildfly.extension.batch.jberet.deployment.JobOperatorService cannot be cast to org.jberet.operations.JobOperatorImpl
当我使用没有 Thorntail 分数的 JBeret 依赖项时,它可以正常工作。
java - JSR352 - 单项读取,多项写入
在我正在处理的一个项目中,我们正在读取一个文件,其中读取的每个项目(一条记录)都代表要写入目标数据库的可变数量的项目。这显然似乎打破了 JSR352 的模式,将单个块膨胀得比预期的要多。
有没有人遇到过这种问题?如果是,它是如何解决的?
wildfly-swarm - 将最大线程参数设置为 Thorntail JBeret 分数
我使用 JBeret Thorntail Fraction(thorntail 版本 - 2.0.0.Final):
定义最大线程数的正确方法是什么?
当我设置 yaml 配置时:
最大线程数保持 10(默认值)。
在这种情况下我应该定义自己的线程池以及如何做到这一点?
似乎我定义的任何批次分数属性都被忽略并设置为默认值。我试过了,例如:
java - Java 批量重启不处理步骤
重新启动作业时,不执行批处理,即process()
不调用批处理的方法。
有人有一些提示为什么重新启动不执行任何批处理。我已经尝试了几乎所有组合,但没有进行任何更改以使重新启动正常工作。
重新启动这样 () 不会带来错误 - 但是会成功终止而不调用任何批处理process()
方法。
我将 wildfly-13.0.0.Final 与 jBeret 一起使用。
我有一个带有这个 jox.xml 定义的简单 java 批处理作业。被调用的批处理当前除了返回状态之外什么都不做。
bachlets 的返回值为:
- 下载...已完成
- 进程...已停止
- 通知...已完成
开始这项工作时,jobOperator.start()
一切都按预期工作。
当重新启动 STOPPED 作业执行时jobOperator.restart()
,作业被执行,但没有调用 batchlet。
批处理看起来像这样
java - 带分区的 Java 批处理步骤返回错误的 batchStatus 和 exitStatus
我在 JDL 中有一个(非常简单的)java 批处理作业,只需两个步骤。
当“下载”步骤返回“已停止”状态时,作业应停止。重新启动后,应调用停止通知。
没有分区一切正常。
无分区统计
有了分区,我得到了非常奇怪的批处理结束退出的状态。如果下载步骤返回“已停止”,则作业不会停止。即使分区只有一个线程和一个分区。
尝试重新启动时会引发以下错误(当然)。JBERET000609:作业执行 1 已完成,无法重新启动。
分区统计
职位描述
欢迎每一个提示和建议。我错过了什么?
无分区
在作业开始时,作业调用 -downloadBatchlet => STOPPED 并停止。
重新启动作业时调用 - notifyBatchlet => COMPLETED 并结束。
带隔断
在作业开始时,作业调用 -downloadBatchlet => STOPPED 并停止。
重新启动时,作业调用 NO STEPS 并结束。
java - Java 批处理:如何以编程方式确定您正在运行哪个分区?
在JSR-352批处理中,我想使用分区。我可以通过配置来定义分区的数量,或者实现一个PartitionMapper
来做到这一点。
然后,有JobContext
和StepContext
可注入 为我的处理提供上下文信息。但是,没有PartitionContext
或类似的东西可以维护并提供有关我正在运行的分区的详细信息。
因此问题是:
如何告诉块的每个分区实例它在哪个分区中运行,以便它ItemReader
只能读取属于该特定分区的那些项目?
如果我不这样做,每个分区将对相同的数据执行相同的工作,而不是将输入数据集拆分为n
不同的分区。
我知道我可以在分区计划的属性中存储一些 ID,然后我可以使用这些 ID 在步骤的配置中设置另一个属性,例如<property name="partitionId" value="#{partitionPlan['partitionId']}" />
. 但这似乎过于复杂和脆弱,因为我必须从分区计划中知道属性的名称,并且必须记住在每个步骤中始终将另一个属性设置为该值。
难道没有另一种干净的标准方法来为步骤提供分区信息吗?
或者,我应该如何按分区拆分工作并将其分配给ItemReader
同一分区块中的不同实例?
更新:
jberet 似乎具有org.jberet.cdi.PartitionScoped CDI 范围,但它不是 JSR 标准的一部分。