Top Description Methods
com.mysql.cj.jdbc.ha

public Interface BalanceStrategy

Known Direct Implementers
com.mysql.cj.jdbc.ha.BestResponseTimeBalanceStrategy, com.mysql.cj.jdbc.ha.RandomBalanceStrategy, com.mysql.cj.jdbc.ha.SequentialBalanceStrategy
Imports
java.lang.reflect.InvocationHandler, java.sql.SQLException, java.util.List, .Map, com.mysql.cj.jdbc.JdbcConnection

Implement this interface to provide a new load balancing strategy for URLs of the form "jdbc:mysql:loadbalance://..", and provide the implementation class name as the configuration parameter "loadBalanceStrategy". The driver will not pass in a Connection instance when calling init(), but it will pass in the Properties, otherwise it acts like a normal Extension. One instance of a strategy *per* JDBC connection instance will be created. If you need singleton-like behavior, you're on your own to provide it.

Method Summary

Modifier and TypeMethod and Description
public JdbcConnection

Returns:

the physical JDBC connection for the application to use, based upon the strategy employed.
pickConnection
(InvocationHandler
the InvocationHandler that deals with actual method calls to the JDBC connection, and serves as a factory for new connections for this strategy via the createConnectionForHost() method. This proxy takes care of maintaining the response time list, map of host/ports to live connections, and taking connections out of the live connections map if they receive a network-related error while they are in use by the application.
proxy
,
List<String>
the list of hosts/ports (in "host:port" form) as passed in by the user.
configuredHosts
,
Map<String, JdbcConnection>
a map of host/ports to "live" connections to them.
liveConnections
,
long[]
the list of response times for a transaction for each host in the configured hosts list.
responseTimes
,
int
the number of times the driver expects this strategy to re-try connection attempts if creating a new connection fails.
numRetries
)

Called by the driver to pick a new connection to route requests over.

Method Detail

pickConnectionback to summary
public JdbcConnection pickConnection(InvocationHandler proxy, List<String> configuredHosts, Map<String, JdbcConnection> liveConnections, long[] responseTimes, int numRetries) throws SQLException

Called by the driver to pick a new connection to route requests over. See LoadBalancedConnectionProxy.createConnectionForHost(String)

Parameters
proxy:InvocationHandler

the InvocationHandler that deals with actual method calls to the JDBC connection, and serves as a factory for new connections for this strategy via the createConnectionForHost() method. This proxy takes care of maintaining the response time list, map of host/ports to live connections, and taking connections out of the live connections map if they receive a network-related error while they are in use by the application.

configuredHosts:List<String>

the list of hosts/ports (in "host:port" form) as passed in by the user.

liveConnections:Map<String, JdbcConnection>

a map of host/ports to "live" connections to them.

responseTimes:long[]

the list of response times for a transaction for each host in the configured hosts list.

numRetries:int

the number of times the driver expects this strategy to re-try connection attempts if creating a new connection fails.

Returns:JdbcConnection

the physical JDBC connection for the application to use, based upon the strategy employed.

Exceptions
SQLException:
if a new connection can not be found or created by this strategy.