首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在spring batch中指向块中跳过的项和错误字段

问在spring batch中指向块中跳过的项和错误字段
EN

Stack Overflow用户
提问于 2012-02-21 21:08:35
回答 1查看 959关注 0票数 0

场景1

跳过监听器界面如下:

代码语言:javascript
复制
public interface SkipListener<T,S> extends StepListener {
 void onSkipInRead(Throwable t);
 void onSkipInProcess(T item, Throwable t);
 void onSkipInWrite(S item, Throwable t);
}

此接口最适合用于记录跳过的项和错误。

可以获得输入中跳过的项目的编号。例如,如果输入中的第10项被跳过,我应该能够记录“第10项被跳过!”通过上面的监听器。

我需要它,因为我将输入作为一个文件,其中的行没有任何标识键。因此,仅通过注销项目,就不可能在文件中锁定项目本身。

如果输入的是数据库表而不是文件怎么办?在那里也可以得到跳过的物品的位置号吗?

场景2

我的bean有三个属性,一、二和三(都是字符串),通过适当的行映射器从文件中读取输入,然后在经过一些处理后用数据加载数据库表。

以下是来自处理器的代码块:

代码语言:javascript
复制
if(two.charAt(4) == '_')
   { // do some processing }

显然,如果上述文件中的字段2为空,块将抛出"string index out of bound exception“,并将被跳过。

因此,在跳过侦听器中,我需要的是抛出错误的列的信息。

在这里,由于名为2的字段给出了错误,我想要登录跳过侦听器的信息将类似于"property one抛出错误“字符串索引越界异常”in line number 10“,或者如果可能的话,更具体的"Property one is empty in line number 10”,这对于不懂java行话的企业来说更有意义。

希望我说清楚了我的疑虑。

感谢您的阅读!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-28 01:58:24

场景1

要从读取文件中获取跳过项目的行号,可以执行以下操作:

  • for onSkipInRead -实现自己的/包装读取器以作用于exception
  • onSkipInProcess -实现自己的行映射器,它在步骤context
  • onsKipInWrite中将行号写入项目或写入当前行号-与onSkipInProcess

相同

要从读取表中获取跳过项目的行号,您可以执行以下操作:

  • for onSkipInRead -实现自己的/包装读取器以处理异常,但我不确定是否可以在此处获取行号,可能只是当前的chunk-start-number
  • onSkipInProcess -实现自己的行映射器,它在步骤context
  • onsKipInWrite中将行号写入项目或写入当前行号-与onSkipInProcess

相同

场景2

请参阅场景1并在处理器中添加try/catch块,因此您可以抛出自己的异常,例如使用有关属性位置的信息,或者以类似的方式更改步骤上下文

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9378160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档