问题标签 [jsr352]

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 回答
213 浏览

java - jsr 352 检查点如何在故障/回滚场景中工作?

可以在“itemReader”和“itemWriter”中使用“检查点”。

如果我每 10 个项目定义一个提交,则批处理读取 10 个项目并调用“itemWriter”代码。现在,如果“itemWriter”失败(数据库回滚),我有:

  • “itemReader”的检查信息 = 10
  • “itemWriter”的检查信息 = 0

因此,当我重新启动批次时,我希望它以第一项而不是第 11 项重新启动。

我怎样才能做到这一点?我认为“itemReader”和“itemWriter”的“检查点信息”并不相同。

0 投票
2 回答
209 浏览

java - 如何在块处理中实现文件更新逻辑(Java Batch - JSR352)

我正在尝试使用 IBM 的 JSR352 实现开发 Java 批处理程序。由于批处理作业涉及迭代处理大量记录,因此我选择将其实现为块处理作业。

这项工作涉及 3 个步骤,这些步骤对文件 1 中的每个记录保持重复

  1. Reader 类:从文件 1 中读取内容以形成关键文本
  2. 处理器类:查找文件 2 中的关键文本
  3. Writer Class:使用自定义文本更新文件 2 中找到关键文本的文本

从处理器到编写器,我可以返回找到关键文本匹配的所有行号。但是,如果没有对文件的 RandomAccess,我如何从我的 Writer 更新文件 2 中的那些特定行号?

由于我仅限于使用这些输入/输出流进行文件处理,因此我无法在处理器和编写器类之间拆分查找和更新逻辑。我怎样才能做到这一点?

这是因为代码将在 Windows 机器中开发,但最终在大型机 (z/os) 服务器中执行。

0 投票
1 回答
53 浏览

java - 阅读器迭代打开文件会导致 JSR352 中的性能问题吗?

我正在尝试使用 IBM 的 JSR352 实现开发 Java 批处理程序。由于批处理作业涉及迭代处理大量记录,因此我选择将其实现为块处理作业。问题陈述在此处详细定义。

参考 IBM 提供的BonusUpdate示例,他们似乎在阅读器的 processItem() 方法中为阅读器类读取的每条记录打开和关闭文件。

这不会导致性能问题吗?我们不能在最后一次读取之前保持文件打开吗?

0 投票
1 回答
784 浏览

java - Java Batch (JSR 352) 是 SE JDK 的一部分吗?(BatchRuntime 为 Joboperator 返回 NULL)

我使用 JavaSE 的 JSR352 实现编写了一个 Java 批处理应用程序。我有一个阅读器、处理器和编写器。

由于我在 JavaSE 环境中从控制台运行此 java 应用程序,因此我在main(String[] args)方法中使用以下代码来启动该作业。

但是,getJobOperator() 返回 NULL 并收到以下错误消息

警告:javax.batch.runtime.BatchRuntime ServiceLoader 无法找到 JobOperator 的实现。检查 META-INF/services/javax.batch.operations.JobOperator 文件的类路径。

我应该编写 JobOperator 接口的任何实现吗?

0 投票
1 回答
909 浏览

java - 如何在 java SE 环境中运行 Java Batch (JSR352)?

我使用 JSR352 实现(javax.batch.api.*)开发了一个 java 批处理程序

在 Java SE 环境中运行这个 java 批处理程序的最佳方法是什么?

ps:我们可以将此程序部署到具有 JSR352 实现的 JEE 服务器上,但是,我们正在寻找在 Java SE 环境中运行的方法,在那里我可以将 java 程序作为简单的控制台应用程序运行。

ps2:我的项目类路径中有 javaee-api-7.0.jar。

0 投票
0 回答
69 浏览

jsr352 - 在 JSR352 Java 批处理中使用分区时的写入器行为

我使用 Websphere Liberty 服务器容器中可用的 JSR352 框架实现实现了一个 Java 批处理程序。

此作业面向块处理

  1. Reader - 读取数据
  2. 处理器 - 处理它 Writer
  3. Writer - 在一个文件中写入数据并在另一个文件中更新数据

当我为此作业创建 2 个分区时,Writer 中的写操作会相互覆盖吗?还是两个分区的写入输出都保留在文件中而不会被另一个覆盖?

0 投票
0 回答
347 浏览

mainframe - JSR352 - 使用 ZFile.update() 更新 VSAM 文件时出错

writer 类在 mode 中打开一个文件(myfile)并使用一个键查找记录。一旦找到记录,就会调用 update()。update()执行调用时出现以下异常

该文件在 writer 方法中以"rb,type=record"模式打开,open()在 writer 方法中关闭close()

当编写器为作业的第一个块执行时,就会发生错误。

可能是什么问题呢 ?

0 投票
1 回答
795 浏览

logging - JSR352 - JBERET - 如何检查 java 批处理程序作业日志?

我正在尝试使用 JBERET 实现在 Java SE 模式下运行 JSR352 java 批处理程序。我可以看到我的 main() 方法正在执行。正是在这个 main() 方法中,我得到了作业操作员的句柄并开始了作业。

但是,我没有看到我的阅读器、处理器、编写器或侦听器中的任何日志语句被打印出来。

我从我的项目 src/main/resources/META-INF 文件夹中定义并加载了一个 logging.properties。我的 main() 方法中的日志语句正在根据它打印,但是我的读取器/写入器/处理器和侦听器中的日志语句根本没有打印。

为什么不打印我的 java 批处理程序中的日志语句(java 日志库)?

以下是来自 main() 方法的日志。我可以清楚地看到一个作业已经开始,但是不知道为什么批处理程序的日志语句没有被打印出来。

这是一个监听器代码,它同时具有 Sysout 和 Log 语句。它们都没有在我的 Eclipse 控制台中打印出来。

0 投票
1 回答
362 浏览

java - JSR352 / JBERET - “javax.el.BeanELResolver$1”和“java x.el.BeanELResolver”之间的 InnerClasses 属性不兼容

我有一个基于 JSR325(块处理)的 java 批处理程序,并尝试使用 JBERET 实现在 Java SE 模式下运行。我正在遵循这个http://www.mastertheboss.com/javaee/batch-api/running-batch-jobs-in-j2se-applications中提到的方法

Java SE 模式下的 java 批处理程序在 Eclipse 中运行良好,但是当打包为 Jar 并从命令提示符运行时,出现以下异常。

可能是什么问题呢 ?

0 投票
1 回答
181 浏览

java - JSR352 JBeret - 使用 JBeret 运行 SleepyBatchlet 时出错

我正在尝试使用 JBeret 实现在 Java SE 模式下运行符合 JSR352 的 Java 批处理程序。

我将SleepyBatchlet程序转换为可执行 JAR(连同它一起打包了所有必要的依赖项)以使用 Jberet,并尝试从我的 Windows 命令提示符运行它,但是得到了这个错误堆栈跟踪。我的 Eclipse IDE 运行相同的项目时没有任何错误

我检查了 Eclipse 中使用的 jdk 版本,并且命令提示符是相同的。

这是我跑步时的例外java -jar jarfilename.jar

使用 maven 目标从 Eclipse 运行相同的项目clean install exec:java

这是POM文件条目