JdbcContext

public final class JdbcContext extends CloseableObjAbst

Создаёт контекст, в рамках которого можно отслеживать, для какой формы, рабочей сессии, и gtk сессии выделяется jdbc соединение. Экземпляр класса регистрируется для потока. Содержит список PID (Process ID) sql-соединений, используемых в данном потоке. Необходим для мониторинга состояния сервера.

Constructors

JdbcContext

public JdbcContext()

Methods

acquirePID

public synchronized boolean acquirePID(String dbAlias, String pool, int pid)

Увеличивает счётчик блокировок PID’а, что блокирует закрытие соединения, которому сответсвует данный PID. Поток, владеющий этим соединением, будет ожидать уменьшения счётчика до “0”.

Parameters:
  • dbAlias – Псевдоним решения/БД.

  • pool – Краткое имя пула соединений в контексте решения.

  • pid – Process ID соединения.

Returns:

true, если увеличение счётчика завершилось успешно, иначе - false.

closeAndRemoveThreadJdbcContext

public static void closeAndRemoveThreadJdbcContext()

Разрегистрирует JdbcContext текущего потока и закрывает его.

Throws:
  • ApplicationException – Если что-то пошло не так.

forActiveSession

public <R> R forActiveSession(CoreSession coreSession, AppFunction<R> func)

Выполняет добавление Core-сессии в стек JdbcContext’a, выполнение анонимного метода, изъятие Core-сессии из стека JdbcContext’a.

Parameters:
  • coreSession – Core-сессия

  • func – Анонимный метод

  • <R> – Тип результата анонимного метода

Throws:
  • ApplicationException – Если что-то пошло не так.

Returns:

Результат анонимного метода

forActiveSession

public void forActiveSession(CoreSession coreSession, AppProcedure proc)

Выполняет добавление Core-сессии в стек JdbcContext’a, выполнение анонимного метода, изъятие Core-сессии из стека JdbcContext’a.

Parameters:
  • coreSession – Core-сессия

  • proc – Анонимный метод

Throws:
  • ApplicationException – Если что-то пошло не так.

forThread

public static void forThread(AppProcedure proc)

Инициализирует новый JdbcContext для текущего потока, если контекст отсутствует, и выполняет анонимный метод

Parameters:
  • proc – Анонимный метод

Throws:
  • ApplicationException – Если что-то пошло не так.

forThread

public static void forThread(JdbcContext jdbcContext, AppProcedure proc)

Устанавливает переданный JdbcContext для текущего потока и выполняет анонимный метод

Parameters:
  • jdbcContext – JdbcContext

  • proc – Анонимный метод

Throws:
  • ApplicationException – Если что-то пошло не так.

forThread

public static <R> R forThread(ForwardFunction<R> func)

Инициализирует новый JdbcContext для текущего потока, если контекст отсутствует, и выполняет анонимный метод

Parameters:
  • func – анонимный метод

  • <R> – Тип результата анонимного метода

Throws:
  • ApplicationException – Если что-то пошло не так.

Returns:

результат вызова анонимного метода

forThread

public static <R> R forThread(JdbcContext jdbcContext, ForwardFunction<R> func)

Инициализирует новый JdbcContext для текущего потока и выполняет анонимный метод

Parameters:
  • jdbcContext – JdbcContext

  • func – анонимный метод

  • <R> – Тип результата анонимного метода

Throws:
  • ApplicationException – Если что-то пошло не так.

Returns:

результат вызова анонимного метода

getActiveSessionCount

public synchronized int getActiveSessionCount()
Returns:

Число уникальных GTK-сессий в текущем стеке вызовов.

getGtkSessionEntry

public synchronized JdbcContext.GtkSessionEntry getGtkSessionEntry(CoreSession coreSession)

getGtkSessionEntryArray

public synchronized JdbcContext.GtkSessionEntry[] getGtkSessionEntryArray()

getJdbcConnectionEntryArray

public synchronized JdbcContext.JdbcConnectionEntry[] getJdbcConnectionEntryArray()
Returns:

Список структур, содержащих информацию о Jdbc-соединениях

getOptionalThreadContext

public static Optional<JdbcContext> getOptionalThreadContext()

getPidVersion

public synchronized Long getPidVersion(String dbAlias, String pool, int pid)

Возвращает значение счётчика регистраций для sql-соединения с указанными параметрами

Parameters:
  • dbAlias – Псевдоним решения/БД.

  • pool – Краткое имя пула соединений в контексте решения.

  • pid – Process ID соединения.

Returns:

значение счётчика регистраций

