com.mysql.jdbc
Interface BalanceStrategy
- All Superinterfaces:
- Extension
- All Known Implementing Classes:
- BestResponseTimeBalanceStrategy, RandomBalanceStrategy
public interface BalanceStrategy
- extends Extension
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.
pickConnection
Connection pickConnection(LoadBalancingConnectionProxy proxy,
java.util.List configuredHosts,
java.util.Map liveConnections,
long[] responseTimes,
int numRetries)
throws java.sql.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:
java.sql.SQLException
- if a new connection can not be found or created by this
strategy.- See Also:
LoadBalancingConnectionProxy.createConnectionForHost(String)