在 Java 批次中从 reader 获取属性
Get Properties from reader in Java Batch
我在 WildFly 上有一个 Java 批处理 (JSR-352) 应用程序 运行。该应用程序正在公开 rest-api 以触发作业执行。我想向 Reader Class 提供一些来自 HTTP REST 请求的值。实现这个的最佳方法是什么?
REST API 工作开始的地方:
@PUT
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response handleFileReady(MyNotification notification) {
final Properties jobParams = new Properties();
jobParams.setProperty("filename", notification.getFileName());
BatchRuntime.getJobOperator().start("filetransfer", jobParams);
return Response.status(Response.Status.NO_CONTENT).build();
}
Reader 我想从以下位置读取值:
public class MyJobReader extends AbstractItemReader {
@Override
public Integer readItem() throws Exception {
// Get Values here
...
此外,目前我正在通过读取通知对象来设置属性中的字符串值,有没有更好的方法来提供整个对象?
通过注入 JobContext,我现在可以获得执行 ID:
public class MyJobReader extends AbstractItemReader {
@Inject
private JobContext jobContext;
@Override
public Integer readItem() throws Exception {
Properties pros = BatchRuntime.getJobOperator().getParameters(jobContext.getExecutionId());
您可以在您的 http 请求中将它们作为查询字符串传递,然后您的 REST 资源 class 将它们作为批处理作业参数传递。在您的作业 xml 文件中,您将作业参数作为 reader 的批处理属性传递给 reader。您的 reader class 然后将这些批处理属性作为 class 字段注入。
这是在 jberet-rest 中的做法。
我在 WildFly 上有一个 Java 批处理 (JSR-352) 应用程序 运行。该应用程序正在公开 rest-api 以触发作业执行。我想向 Reader Class 提供一些来自 HTTP REST 请求的值。实现这个的最佳方法是什么?
REST API 工作开始的地方:
@PUT
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response handleFileReady(MyNotification notification) {
final Properties jobParams = new Properties();
jobParams.setProperty("filename", notification.getFileName());
BatchRuntime.getJobOperator().start("filetransfer", jobParams);
return Response.status(Response.Status.NO_CONTENT).build();
}
Reader 我想从以下位置读取值:
public class MyJobReader extends AbstractItemReader {
@Override
public Integer readItem() throws Exception {
// Get Values here
...
此外,目前我正在通过读取通知对象来设置属性中的字符串值,有没有更好的方法来提供整个对象?
通过注入 JobContext,我现在可以获得执行 ID:
public class MyJobReader extends AbstractItemReader {
@Inject
private JobContext jobContext;
@Override
public Integer readItem() throws Exception {
Properties pros = BatchRuntime.getJobOperator().getParameters(jobContext.getExecutionId());
您可以在您的 http 请求中将它们作为查询字符串传递,然后您的 REST 资源 class 将它们作为批处理作业参数传递。在您的作业 xml 文件中,您将作业参数作为 reader 的批处理属性传递给 reader。您的 reader class 然后将这些批处理属性作为 class 字段注入。
这是在 jberet-rest 中的做法。