Хранить счетчик в последовательности оракула
Мне нужен совет по счетчику входящих запросов для веб-сервиса Java ejb. Сервер приложений, на котором развернут веб-сервис, имеет 4 узла, поэтому входящий запрос может быть обработан на любом из 4, и я решил сохранить значение счетчика в базе данных Oracle. Я установил текущий номер запроса, позвонив select SEQPACKSCYCLETOT.NEXTVAL from dual
и работает нормально.
Но мне также нужно показать текущее значение счетчика, и здесь есть проблема. Когда я звоню select SEQPACKSCYCLETOT.CURRVAL from dual
иногда я получаю исключение sequence SEQPACKSCYCLETOT.CURRVAL is not yet defined in this session
,
О каком сеансе идет речь и как с ним работать? Вот фрагмент кода:
@Singleton
public class DbWorkerImpl implements DbWorker {
@Override
public Long getPacksTotSeqValue() throws SQLException {
String query = "select SEQPACKSCYCLETOT.CURRVAL from dual";
Long packetsCount = null;
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = ds.getConnection(Username, Password);
stmt = conn.createStatement();
rs = stmt.executeQuery(query);
if (rs.next())
packetsCount = rs.getLong(1);
}
catch (SQLException e) {
logS.debug(this.servername + e.getMessage());
}
finally{
if (rs!=null) rs.close();
if (stmt!=null) stmt.close();
if (conn!=null) conn.close();
}
return packetsCount;
}