栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

具有Liberty Profile的JSR 352-当ItemReader执行数据库查询时如何实现检查点

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

具有Liberty Profile的JSR 352-当ItemReader执行数据库查询时如何实现检查点

您需要在阅读器中返回一个检查点值,该值

checkpointInfo()
open()

在重新启动时传递到阅读器的方法中。阅读器和批处理容器通过这种方式协调以在重新启动时提供检查点。

因此,您可能会遇到类似(查找 CHECKPOINT 注释)的情况:

public class DBItemReader implements ItemReader {    // ...    // CHECKPOINT field defined    private String checkpoint = null;    @Override    public void open(Serializable checkpoint) throws NamingException, SQLException {        // CHECKPOINT-based positioning through query value.        // Initial position = whereclauseFrom, on restart set to checkpoint        String queryVal = (String)(checkpoint == null ? whereclauseFrom : checkpoint);        if(Integer.parseInt(whereclauseFrom) == 5){ sql = "SELECt * FROM " + tableName + " WHERe  CAST(REC AS INTEGER) <= "+ queryVal;        }else if(Integer.parseInt(whereclauseFrom) == 6){ sql = "SELECt * FROM " + tableName + " WHERe  CAST(REC AS INTEGER) >= "+ queryVal;        }        // ..    }    @Override    public Object readItem() throws SQLException {        if (listRecObj.size() == 0) {   return null;        } else {  RecObj rec =null; Iterator<RecObj> iter =listRecObj.iterator(); while (iter.hasNext()) {         rec = iter.next();         // CHECKPOINT updated     checkpoint = rec.getRec();     if (Integer.parseInt(rec.getRec())  == 7) {         throw new IllegalStateException("Thrown Error");     } }        }        // ...    }    @Override    public Serializable checkpointInfo() {   // CHECKPOINT returned at end of chunk        return checkpoint;    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455137.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号