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

java - JSR-352:DB2DataStoreHelper.findMappingClass 中的 Stackoverflow 错误

原因:com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:430) com.ibm.websphere.rsadapter 的 java.lang.Integer.valueOf(Integer.java:844) 的 java.lang.StackOverflowError .DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) 在 com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) 在 com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) 在com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) 在 com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) 在 com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass( DB2DataStoreHelper.java:445)在 com.ibm.websphere.rsadapter。DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) 在 com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) 在 com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) 在

...........

这个 com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) 一直在发生,直到出现 stackoverflow 错误。当我调用executeBatch()Writers writeItems() 时会发生错误,所以我不确定它到底发生在哪里或为什么会发生。

3年前,一位面临类似问题的用户提出了这个问题。但是没有响应,重新运行也没有帮助。

DB2 JDBC 驱动程序中的无限循环

0 投票
0 回答
261 浏览

jakarta-ee - BatchEE getRunningExecutions 方法在第二次执行后抛出 javax.batch.operations.NoSuchJobException

我尝试在执行 Java-EE 批处理执行时获取正在运行的执行。通过 BatchRuntime.getJobOperator().start(JOBNAME,parameters) 首次执行时,一切正常:

BatchRuntime.getJobOperator().getRunningExecutions(JOBNAME)提供正确的执行并 BatchRuntime.getJobOperator().getJobInstanceCount(JOBNAME)导致“1”。

批处理执行完成(使用 BatchStatus.COMPLETED.toString())。在所有连续运行期间,会发生以下情况:

BatchRuntime.getJobOperator().getJobInstanceCount(JOBNAME)-result 增加,所以它变成 2, 3, ....

BatchRuntime.getJobOperator().getRunningExecutions(JOBNAME)抛出:

以下是 getRunningExecutions 应该找到的正在运行的 Jobexecution 的属性值(但没有):

有谁知道这个例外的原因?是否有必要清理作业实例?如果需要,我可以附加具体的代码片段。

预先感谢您的回答。

编辑:getJobInstanceCount 不会一直为 2。每次新作业开始时它都会增加一。

0 投票
1 回答
678 浏览

websphere-liberty - 如何在 batchManager 提交命令调用时识别 Liberty 中的批处理应用程序名称

我是 Liberty 的新手,正在尝试 Batch (352) 功能。无论是通过搜索引擎还是stackoverflow,我都找不到这个问题,所以我显然遗漏了一些明显的东西......

我在 Liberty 8.5.5.9 中创建了一个简单的测试应用程序。它具有以下结构:

  • 测试批次EAR
    • testbatchWAR
      • 测试批次

EAR 已通过通常的 Add/Remove 菜单选择添加到服务器。

我现在正在尝试使用以下命令从命令行提交作业:

我收到一条消息(截断):

我已经尝试过 testbatch、testbatchEAR、testbatchWAR,但是从消息的“testbatch#testbatch.war”部分来看,看起来它只是对 EAR 和 WAR 使用相同的名称,我认为这是不可能的,是它?

我错过了什么?它必须就在我面前,但我发现的每个示例或解决方案都是使用裸 WAR,这是我做不到的。在自由的任何地方我都可以找到应用程序名称吗?我应该在某处定义名称(server.xml?)吗?

提前致谢!

* 编辑:附加信息 *

如果我从 Eclipse Run Configurations > Java EE Batch Job 部分运行它,它会运行它,并且执行 batchManager listJobs 会将应用程序名称显示为 testbatchEAR#testbatchWAR.war。

所以我想我真正的问题是,我怎样才能把这个名字放到batchManager.bat 的--applicationName 选项中?它需要并从中产生#.war。我试过从 listJobs 中输入全名,但它不允许使用 '#' 字符......

0 投票
2 回答
1539 浏览

junit - JSR:352 单元测试 Java 批处理代码?

我们可以使用 JUnit 来测试 java 批处理作业吗?由于 Junit 在本地运行并且 java 批处理作业在服务器上运行,我不确定如何从 JUnit 测试用例启动作业(我尝试使用 JobOperator 类)。

如果 JUnit 不是正确的工具,我们如何对 java 批处理代码进行单元测试。

我正在使用 IBM 在 WAS Liberty 上运行的 JSR 352 实现

0 投票
1 回答
928 浏览

jakarta-ee - JSR 352 如何将对象 (java.lang.Object) 存储为作业属性?

JSR352 1.0 Final §9.3 Batch Properties中,批处理属性定义为 type java.lang.String

批处理应用程序需要一种在启动作业以执行时接收参数的方法。属性可以由批处理编程模型工件定义,然后在启动作业时将值传递给它们。批处理属性是字符串值。

这是一个例子:

但是,我需要使用其他对象来完成这项工作。这个通用的“属性”可以是任何对象类型,所以java.lang.Object. 因此,我正在寻找一种满足以下要求的变通解决方案:

  • 存储的属性应该是不可变的,这意味着一旦传递到批处理运行时,它就不会再次更改。
  • 该属性应该在作业停止时保持不变,并且可以在作业重新启动时重用。(可序列化?)
  • 变通解决方案不应依赖于任何实现,例如来自 JBoss 的 JBeret。因为我正在开发一个框架,它让用户选择自己的 JSR 352 实现。

有人可以帮忙吗?

0 投票
0 回答
203 浏览

