问题标签 [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.

0 投票
1 回答
478 浏览

ejb - 从最后一个结束日期开始安排 java 批处理作业

我使用 jsr-352 编写工作并将其部署在 wildfly 上。如何在最后一个结束时间之后安排一项延迟的作业,如下面的时间线,其中=是执行时间和-延迟时间:

注意:作业执行的最大数量为 1

0 投票
1 回答
312 浏览

jakarta-ee - 在 Wildfly 上查找作业的运行执行次数

我在 Wildfly 上使用 jdbc 作业存储库。当我杀死wildfly进程时,一些作业执行仍处于启动状态。当我重述wildfly时,我会执行执行BatchRuntime.getJobOperator().getRunningExecutions并给出提到的作业执行。当我在内存存储库中使用时,它工作正常。我想检查真正运行的执行次数。

0 投票
1 回答
219 浏览

hibernate - 当实体从读取器传递到处理器时出现 LazyInitializationException

我在 Wildfly 9.0.1 中使用 java 批处理 (jsr-352)。对实体的惰性字段进行步进(基于块)访问的处理器。当处理器想要获取惰性字段时,我给出LazyInitializationException. 当我在 wildfly 11.0.0.Alpha1 上运行它时,一切正常。在 wildfly 9.0.1 中,当我使用存储库获取此字段时,没有问题。我怎样才能使用存储库做到这一点?

读者:

处理器:

作家:

这是完整的错误:

0 投票
1 回答
96 浏览

wildfly - 如果在部署时不知道作业名称,如何开始作业?

我正在尝试启动批处理作业,这在部署时是未知的。(管理员用户可以通过 rest-api 定义自己的工作)我打电话给:

--> Class org.wildfly.extension.batch.jberet.deployment.JobOperatorService - 不允许启动未知作业。

Javadoc 说:

我如何开始在部署时未确定的工作?

提前致谢

0 投票
2 回答
134 浏览

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 依赖项时,它可以正常工作。

0 投票
1 回答
71 浏览

java - JSR352 - 单项读取,多项写入

在我正在处理的一个项目中,我们正在读取一个文件,其中读取的每个项目(一条记录)都代表要写入目标数据库的可变数量的项目。这显然似乎打破了 JSR352 的模式,将单个块膨胀得比预期的要多。

有没有人遇到过这种问题?如果是,它是如何解决的?

0 投票
2 回答
404 浏览

wildfly-swarm - 将最大线程参数设置为 Thorntail JBeret 分数

我使用 JBeret Thorntail Fraction(thorntail 版本 - 2.0.0.Final):

定义最大线程数的正确方法是什么?

当我设置 yaml 配置时:

最大线程数保持 10(默认值)。

在这种情况下我应该定义自己的线程池以及如何做到这一点?

似乎我定义的任何批次分数属性都被忽略并设置为默认值。我试过了,例如:

0 投票
1 回答
260 浏览

java - Java 批量重启不处理步骤

重新启动作业时,不执行批处理,即process()不调用批处理的方法。

有人有一些提示为什么重新启动不执行任何批处理。我已经尝试了几乎所有组合,但没有进行任何更改以使重新启动正常工作。

重新启动这样 () 不会带来错误 - 但是会成功终止而不调用任何批处理process()方法。

我将 wildfly-13.0.0.Final 与 jBeret 一起使用。

我有一个带有这个 jox.xml 定义的简单 java 批处理作业。被调用的批处理当前除了返回状态之外什么都不做。

bachlets 的返回值为:

  • 下载...已完成
  • 进程...已停止
  • 通知...已完成

开始这项工作时,jobOperator.start()一切都按预期工作。

当重新启动 STOPPED 作业执行时jobOperator.restart(),作业被执行,但没有调用 batchlet。

批处理看起来像这样

0 投票
1 回答
593 浏览

java - 带分区的 Java 批处理步骤返回错误的 batchStatus 和 exitStatus

我在 JDL 中有一个(非常简单的)java 批处理作业,只需两个步骤。

当“下载”步骤返回“已停止”状态时,作业应停止。重新启动后,应调用停止通知。

没有分区一切正常。

无分区统计

有了分区,我得到了非常奇怪的批处理结束退出的状态。如果下载步骤返回“已停止”,则作业不会停止。即使分区只有一个线程和一个分区。

尝试重新启动时会引发以下错误(当然)。JBERET000609:作业执行 1 已完成,无法重新启动。

分区统计

职位描述

欢迎每一个提示和建议。我错过了什么?

无分区

在作业开始时,作业调用 -downloadBatchlet => STOPPED 并停止。

重新启动作业时调用 - notifyBatchlet => COMPLETED 并结束。

带隔断

在作业开始时,作业调用 -downloadBatchlet => STOPPED 并停止。

重新启动时,作业调用 NO STEPS 并结束。

0 投票
1 回答
445 浏览

java - Java 批处理:如何以编程方式确定您正在运行哪个分区?

JSR-352批处理中,我想使用分区。我可以通过配置来定义分区的数量,或者实现一个PartitionMapper来做到这一点。

然后,有JobContextStepContext可注入 为我的处理提供上下文信息。但是,没有PartitionContext或类似的东西可以维护并提供有关我正在运行的分区的详细信息。

因此问题是:

如何告诉块的每个分区实例它在哪个分区中运行,以便它ItemReader只能读取属于该特定分区的那些项目?

如果我不这样做,每个分区将对相同的数据执行相同的工作,而不是将输入数据集拆分为n不同的分区。

我知道我可以在分区计划的属性中存储一些 ID,然后我可以使用这些 ID 在步骤的配置中设置另一个属性,例如<property name="partitionId" value="#{partitionPlan['partitionId']}" />. 但这似乎过于复杂和脆弱,因为我必须从分区计划中知道属性的名称,并且必须记住在每个步骤中始终将另一个属性设置为该值。

难道没有另一种干净的标准方法来为步骤提供分区信息吗?

或者,我应该如何按分区拆分工作并将其分配给ItemReader同一分区块中的不同实例?

更新:

jberet 似乎具有org.jberet.cdi.PartitionScoped CDI 范围,但它不是 JSR 标准的一部分。