2017-06-12 124 views
0

是否有任何方式在read(),updated()和open()方法之外的任何其他方式在executioncontext中添加条目。如何编辑ExecutionContext弹簧批处理

像在下面的代码中,我试图在close方法中添加条目。

在上述示例中,我无法更新新条目。 它只能以只读的方式工作。我可以读取数据但不写入。

class abc{ 
@Autowired 
private ExecutionContext executionContext; 

    public AccountDetails mapFieldSet(FieldSet fieldSet) throws BindException { 

        executionContext.putLong(Constants.CONTEXT_COUNT_KEY.getStrValue(), 47); 

     return accDetailsObj; 
     } 

} 

我还需要在其他类中更新executionContext。 有什么办法吗?

+0

你能分享你的阅读器的配置吗? –

回答

0

您只需使用put(String key, Object value)覆盖已存在的值。 执行上下文由ConcurrentHashMap支持,所以如果你真的想它,你可以通过反射得到参照,然后使用computeIfAbsent等..

还指望在AbstractItemCountingItemStreamItemReader已经实现,如果从它继承(和你)这应该已经解决了。

+0

已经用put(,)试过了。请查看更新的代码..我想编辑mapper类中的executioncontext,其中当前代码中我只能读取数据。如果我在批处理表中将数据放入执行上下文中,它不会反映在步骤执行上下文表 –

+0

中,我不明白。你的目标是什么?你想传播'ExecutionContext'到'StepContext'吗? –

+0

要重试作业我想要确切的值/计数哪里工作失败..从这一点我想重试工作..在当前的情况下,如果作业执行失败它存储块的值不是确切的位置块失败 –