L2JPREMIUM  5M
com.premium.game.util.DBFactory Class Reference
Collaboration diagram for com.premium.game.util.DBFactory:

Public Member Functions

ThreadConnection getConnection () throws SQLException
 
Hashtable< String, ThreadConnectiongetConnections ()
 
void shutdown ()
 
String generateKey ()
 

Static Public Member Functions

static DBFactory getInstance () throws SQLException
 

Detailed Description

При работе с пулами коннектов иногда возникает ситуация - когда выбираешь весь пул до предела и при этом коннекты не закрываются а требуется получить еще один коннект. В этом случае программа зависает. Так бывает если в процессе выполнения одного запроса при переборке результатов вызывается другая функция, которая также берет коннект из базы данных. Таких вложений может быть много. И коннекты не отпускаются, пока не выполнятся самые глубокие запросы. DBCP и C3P0 висли при этом - опробовано на практике.

Для того чтобы избежать этой коллизии пишется оболочка для коннекта, которой коннект делегирует все свои методы. Эта оболочка хранится в локальном пуле коннектов и если коннект запрашивается в потоке - для которого был уже открыт коннект и еще не закрыт, то возвращаем его.

Эту возможность можно отключить выставив в настройках сервера UseDatabaseLayer = false;

Member Function Documentation

◆ generateKey()

String com.premium.game.util.DBFactory.generateKey ( )
inline

Генерация ключа для хранения коннекта Ключ равен хэш-коду текущего потока

Returns
сгенерированный ключ.

The documentation for this class was generated from the following file: