问题标签 [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 回答
375 浏览

java-ee-7 - 在 Java 批处理中处理单独的事务 (JSR-352)

我正在使用 JSR 352 java 批处理规范的 jberet 实现。

实际上,我需要一个单独的事务来进行单一更新,如下所示:

我首先尝试将resetLastProductsUpdateDate方法标记为@Transactional(REQUIRES_NEW),但是没有成功。

我的问题是:

  1. 有没有更优雅的方式来实现这个单一的交易而无需手动处理交易?
  2. 虽然 UserTransation 有效,但 EntityManager.transaction 无效。我不明白为什么。
  3. 下面的类是从 Batchlet 注入的,可以正常工作;为什么我不能在resetLastProductsUpdateDate方法上使用 @Transactional 注释呢?

    }

编辑

实际上,我想这两个 usertransaction 都不是一个好的解决方案,因为它会影响整个 itemwriter 事务管理。仍然不知道如何处理事务隔离:(

0 投票
1 回答
357 浏览

java - Java批处理:jobContext transientUserData未通过步骤

我正在使用 jsr-352 规范的 JBeret 实现。

这是我的工作配置,简而言之:

Itemwriter 类做这样的事情:

现在我希望在step2上调用 jobContext.getTransientUserData() 时实现更新的列表,而不是我得到的只是一个值。

此外,每个分区都有自己的 jobContext.transientUserData,所以它在分区开始时总是以空值开始。

我认为 jobContext 本身可能会因其名称而误导常见错误。

在整个工作中带来一些数据的自然方式是什么?

0 投票
1 回答
413 浏览

java - Java EE 7 批处理 API (JSR-352):可以停止单个步骤而不是所有工作吗?

注意:JSR-352,Java EE,wildfly 17.0.1,没有 spring

我在 xml 中定义了以下工作:

我的要求是处理作业停止,我可以在 xmlRead 中覆盖 stop() (第一步)。

问题是我还需要确保始终执行第二步,但是从我的测试来看,如果我在第一批 XmlRead 中运行以下代码:

最后,作业的退出状态将为 FAILED(正确!),但永远不会执行第二步。

知道如何模拟这种情况吗?

0 投票
2 回答
121 浏览

jakarta-ee - Java Batch 作业:如何等待用户决定?

在我的 Java 批处理作业(JSR-352,JBeret)中,我已经达到了我(可选)想要等待用户决定的地步。根据我的研究,JSR-352 规范没有提供“等待”的概念。所以问题是,还有哪些其他选择?

我目前的考虑:

  1. 我不希望拆分工作,因为这需要保持部件之间的连接以满足监控需求。
  2. 仅出于此目的将 JMS 引入项目似乎有些过头了。
  3. 通过 JPA 或 JDBC 轮询数据库似乎也不是一个好的解决方案。
  4. 作业启动时具体信息尚不可用,因此不能作为作业参数传递。
0 投票
1 回答
48 浏览

jberet - Jberet - 可重试的异常类工作?

有没有办法在日志中看到重试正在发生?在将其实施到生产中之前,我需要知道这是否在我们的测试环境中工作。

由于键的一部分是时间戳和从各种来源进入表的数据,因此我们得到以下信息的情况很少见。当我们得到 - DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505 时,我们需要让 writer 重试

0 投票
2 回答
194 浏览

jakarta-ee - 如何在 java ee batch / jberet 中访问分区属性

我的工作定义如下:

引用的映射器创建一个具有定义值的属性数组,并返回它:

它在步骤开始时被正确调用,并返回定义了正确键的属性。

但是,我无法从我的阅读器步骤中获取分区计划属性。作业上下文属性和步骤上下文属性都不包含任何内容。我在控制台中没有看到错误。作业实例参数只包含运行时设置的参数。没有任何参数/属性名称冲突。尝试使用 @BatchProperty 注入它们,将字段保留为空。

批处理开始如下:

我错过了什么?

0 投票
1 回答
22 浏览

jberet - 块 ItemReader 处理多个文件

我需要通过块处理多个输入文件。在我重建轮子之前,是否有一个 BeanIO ItemReader 可以做到这一点?还是另一种方法?

0 投票
1 回答
25 浏览

jberet - 在输入文件末尾执行的侦听器

我有一个使用块读取文件并将记录插入表的过程。我需要能够在输入文件的开头插入一行到父表中,当文件关闭时,我需要更新在开始时插入的父表行。是否有听众或方法可以做到这一点?

0 投票
1 回答
44 浏览

jberet - BeanIO 项目阅读器评论需要 reader.markSupported() 返回 true

我的 beanioItemReader 映射定义如下 -

并得到例外 -

我没有看到任何记录在案的属性可以传递给 beanioItemReader 以征求意见。我可以/如何让评论起作用吗?

0 投票
3 回答
52 浏览

jberet - 使用 Jberet 时可以在 ItemProcessor 中获取 beanIOItemReader 记录号吗?

我正在使用一个块来读取文件并将内容插入数据库,表中的一列需要输入文件中的记录号。有没有办法在传递给 ItemProcessor 的对象中获取它或从 ItemProcessor 中获取它?