Да - попробуйте / поймайте исключение, просмотрите сообщение об исключении, ищите ORA-04068
, и, если оно найдено, повторите запрос.
В идеале вам нужно сделать несколько повторных попыток.Что-то вроде:
for (int i = 0; i < 3; i++) {
try {
executeQuery();
break; //if successful;
} catch (..) {
if (!ex.getMessage().contains("ORA-06508")){
throw ex;
}
}
}
Выглядит немного странно, и я бы посоветовал вместо этого исправить исходную проблему.
Обновление:
Кажется, вам нужноделать это во многих местах, так что выше будет утомительно.Если вы действительно не можете исправить основную проблему оракула, вы можете попробовать обернуть объекты DataSource, Connection и Statement в свои собственные реализации, которые просто делегируют базовому объекту, но в случае executeQuery()
выполняет повторную попытку.