Modifier and Type | Field and Description |
---|---|
static int |
MAX_TRIES
Maximum number of times we retry a call if the server says it's overloaded.
|
Constructor and Description |
---|
JDBCUtils() |
Modifier and Type | Method and Description |
---|---|
static <V> V |
callWithRetry(Callable<V> callable)
Tries to do a JDBC call even when the server is overloaded.
|
static Connection |
getConnection(DataSource dataSource)
Tries to acquire a
Connection through a DataSource even when the server is overloaded. |
static Connection |
getConnection(String url,
String user,
String password)
Tries to acquire a
Connection through the DriverManager even when the server is overloaded. |
static XAConnection |
getXAConnection(XADataSource xaDataSource)
Tries to acquire a
XAConnection through a XADataSource even when the server is overloaded. |
public static final int MAX_TRIES
public JDBCUtils()
public static <V> V callWithRetry(Callable<V> callable) throws SQLException
Oracle has problems opening and closing many connections in a short time span (ORA-12516, ORA-12519). It seems to have something to do with how closed sessions are not immediately accounted for by Oracle's PMON (process monitor). When we get these errors, we retry a few times with exponential backoff.
callable
- the callableSQLException
public static Connection getConnection(String url, String user, String password) throws SQLException
Connection
through the DriverManager
even when the server is overloaded.url
- a database url of the form jdbc:subprotocol:subname
user
- the database user on whose behalf the connection is being madepassword
- the user's passwordSQLException
public static Connection getConnection(DataSource dataSource) throws SQLException
Connection
through a DataSource
even when the server is overloaded.dataSource
- the data sourceSQLException
public static XAConnection getXAConnection(XADataSource xaDataSource) throws SQLException
XAConnection
through a XADataSource
even when the server is overloaded.xaDataSource
- the XA data sourceSQLException
Copyright © 2018 Nuxeo. All rights reserved.