Package xyz.cofe.sql.cpool.proxy
Class ConnectionTracker
java.lang.Object
xyz.cofe.sql.cpool.proxy.MethodCallAdapter
xyz.cofe.sql.cpool.proxy.ConnectionTracker
- All Implemented Interfaces:
MethodArgsRewrite,MethodCallListener,MethodCallRewrite
public class ConnectionTracker extends MethodCallAdapter
Трекер соединения с базой данных
- Author:
- Kamnev Georgiy
-
Field Summary
Fields Modifier and Type Field Description protected xyz.cofe.fn.Fn4<java.lang.Object,java.lang.Object,java.lang.reflect.Method,java.lang.Object[],java.lang.String>collectNameprotected java.lang.BooleanisClosedprotected booleansharedprotected booleantrackCloseprotected booleantrackStatementsprotected java.lang.ref.WeakReference<java.sql.Connection>wconnprotected java.lang.ref.WeakReference<ConnectPool>wcpool -
Constructor Summary
Constructors Constructor Description ConnectionTracker(ConnectPool cpool, java.sql.Connection conn) -
Method Summary
Modifier and Type Method Description voidbeginCall(java.lang.Object proxy, java.lang.Object source, java.lang.reflect.Method meth, java.lang.Object[] args)Вызывается перед началом методаprotected voidcollectActivity(java.lang.Object proxy, java.lang.Object source, java.lang.reflect.Method meth, java.lang.Object[] args)Собирает статистику вызова методаHookResultendCall(java.lang.Object proxy, java.lang.Object source, java.lang.reflect.Method meth, java.lang.Object[] args, java.lang.Object callResult, java.lang.Throwable err)Отслеживает вызов close() и создает событие ConnectPoolEvent.Disconnected.xyz.cofe.fn.Fn4<java.lang.Object,java.lang.Object,java.lang.reflect.Method,java.lang.Object[],java.lang.String>getCollectName()Указывает функцию определяющую имя метрики для методаbooleanisCollectActivity()Возвращает собирать или нет статистику вызова методовbooleanisRewriteCall(java.lang.Object proxy, java.lang.Object source, java.lang.reflect.Method method, java.lang.Object[] args)Определяет надо переопределять вызов метода или нетbooleanisShared()Соединение является общим (shared) для клиентов.booleanisTrackClose()Отслеживать вызов метода close().booleanisTrackStatements()Создавать proxy для Statementjava.lang.ObjectrewriteCall(java.lang.Object proxy, java.lang.Object source, java.lang.reflect.Method method, java.lang.Object[] args)Вызывается вместо вызова исходного метода, если вызов метода isRewriteCall вернуло truevoidsetCollectName(xyz.cofe.fn.Fn4<java.lang.Object,java.lang.Object,java.lang.reflect.Method,java.lang.Object[],java.lang.String> fn)Указывает функцию определяющую имя метрики для методаvoidsetShared(boolean shared)Соединение является общим (shared) для клиентовvoidsetTrackClose(boolean trackClose)Отслеживать вызов метода close()voidsetTrackStatements(boolean trackStatements)Создавать proxy для StatementMethods inherited from class xyz.cofe.sql.cpool.proxy.MethodCallAdapter
isRewriteArguments, rewriteArguments, setRewriteArguments
-
Field Details
-
wcpool
-
wconn
protected final java.lang.ref.WeakReference<java.sql.Connection> wconn -
collectName
protected volatile xyz.cofe.fn.Fn4<java.lang.Object,java.lang.Object,java.lang.reflect.Method,java.lang.Object[],java.lang.String> collectName -
trackClose
protected boolean trackClose -
trackStatements
protected boolean trackStatements -
shared
protected boolean shared -
isClosed
protected volatile java.lang.Boolean isClosed
-
-
Constructor Details
-
Method Details
-
getCollectName
public xyz.cofe.fn.Fn4<java.lang.Object,java.lang.Object,java.lang.reflect.Method,java.lang.Object[],java.lang.String> getCollectName()Указывает функцию определяющую имя метрики для метода- Returns:
- функция сопоставления имени метода и названия метрики
-
setCollectName
public void setCollectName(xyz.cofe.fn.Fn4<java.lang.Object,java.lang.Object,java.lang.reflect.Method,java.lang.Object[],java.lang.String> fn)Указывает функцию определяющую имя метрики для метода- Parameters:
fn- функция сопоставления метода и название метрики, если функция вернет null, то метрика не будет собираться для указанного метода
fn( proxy, source, method, arguments ) : metricName
-
isCollectActivity
public boolean isCollectActivity()Возвращает собирать или нет статистику вызова методов- Returns:
- true - собирать статистику
-
collectActivity
protected void collectActivity(java.lang.Object proxy, java.lang.Object source, java.lang.reflect.Method meth, java.lang.Object[] args)Собирает статистику вызова метода- Parameters:
proxy- прокси объект (содинение)source- исходный объектmeth- методargs- параметры метода- See Also:
setCollectName(xyz.cofe.fn.Fn4<java.lang.Object, java.lang.Object, java.lang.reflect.Method, java.lang.Object[], java.lang.String>)
-
isTrackClose
public boolean isTrackClose()Отслеживать вызов метода close().при закрытии соединения посылает сообщение ConnectPoolEvent.Disconnected в ConnectPool
- Returns:
- true - отслеживать вызов close
-
setTrackClose
public void setTrackClose(boolean trackClose)Отслеживать вызов метода close()- Parameters:
trackClose- true - отслеживать вызов close- See Also:
isTrackClose()
-
isTrackStatements
public boolean isTrackStatements()Создавать proxy для Statement- Returns:
- true - создавать proxy для Statement
-
setTrackStatements
public void setTrackStatements(boolean trackStatements)Создавать proxy для Statement- Parameters:
trackStatements- true - создавать proxy для Statement
-
isShared
public boolean isShared()Соединение является общим (shared) для клиентов.Если соединение является общим, то при вызове close прокси соединения, вызывается очистка связанных объектов (statements/resultset)
- Returns:
- true - является общим
-
setShared
public void setShared(boolean shared)Соединение является общим (shared) для клиентов- Parameters:
shared- true - является общим- See Also:
isShared()
-
beginCall
public void beginCall(java.lang.Object proxy, java.lang.Object source, java.lang.reflect.Method meth, java.lang.Object[] args)Description copied from interface:MethodCallListenerВызывается перед началом метода- Specified by:
beginCallin interfaceMethodCallListener- Overrides:
beginCallin classMethodCallAdapter- Parameters:
proxy- Прокси объектsource- Исходный объектmeth- Методargs- Аргументы
-
endCall
public HookResult endCall(java.lang.Object proxy, java.lang.Object source, java.lang.reflect.Method meth, java.lang.Object[] args, java.lang.Object callResult, java.lang.Throwable err)Отслеживает вызов close() и создает событие ConnectPoolEvent.Disconnected.
Отслеживает вызов createStatement, prepareCall, prepareStatement и создает прокси- Specified by:
endCallin interfaceMethodCallListener- Overrides:
endCallin classMethodCallAdapter- Parameters:
proxy- прокси соединения с бдsource- исходный объект соединения с бдmeth- методargs- аргументы вызоваcallResult- результат вызоваerr- исключение если оно было- Returns:
- результат перехвата
-
isRewriteCall
public boolean isRewriteCall(java.lang.Object proxy, java.lang.Object source, java.lang.reflect.Method method, java.lang.Object[] args)Description copied from interface:MethodCallRewriteОпределяет надо переопределять вызов метода или нет- Specified by:
isRewriteCallin interfaceMethodCallRewrite- Overrides:
isRewriteCallin classMethodCallAdapter- Parameters:
proxy- прокси объектаsource- исходный объектmethod- методargs- аргументы метода- Returns:
- true - необходимо переопределить вызов - вызвать rewriteCall
- See Also:
MethodCallRewrite.rewriteCall(Object, Object, Method, Object[])
-
rewriteCall
public java.lang.Object rewriteCall(java.lang.Object proxy, java.lang.Object source, java.lang.reflect.Method method, java.lang.Object[] args)Description copied from interface:MethodCallRewriteВызывается вместо вызова исходного метода, если вызов метода isRewriteCall вернуло true- Specified by:
rewriteCallin interfaceMethodCallRewrite- Overrides:
rewriteCallin classMethodCallAdapter- Parameters:
proxy- прокси объектаsource- исходный объектmethod- методargs- аргументы метода- Returns:
- результат вызова
-