问题标签 [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 投票
3 回答
556 浏览

java - 如何同步 jBatch 执行?

我正在用 jBeret 编写一个 jBatch 程序。我目前正在这样做。

问题是执行似乎是异步运行的,主要方法只是返回。

我能做的最好的就是循环直到退出状态不为空。

有没有其他方法可以做到这一点?

0 投票
2 回答
868 浏览

java - JSR 352:Wildfly9 / JBeret - 如何调用不包含在同一部署文件级别的批处理作业

我有一个包含 JAR 库的 WAR 应用程序。JAR 库包含批处理作业和批处理工件 ( META-INF/batch-jobs/...)。WAR 应用程序将此 jar 包含为一个库,并定义了一个 JAX-RS 服务,该服务允许客户端调用调用JobOperator接口的批处理作业......

当我运行此部署时,JSR 352 实现(JBeret)一直抱怨在调用 JobOperator 接口时无法找到任何作业......但是,如果批处理作业和批处理工件作为 WAR 部署的类包含,一切顺利...

那么,问题是什么?

0 投票
1 回答
154 浏览

java - java.util.list 的 Java EE 7 Batch (JSR-352) 语法?

我正在使用 Jberet 实现 Java EE 7 批处理 (JSR-352)。我想知道是否有更好的语法在 JSL(作业规范语言)中为用于注入的对象制作列表,而不是给出逗号分隔的列表。我想列出一个 java 类的列表,如果我把它们都放在一行中,它会变得非常长且难以阅读。这就是我目前的做法

如果有类似的东西会很好:

搜索了大约一个小时后,我找不到类似的东西。我正在使用的批处理的实现是 Jberet。我知道我可以简单地进行字符串操作并创建自己的列表,但我想知道是否有更清洁的解决方案。

0 投票
2 回答
1199 浏览

java - JSR352:注解 @Named 在 Java SE 中不起作用

我正在使用 JBoss 实现JBeret在 Java SE 下构建JSR352(Java 平台的批处理应用程序)演示。我想为这项工作运行集成测试。在这个批处理作业中,有 3 个组件:

  • io.mincong.batch.MyItemReader
  • io.mincong.batch.MyItemProcessor
  • io.mincong.batch.MyItemWriter

它们都被命名为带有注释的bean @Named,例如

多亏了这个注释,我可以使用作业类,而无需io.mincong.batch在我的作业文件中输入包名前缀myJob.xml这在 Java EE 容器中可以正常工作,例如 WildFly 10。但是,在 Java SE 中,它不再工作了,我必须添加包前缀。这里的工作 xml myJob.xml

你可以在附件中找到 2 mvn install log,有和没有包前缀。换句话说,使用和不使用@Named。为什么会发生此错误?我是否缺少一些依赖项?任何想法 ?

你也可以在下面看到我的 pom.xml。附加信息:


使用 @Named 时 Maven 安装失败

不使用 @Named 时 Maven 安装成功

pom.xml

0 投票
3 回答
3901 浏览

jakarta-ee - 如何从请求中放入自定义范围/上下文(JobScoped - 自定义 CDI 范围)特定实例以使其可注入?

简而言之,我想从休息请求中放入配置类的自定义范围特定实例。主要问题是自定义范围(来自 JBeret https://jberet.gitbooks.io/jberet-user-guide/content/custom_cdi_scopes/index.html的 JobScoped )在作业开始后是合格的。我知道在开始工作时可以添加属性,但是我的 Configuration 类聚合了很多配置,而且非常复杂,因此将这些文件转换为 Properties 类会非常不舒服。

详情如下:

这是休息请求伪代码:

我想要实现的是在 Job 的上下文中注入一些配置文件,如下所示:

配置类如下所示:

我读过关于 Instance, Provider 但不知道如何在我的情况下使用它们。事实上,我认为使用它们是不可能的,因为这些作业是由它们的名称标识的,它是动态的并且在运行时是已知的。


同时我发现了与我类似的情况: 我可以创建一个请求范围的对象并从任何地方访问它,并避免在 JAX-RS 中将其作为参数传递吗?

但是随后会出现缺少上下文的问题。当 Job 启动时,会有 JobScoped 上下文。根据上述解决方案,我将 Configuration 注释为 RequestScoped,然后我收到:

org.jboss.weld.context.ContextNotActiveException: WELD-001303: org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:689) 的范围类型 javax.enterprise.context.RequestScoped 没有活动上下文.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.getIfExists(ContextualInstanceStrategy.java:90) at org.jboss.weld.bean.ContextualInstanceStrategy$CachingContextualInstanceStrategy.getIfExists(ContextualInstanceStrategy.java:165) at org.jboss.weld.bean.ContextualInstance.getIfExists (ContextualInstance.java:63) 在 org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:83) 在 org.jboss.weld.bean.proxy.ProxyMethodHandler.getInstance(ProxyMethodHandler.java:125) 配置$Proxy$_$$_WeldClientProxy.toString(未知来源)

0 投票
1 回答
98 浏览

batch-processing - JobExecution#getJobName 的 NPE

在我的应用程序中,我使用 JBeret 实现进行批处理。

当试图检索作业的运行执行但我得到了一个 NPE:

堆栈跟踪:

原因:在 org.jberet.operations.JobOperatorImpl.getRunningExecutions(JobOperatorImpl.java:157) 在 ch.adnovum.monexio.server 的 org.jberet.runtime.JobExecutionImpl.getJobName(JobExecutionImpl.java:141) 的 java.lang.NullPointerException .batch.rs.BatchOperatorServiceBean.getRunningJobIds(BatchOperatorServiceBean.java:143) 在 ch.adnovum.monexio.server.batch.rs.BatchOperatorServiceBean.assertAtomicJob(BatchOperatorServiceBean.java:94) 在 ch.adnovum.monexio.server.batch.rs .BatchOperatorServiceBean.start(BatchOperatorServiceBean.java:54)

供您参考的代码:http: //grepcode.com/file/repo1.maven.org/maven2/org.jberet/jberet-core/1.0.1.CR1/org/jberet/operations/JobOperatorImpl.java#JobOperatorImpl。 getRunningExecutions%28java.lang.String%29

我检查了 JBeret 存储作业信息的数据库,据我所知,每个执行都附加到有效实例。

在此处输入图像描述

有没有人遇到过同样的问题?

0 投票
1 回答
65 浏览

jakarta-ee - JavaEE 批处理能否在应用程序重新部署后继续存在?

我们在具有几乎零停机模式的高可用性系统中使用 Wildfly 10。批处理执行我们系统工作的重要部分,并且总是同时运行许多批处理。另一方面,我们需要非常频繁地重新部署应用程序以应用更新(每周几次)。批处理应该在系统崩溃中幸存下来,但是运行批处理是否可以在应用程序(重新)部署中幸存下来?我研究了各种资源,一般有很多关于批次的信息,但没有找到具体的答案。非常感谢。

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

java - Java-Batch:如何将数据从一个步骤传递到另一个步骤?

在我的 JBeret java-batch 作业中,我需要将参数从一个步骤传递到下一步。到目前为止,我只是想通过 JobContext.setTransientUserData() 来做到这一点。

我的问题是:transientUserData 方式是最佳实践方式还是有更好的选择?在批处理步骤之间传递参数是否很常见,或者在这方面步骤是否应该是自给自足的?