java - 如何为在 Web 服务器中运行的所有 java 批处理公开启动/停止/状态功能

我的直接问题是:假设我在服务器上部署了 10 场战争。每一个里面都有一个简单的工作,要么用 Spring Batch 编码,要么用 JSR352 实现。然后我想启动,检查状态并手动停止它们?企业服务器中的哪些内容可以为我提供这种能力?例如,假设我有 10 个批次部署到同一台服务器(我使用带有 JDK 7 的 Websphere 8.5.5 ND,但您可以考虑任何人)。五个批次是 JSR-352,另外五个是 Spring Batch。我想为最终用户提供一个页面,他/她可以在其中启动服务器,查看它是否正在运行,然后在它运行时停止它(这超出了这个问题的范围,谈论前端。它可以很简单一个按钮用于启动,另一个用于停止,只需刷新页面即可查看当前状态)。

让我更深入地解释一下。在过去的 6 个月里,我一直在使用 Spring Batch 创造一些工作。出于某种原因,我无法从我公司的 unix shell 或 JCL 直接启动它。实际上,这意味着我不能使用以命令行开头的脚本。我必须在我们的 Websphere 8.5.5 ND 内部使用。有一个名为 Spring Batch Admin 的惊人应用程序可以满足我的需要,但简而言之,我不能在这里使用它。

将 Spring Batch 与 JSR 352 进行比较超出了这个问题。对于我的问题,我真的不在乎我将使用哪一个,只要我可以提供某种方式让监视器/操作员/用户以某种方式在网页中看到启动/停止/检查状态。因此,如果您只能回答 JSR 352 或只能回答 Spring Batch,那将是完美的。如果有一些通用的方法来涵盖两者,显然会更好一些。

我想,不确定,可能有某种方式可以使用 JMX 或 JConsole 功能来做类似于 Spring Batch Admin 所做的事情,但我没有北方,如果没有从头开始,我很难开始。我确信这是完全有可能的,否则它不会存在一个名为 Spring Batch Admin 的应用程序(我已经很好地使用了它,但由于本地原因我无法让它在生产中工作)。

我认为在 JMX 中是因为我了解 JMX 可以注册 bean 并公开它,并且我认为在用于我的服务器的 Java 中的 JConsole 中是因为它显示了用于该服务器的相同 JVM 的情况。

对这个问题感兴趣但不理解我所说的 JSR 352 或 Spring Batch Admin 的读者可能会对这两个链接感兴趣:

Websphere ND 中的 JSR352 http://www-01.ibm.com/support/docview.wss?uid=tss1wp102544&aid=1

Spring Batch 管理 https://examples.javacodegeeks.com/enterprise-java/spring/spring-batch-admin-tutorial/

对这两种实现都非常感兴趣的电影: https ://www.youtube.com/watch?v=yKs4yPs-5yU

我想突出显示尝试将 Spring Batch 与 JSR352 进行比较的答案,我将降级答案。这与我的问题和动机相去甚远。

0 投票
1 回答
452 浏览

java - jberet,一个 wildfly 实例,多个数据源:我可以使用多个作业存储库吗?

我们目前有一组服务,每个服务都在各自的 wildfly 9.0 实例中运行。其中一些具有使用 jberet 1.2.0 实现的批处理作业。

每个 wildfly 实例都有一个用于服务的数据源(jdbc、oracle)和一个用于定义 jberet 的作业存储库。目前jberet表被放入这个wildfly实例的单一数据源的数据库中。

现在我们将所有批处理作业移动到一个单独的 Wildfly 实例中,以将批处理生成的负载从其他 Wildfly 实例中移开。

所以现在我们有一个带有 x 个数据源的standalone.xml(每个服务一个)。

定义 job-repository/-ies 的最佳实践是什么?

0 投票
1 回答
241 浏览

java - 为 JSR 352 Batch API 表添加前缀

我目前在 Jboss/CDI 环境(JBeret 实现)中使用 JSR 352 Batch API。

我没有在 JSR 和 JBeret 文档中找到如何为具体批次表(STEP_EXECUTION、JOB_EXECUTION、JOB_INSTANCE ...)添加前缀。

示例:JOB_INSTANCE => BATCH_JOB_INSTANCE

有人有想法吗?

谢谢。

0 投票
1 回答
426 浏览

websphere-liberty - 带有 Liberty Profile 的 JSR-352 - 'ORA-01002:无序获取'

我正在 Liberty Profile 中试验 JSR-352 实现,并且在我的阅读器处理了我的 JDBC ResultSet 的前 10 个项目后,我被“ORA-01002: fetch out of sequence”错误所困扰。我的块大小设置为 100。

这是我的读者:

如果 ResultSet 处理发生在 open() 方法中,那么我不会遇到任何错误。

这是我的 server.xml 中的 batchPersistence 配置:

这是作业日志中的错误:

我有额外的日志等,如果它们有帮助的话。提前致谢。

0 投票
0 回答
940 浏览

java - 在处理之前获取所有块项目?

我在一个项目中使用Spring Batch,我正在寻找一种在开始处理Chunk之前预处理 a 的所有项目的方法。ItemProcessor我需要一起处理块的项目。

有一个ChunkListener,它只在ItemReader开始之前被调用,而不是在ItemProcessor开始之前被调用。还有一个ChunkProvider,它用项目填充块。但我没有找到如何获取填充块的文档。

步骤完成阅读Chunk后如何访问所有项目?