public abstract class MultiHostConnectionProxy
extends java.lang.Object
implements java.lang.reflect.InvocationHandler
| Modifier and Type | Class and Description |
|---|---|
(package private) class |
MultiHostConnectionProxy.JdbcInterfaceProxy
Proxy class to intercept and deal with errors that may occur in any object bound to the current connection.
|
| Modifier and Type | Field and Description |
|---|---|
(package private) boolean |
autoReconnect |
(package private) boolean |
closedExplicitly |
(package private) java.lang.String |
closedReason |
protected ConnectionUrl |
connectionUrl |
(package private) JdbcConnection |
currentConnection |
(package private) java.util.List<HostInfo> |
hostsList |
(package private) boolean |
isClosed |
protected java.lang.Throwable |
lastExceptionDealtWith |
private static java.lang.String |
METHOD_ABORT |
private static java.lang.String |
METHOD_ABORT_INTERNAL |
private static java.lang.String |
METHOD_CLOSE |
private static java.lang.String |
METHOD_EQUALS |
private static java.lang.String |
METHOD_GET_AUTO_COMMIT |
private static java.lang.String |
METHOD_GET_CATALOG |
private static java.lang.String |
METHOD_GET_DATABASE |
private static java.lang.String |
METHOD_GET_MULTI_HOST_SAFE_PROXY |
private static java.lang.String |
METHOD_GET_SCHEMA |
private static java.lang.String |
METHOD_GET_SESSION_MAX_ROWS |
private static java.lang.String |
METHOD_GET_TRANSACTION_ISOLATION |
private static java.lang.String |
METHOD_IS_CLOSED |
(package private) JdbcConnection |
parentProxyConnection |
(package private) JdbcConnection |
thisAsConnection |
(package private) JdbcConnection |
topProxyConnection |
| Constructor and Description |
|---|
MultiHostConnectionProxy()
Initializes a connection wrapper for this MultiHostConnectionProxy instance.
|
MultiHostConnectionProxy(ConnectionUrl connectionUrl)
Constructs a MultiHostConnectionProxy instance for the given connection URL.
|
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
allowedOnClosedConnection(java.lang.reflect.Method method)
Checks if the given method is allowed on closed connections.
|
(package private) ConnectionImpl |
createConnectionForHost(HostInfo hostInfo)
Creates a new physical connection for the given
HostInfo. |
(package private) void |
dealWithInvocationException(java.lang.reflect.InvocationTargetException e)
Deals with InvocationException from proxied objects.
|
(package private) abstract void |
doAbort(java.util.concurrent.Executor executor)
Executes a abort() invocation;
|
(package private) abstract void |
doAbortInternal()
Executes a abortInternal() invocation;
|
(package private) abstract void |
doClose()
Executes a close() invocation;
|
(package private) java.lang.reflect.InvocationHandler |
getNewJdbcInterfaceProxy(java.lang.Object toProxy)
Instantiates a new JdbcInterfaceProxy for the given object.
|
(package private) JdbcConnection |
getNewWrapperForThisAsConnection()
Wraps this object with a new multi-host Connection instance.
|
protected JdbcConnection |
getParentProxy()
Get this connection's parent proxy.
|
protected JdbcConnection |
getProxy()
Get this connection's proxy.
|
(package private) int |
initializeHostsSpecs(ConnectionUrl connUrl,
java.util.List<HostInfo> hosts)
Initializes the hosts lists and makes a "clean" local copy of the given connection properties so that it can be later used to create standard
connections.
|
(package private) void |
invalidateConnection(JdbcConnection conn)
Invalidates the specified connection by closing it.
|
(package private) void |
invalidateCurrentConnection()
Invalidates the current connection.
|
java.lang.Object |
invoke(java.lang.Object proxy,
java.lang.reflect.Method method,
java.lang.Object[] args)
Proxies method invocation on the java.sql.Connection interface, trapping multi-host specific methods and generic methods.
|
(package private) abstract java.lang.Object |
invokeMore(java.lang.Object proxy,
java.lang.reflect.Method method,
java.lang.Object[] args)
Continuation of the method invocation process, to be implemented within each subclass.
|
(package private) boolean |
isMasterConnection()
Deprecated.
|
(package private) abstract boolean |
isSourceConnection()
Checks if current connection is to a source host.
|
(package private) abstract void |
pickNewConnection()
Picks the "best" connection to use from now on.
|
protected void |
propagateProxyDown(JdbcConnection proxyConn)
Propagates the connection proxy down through the multi-host connections chain.
|
(package private) java.lang.Object |
proxyIfReturnTypeIsJdbcInterface(java.lang.Class<?> returnType,
java.lang.Object toProxy)
If the given return type is or implements a JDBC interface, proxies the given object so that we can catch SQL errors and fire a connection switch.
|
protected void |
setProxy(JdbcConnection proxyConn)
Sets this connection's proxy.
|
(package private) abstract boolean |
shouldExceptionTriggerConnectionSwitch(java.lang.Throwable t)
Checks if the given throwable should trigger a connection switch.
|
(package private) void |
syncSessionState(JdbcConnection source,
JdbcConnection target)
Synchronizes session state between two connections.
|
(package private) void |
syncSessionState(JdbcConnection source,
JdbcConnection target,
boolean readOnly)
Synchronizes session state between two connections, allowing to override the read-only status.
|
private static final java.lang.String METHOD_GET_MULTI_HOST_SAFE_PROXY
private static final java.lang.String METHOD_EQUALS
private static final java.lang.String METHOD_CLOSE
private static final java.lang.String METHOD_ABORT_INTERNAL
private static final java.lang.String METHOD_ABORT
private static final java.lang.String METHOD_IS_CLOSED
private static final java.lang.String METHOD_GET_AUTO_COMMIT
private static final java.lang.String METHOD_GET_CATALOG
private static final java.lang.String METHOD_GET_SCHEMA
private static final java.lang.String METHOD_GET_DATABASE
private static final java.lang.String METHOD_GET_TRANSACTION_ISOLATION
private static final java.lang.String METHOD_GET_SESSION_MAX_ROWS
java.util.List<HostInfo> hostsList
protected ConnectionUrl connectionUrl
boolean autoReconnect
JdbcConnection thisAsConnection
JdbcConnection parentProxyConnection
JdbcConnection topProxyConnection
JdbcConnection currentConnection
boolean isClosed
boolean closedExplicitly
java.lang.String closedReason
protected java.lang.Throwable lastExceptionDealtWith
MultiHostConnectionProxy()
throws java.sql.SQLException
java.sql.SQLException - if an error occursMultiHostConnectionProxy(ConnectionUrl connectionUrl) throws java.sql.SQLException
connectionUrl - The connection URL.java.sql.SQLException - if an error occursint initializeHostsSpecs(ConnectionUrl connUrl, java.util.List<HostInfo> hosts)
connUrl - The connection URL that initialized this multi-host connection.hosts - The list of hosts for this multi-host connection.protected JdbcConnection getProxy()
protected JdbcConnection getParentProxy()
protected final void setProxy(JdbcConnection proxyConn)
proxyConn - The top level connection in the multi-host connections chain.protected void propagateProxyDown(JdbcConnection proxyConn)
proxyConn - The top level connection in the multi-host connections chain.JdbcConnection getNewWrapperForThisAsConnection() throws java.sql.SQLException
java.sql.SQLException - if an error occursjava.lang.Object proxyIfReturnTypeIsJdbcInterface(java.lang.Class<?> returnType,
java.lang.Object toProxy)
returnType - The type the object instance to proxy is supposed to be.toProxy - The object instance to proxy.java.lang.reflect.InvocationHandler getNewJdbcInterfaceProxy(java.lang.Object toProxy)
toProxy - The object instance to be proxied.void dealWithInvocationException(java.lang.reflect.InvocationTargetException e)
throws java.sql.SQLException,
java.lang.Throwable,
java.lang.reflect.InvocationTargetException
e - The Exception instance to check.java.sql.SQLException - if an error occursjava.lang.Throwable - if an error occursjava.lang.reflect.InvocationTargetException - if an error occursabstract boolean shouldExceptionTriggerConnectionSwitch(java.lang.Throwable t)
t - The Throwable instance to analyze.abstract boolean isSourceConnection()
@Deprecated boolean isMasterConnection()
isSourceConnection() instead.void invalidateCurrentConnection()
throws java.sql.SQLException
java.sql.SQLException - if an error occursvoid invalidateConnection(JdbcConnection conn) throws java.sql.SQLException
conn - The connection instance to invalidate.java.sql.SQLException - if an error occursabstract void pickNewConnection()
throws java.sql.SQLException
java.sql.SQLException - if an error occursConnectionImpl createConnectionForHost(HostInfo hostInfo) throws java.sql.SQLException
HostInfo.hostInfo - The host info instance.java.sql.SQLException - if an error occursvoid syncSessionState(JdbcConnection source, JdbcConnection target) throws java.sql.SQLException
source - The connection where to get state from.target - The connection where to set state.java.sql.SQLException - if an error occursvoid syncSessionState(JdbcConnection source, JdbcConnection target, boolean readOnly) throws java.sql.SQLException
source - The connection where to get state from.target - The connection where to set state.readOnly - The new read-only status.java.sql.SQLException - if an error occursabstract void doClose()
throws java.sql.SQLException
java.sql.SQLException - if an error occursabstract void doAbortInternal()
throws java.sql.SQLException
java.sql.SQLException - if an error occursabstract void doAbort(java.util.concurrent.Executor executor)
throws java.sql.SQLException
executor - executorjava.sql.SQLException - if an error occurspublic java.lang.Object invoke(java.lang.Object proxy,
java.lang.reflect.Method method,
java.lang.Object[] args)
throws java.lang.Throwable
invoke in interface java.lang.reflect.InvocationHandlerproxy - proxy objectmethod - method to invokeargs - method parametersjava.lang.Throwable - if an error occursabstract java.lang.Object invokeMore(java.lang.Object proxy,
java.lang.reflect.Method method,
java.lang.Object[] args)
throws java.lang.Throwable
proxy - proxy objectmethod - method to invokeargs - method parametersjava.lang.Throwable - if an error occursprotected boolean allowedOnClosedConnection(java.lang.reflect.Method method)
method - method