问题标签 [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.
java - 如何同步 jBatch 执行?
我正在用 jBeret 编写一个 jBatch 程序。我目前正在这样做。
问题是执行似乎是异步运行的,主要方法只是返回。
我能做的最好的就是循环直到退出状态不为空。
有没有其他方法可以做到这一点?
java - JSR 352:Wildfly9 / JBeret - 如何调用不包含在同一部署文件级别的批处理作业
我有一个包含 JAR 库的 WAR 应用程序。JAR 库包含批处理作业和批处理工件 ( META-INF/batch-jobs/...
)。WAR 应用程序将此 jar 包含为一个库,并定义了一个 JAX-RS 服务,该服务允许客户端调用调用JobOperator
接口的批处理作业......
当我运行此部署时,JSR 352 实现(JBeret)一直抱怨在调用 JobOperator 接口时无法找到任何作业......但是,如果批处理作业和批处理工件作为 WAR 部署的类包含,一切顺利...
那么,问题是什么?
java - java.util.list 的 Java EE 7 Batch (JSR-352) 语法?
我正在使用 Jberet 实现 Java EE 7 批处理 (JSR-352)。我想知道是否有更好的语法在 JSL(作业规范语言)中为用于注入的对象制作列表,而不是给出逗号分隔的列表。我想列出一个 java 类的列表,如果我把它们都放在一行中,它会变得非常长且难以阅读。这就是我目前的做法
如果有类似的东西会很好:
搜索了大约一个小时后,我找不到类似的东西。我正在使用的批处理的实现是 Jberet。我知道我可以简单地进行字符串操作并创建自己的列表,但我想知道是否有更清洁的解决方案。
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。附加信息:
- JBERET:设置 JBeret
- JBERET:最小的应用程序依赖
- JBERET:Java SE 批处理应用程序的附加依赖项
- JBERET:GitHub 上的 jberet/jsr352/test-apps
使用 @Named 时 Maven 安装失败
不使用 @Named 时 Maven 安装成功
pom.xml
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(未知来源)
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)
我检查了 JBeret 存储作业信息的数据库,据我所知,每个执行都附加到有效实例。
有没有人遇到过同样的问题?
jakarta-ee - JavaEE 批处理能否在应用程序重新部署后继续存在?
我们在具有几乎零停机模式的高可用性系统中使用 Wildfly 10。批处理执行我们系统工作的重要部分,并且总是同时运行许多批处理。另一方面,我们需要非常频繁地重新部署应用程序以应用更新(每周几次)。批处理应该在系统崩溃中幸存下来,但是运行批处理是否可以在应用程序(重新)部署中幸存下来?我研究了各种资源,一般有很多关于批次的信息,但没有找到具体的答案。非常感谢。
java - jberet,一个 wildfly 实例,多个数据源:我可以使用多个作业存储库吗?
我们目前有一组服务,每个服务都在各自的 wildfly 9.0 实例中运行。其中一些具有使用 jberet 1.2.0 实现的批处理作业。
每个 wildfly 实例都有一个用于服务的数据源(jdbc、oracle)和一个用于定义 jberet 的作业存储库。目前jberet表被放入这个wildfly实例的单一数据源的数据库中。
现在我们将所有批处理作业移动到一个单独的 Wildfly 实例中,以将批处理生成的负载从其他 Wildfly 实例中移开。
所以现在我们有一个带有 x 个数据源的standalone.xml(每个服务一个)。
定义 job-repository/-ies 的最佳实践是什么?
- 一个单独的作业存储库,指向仅包含 jberet 内容的数据源(新数据库)
- 每个服务一个作业存储库指向该服务的数据源(这甚至可能吗?如何?从查看https://github.com/fcorneli/jberet-eap6/blob/master/eap6-batch/src/main/资源/模式/wildfly-batch_1_0.xsd我想这是不可能的/有意的。)
- 让 jberet 数据进入其中一项服务的现有数据库之一(我如何选择哪一个?负载、大小?)
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
有人有想法吗?
谢谢。
java - Java-Batch:如何将数据从一个步骤传递到另一个步骤?
在我的 JBeret java-batch 作业中,我需要将参数从一个步骤传递到下一步。到目前为止,我只是想通过 JobContext.setTransientUserData() 来做到这一点。
我的问题是:transientUserData 方式是最佳实践方式还是有更好的选择?在批处理步骤之间传递参数是否很常见,或者在这方面步骤是否应该是自给自足的?