Java Batch API: прослушиватель для обработки исключений, созданных ItemReader.open()

Есть ли какой-нибудь интерфейс слушателя, который можно было бы реализовать для обработки исключений, вызванных методами ItemReader.open()? Существует множество интерфейсов прослушивателя, но ни один из них не подходит для этого. т. е. ItemReadListener перехватывает только исключения из ItemReader.readItem() (аналогично ChunkListener или ItemProcessListener и т. д.)

Существуют интерфейсы JobListener и StepListener, но эти два не определяют методы, которые будут вызываться в случае исключения.

Есть ли способ, как это сделать?


person bambula    schedule 26.02.2019    source источник


Ответы (1)


Вы можете использовать ChunkListener#onError(Exception e), чтобы "поймать" любое исключение в чанке. Это будет работать в определенных реализациях, таких как WebSphere Liberty/Open Liberty, но может работать не во всех реализациях (поскольку это было серой областью спецификации).

person Scott Kurz    schedule 26.02.2019
comment
ItemReader.open() выходит за рамки ChukListener. Если я правильно понимаю концепцию, open() вызывается перед выполнением чанков. Однако ChukListener.onError() не улавливает исключение. По крайней мере, в JBeret реализация JSR352 - person bambula; 26.02.2019
comment
Я понимаю. Я работаю над WebSphere Liberty Batch, и здесь мы вызываем ChunkListener. Но справедливости ради по отношению к JBeret, здесь определенно было место для интерпретации требований спецификации, и я не удивлюсь, если они реализовали это по-другому. Я пометил это jberet на случай, если это поможет. - person Scott Kurz; 26.02.2019
comment
Можете ли вы уточнить свой вариант использования и для какой цели вы хотите обработать это исключение? Я хотел бы лучше понять это, чтобы выяснить, как решить эту проблему в JBeret. - person cheng; 27.02.2019