getThreadContext

public static JdbcContext getThreadContext()

Возвращает JdbcContext, зарегистрированный ранее для текущего потока.

Throws:
  • ApplicationRuntimeException – , если JdbcContext не инициализтрован для потока

Returns:

JdbcContext текущего потока

newInstance

public static JdbcContext newInstance()

Инициализирует новый экземпляр контекста

Returns:

JdbcContext

onClose

protected void onClose()

peekActiveJdbcConnectionEntry

public synchronized JdbcContext.JdbcConnectionEntry peekActiveJdbcConnectionEntry()
Returns:

Активное jdbc-соединение, для текущей GTK-сесиии

peekActiveSession

public synchronized CoreSession peekActiveSession()
Returns:

Текущая активная сессия

popActiveSession

public synchronized CoreSession popActiveSession()

Вынимает из стека активных сессий последнюю добавленную

Throws:
  • ApplicationException – Что-то пошло не так.

Returns:

Вынутая из стека сессия

pushActiveSession

public synchronized void pushActiveSession(CoreSession coreSession)

Помещает сессию в стек активных сессий

Parameters:
  • coreSession – прикладная сессия

registerJdbcConnection

public synchronized void registerJdbcConnection(String dbAlias, String pool, Connection jdbcConnection, int pid)

Регистрирует PID в JdbcContext текущего потока.

Parameters:
  • dbAlias – Псевдоним решения/БД.

  • pool – Краткое имя пула соединений в контексте решения.

  • jdbcConnection – Соединение с БД.

  • pid – Process ID - идентификатор соединения в БД.

registerSession

public synchronized void registerSession(CoreSession coreSession)

Регистрирует CoreSession

Parameters:
  • coreSession – прикладная сессия

registerThreadJdbcContext

public static JdbcContext registerThreadJdbcContext()

Создаёт и регистрирует JdbcContext для текущего потока, если объкект не был зарегистррован ранее. Создание новых контекстов должно производится только в начале работы рабочего сеанса (WorkSession)

Returns:

JdbcContext текущего потока

releasePID

public synchronized void releasePID(String dbAlias, String pool, int pid)

Уменьшает счётчик блокировок PID’а.

Parameters:
  • dbAlias – Псевдоним решения/БД.

  • pool – Краткое имя пула соединений в контексте решения.

  • pid – Process ID соединения.

removeClosedJdbcConnections

public synchronized void removeClosedJdbcConnections(CoreSession coreSession)

Удаляет ссылки на Jdbc-соединения, для которых не был вызыван метод close() в следствии аварийного закрытыя (особеннность Postgres).

Parameters:
  • coreSession – Gtk-сессия, которой ограничен список проверчемых Jdbc-соединений.

removeClosedJdbcConnections

public synchronized void removeClosedJdbcConnections(CoreSession coreSession, boolean logOpened)

Удаляет ссылки на Jdbc-соединения, для которых не был вызыван метод close() в следствии аварийного закрытыя (особеннность Postgres).

Parameters:
  • coreSession – Gtk-сессия, которой ограничен список проверчемых Jdbc-соединений.

  • logOpened – Управляет записью в лог сообщения о наличии не закрытых SQL-соединений.

removeClosedJdbcConnections

public synchronized void removeClosedJdbcConnections()

Удаляет ссылки на Jdbc-соединения, для которых не был вызыван метод close() в следствии аварийного закрытыя (особеннность Postgres).

removeJdbcConnection

public synchronized void removeJdbcConnection(String dbAlias, String pool, Connection jdbcConnection, int pid)

Разрегистрирует PID в JdbcContext текущего потока

Parameters:
  • dbAlias – Псевдоним решения/БД.

  • pool – Краткое имя пула соединений в контексте решения.

  • jdbcConnection – соединение с БД

  • pid – Process ID

removeSession

public synchronized void removeSession(CoreSession coreSession)

Разрегистрирует CoreSession

Parameters:
  • coreSession – прикладная сессия

removeThreadJdbcContext

public static void removeThreadJdbcContext()

Deprecated since version Название: не даёт понимания, что же происходит с контекстом

Разрегистрирует JdbcContext текущего потока и закрывает его.

Throws:
  • ApplicationException – Если что-то пошло не так.

setThreadContext

public static JdbcContext setThreadContext(JdbcContext jdbcContext)

Устанавливает экземпляр JdbcContext в текущий поток.

Parameters:
  • jdbcContext – JdbcContext

Throws:
  • ApplicationRuntimeException – , если JdbcContext для потока уже был установлен

Returns:

jdbc-контекст