Interface BalanceStrategy
- All Superinterfaces:
Extension
- All Known Implementing Classes:
BestResponseTimeBalanceStrategy, RandomBalanceStrategy, SequentialBalanceStrategy, ServerAffinityStrategy
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 TypeMethodDescriptionpickConnection(LoadBalancedConnectionProxy proxy, List<String> configuredHosts, Map<String, ConnectionImpl> liveConnections, long[] responseTimes, int numRetries) Called by the driver to pick a new connection to route requests over.
-
Method Details
-
pickConnection
ConnectionImpl pickConnection(LoadBalancedConnectionProxy proxy, List<String> configuredHosts, Map<String, ConnectionImpl> liveConnections, long[] responseTimes, int numRetries) throws SQLException Called by the driver to pick a new connection to route requests over.- Parameters:
proxy- 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- the list of hosts/ports (in "host:port" form) as passed in by the user.liveConnections- a map of host/ports to "live" connections to them.responseTimes- the list of response times for a transaction for each host in the configured hosts list.numRetries- the number of times the driver expects this strategy to re-try connection attempts if creating a new connection fails.- Returns:
- the physical JDBC connection for the application to use, based upon the strategy employed.
- Throws:
SQLException- if a new connection can not be found or created by this strategy.- See Also:
-