问题标签 [java-batch]
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 - 使用 ZFile 在新行中写入每条记录 写入文件?
我有一个 Java 批处理作业,我正在写入器中的一个文件。
我正在写入 MVS 数据集并使用 ZFile 的 write(byte[] buf) 写入文件。
然而,不是在新行中写入每条记录,而是在同一行中写入(即使 Java 字符串末尾有一个“\n”)。是否需要为此传递任何参数?
recfm 是 fb,type 是 record。记录长度为 80,但并非所有记录的长度都为 80
websphere-liberty - 如何在 WebSphere LP 的多 JVM 中配置/运行 Java Batch 分区
在 WebSphere LP Java Batch 中,我通过 job.xml 配置将作业分为 4 个分区,因此当作业在服务器上执行时,4 个线程在单个 jvm 上运行以完成作业。现在我想在 2 jvm 上运行分区。假设 2 个分区将在 server-1 上运行,2 个分区将在 server-2 上运行。
是否有人对此进行了尝试以通过配置在多个 jvm 中运行分区,或者任何想法都会受到欢迎。
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(未知来源)
java - JSR 352:是否可以在多个 JVM 中的同一作业中运行同一步骤的不同分区?
如果是这样,如何?
我在 WebSphere Liberty 上使用 IBM 的 JSR 352 实现。
java - JSR 352:Java Batch 确保最大性能和效率的最佳实践是什么?
我正在从数据库进行典型的读取,并且我将处理并写入具有数百万(> 1000 万)条记录的数据集上的文件步骤。
从设计或架构的角度来看,有什么需要牢记的吗?
还有需要牢记的任何 Java-Batch 特定的编码实践吗?(除了一般的 java 最佳实践)
我在 Websphere liberty 上使用 IBM 的 JSR352 实现。
java - JSR 352:连接已关闭如果连接在分区步骤中的 Readers close() 中关闭,则会出错
我在阅读器的打开中创建一个连接Connection con = ds.getConnection();
(其中 ds 是数据源)并在阅读器的 close() 中关闭它。
但是当我运行具有多个分区的作业时,在作业中间,我得到连接已关闭错误
Caused by: java.sql.SQLException: [jcc][t4][10335][10366][3.58.82] Invalid operation: Connection is closed. ERRORCODE=-4470, SQLSTATE=08003 DSRA0010E: SQL State = 08003, Error Code = -4,470
我假设当其中一个分区完成时会发生这种情况。
所以我的问题是为什么会发生这种情况?以及应该如何处理连接?还是 Java 负责关闭连接?
我在 WebSphere Liberty UPDATE 上使用 Java Batch:
}
完整的错误信息
[ERROR ] J2CA0024E: Method rollback, within transaction branch ID {XidImpl: formatId(57415344), gtrid_length(36), bqual_length(40),
data(0000015645eff4470000000915937ff85f46c3ed056b19010aa5147e1183f8d3ae81c04c0000015645eff4470000000915937ff85f46c3ed056b19010aa5147e1183f8d3ae81c04c00000001)} of resource pool connectionManager[Pool], caught com.ibm.ws.exception.WsException: DSRA0080E: An exception was received by the Data Store Adapter. See original exception message: [jcc][t4][10335][10366][3.58.82] Invalid operation: Connection is closed. ERRORCODE=-4470, SQLSTATE=08003. with SQL State : 08003 SQL Code : -4470
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年前,一位面临类似问题的用户提出了这个问题。但是没有响应,重新运行也没有帮助。
junit - JSR:352 单元测试 Java 批处理代码?
我们可以使用 JUnit 来测试 java 批处理作业吗?由于 Junit 在本地运行并且 java 批处理作业在服务器上运行,我不确定如何从 JUnit 测试用例启动作业(我尝试使用 JobOperator 类)。
如果 JUnit 不是正确的工具,我们如何对 java 批处理代码进行单元测试。
我正在使用 IBM 在 WAS Liberty 上运行的 JSR 352 实现
junit4 - Java Batch 的 JUnit 测试用例
我们有一个使用 Java Batch 的现有项目,我们需要为此编写 JUnit。在搜索时,我得到了 Spring Batch 的示例,但没有 Java Batch 的示例。有人可以分享一个例子吗?
java - Java-Batch:如何将数据从一个步骤传递到另一个步骤?
在我的 JBeret java-batch 作业中,我需要将参数从一个步骤传递到下一步。到目前为止,我只是想通过 JobContext.setTransientUserData() 来做到这一点。
我的问题是:transientUserData 方式是最佳实践方式还是有更好的选择?在批处理步骤之间传递参数是否很常见,或者在这方面步骤是否应该是自给自足的?