Хранить счетчик в последовательности оракула

Мне нужен совет по счетчику входящих запросов для веб-сервиса 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;
}

0 ответов

Другие вопросы по тегам