Quote: There is nothing faster.1 There is nothing more correct. HikariCP is a "zero-overhead" production-quality connection pool. Coming in at roughly 50Kb, the library is extremely light.
https://github.com/brettwooldridge/HikariCP
Example Below.
1. Create a Pool class as follows
package pivotal.au.gemfirexd.demos.connectionpool;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class HikariGFXDPool
{
private static HikariGFXDPool instance = null;
private HikariDataSource ds = null;
static
{
try
{
instance = new HikariGFXDPool();
}
catch (Exception e)
{
throw new RuntimeException(e.getMessage(), e);
}
}
private HikariGFXDPool()
{
HikariConfig config = new HikariConfig();
config.setMaximumPoolSize(10);
config.setMinimumPoolSize(2);
config.setDataSourceClassName("com.vmware.sqlfire.internal.jdbc.ClientDataSource");
config.addDataSourceProperty("portNumber", 1527);
config.addDataSourceProperty("serverName", "192.168.1.6");
config.addDataSourceProperty("user", "app");
config.addDataSourceProperty("password", "app");
ds = new HikariDataSource(config);
}
public static HikariGFXDPool getInstance ()
{
return instance;
}
public Connection getConnection() throws SQLException
{
return ds.getConnection();
}
}
2. Create a Test Class as follows
package pivotal.au.gemfirexd.demos.connectionpool;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
public class TestPool
{
private Logger logger = Logger.getLogger(this.getClass().getSimpleName());
public void run () throws SQLException
{
Statement stmt = null;
ResultSet rset = null;
Connection conn = null;
HikariGFXDPool pool = HikariGFXDPool.getInstance();
try
{
conn = pool.getConnection();
stmt = conn.createStatement();
rset = stmt.executeQuery("select * from dept order by 1");
while (rset.next())
{
System.out.println(String.format("Dept[%s, %s, %s]",
rset.getInt(1),
rset.getString(2),
rset.getString(3)));
}
}
catch (SQLException se)
{
logger.log(Level.SEVERE, se.getMessage());
}
finally
{
if (stmt != null)
{
stmt.close();
}
if (rset != null)
{
rset.close();
}
if (conn != null)
{
conn.close();
}
}
}
public static void main(String[] args) throws SQLException
{
TestPool test = new TestPool();
test.run();
}
}
3. Run Test class and verify output as follows
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Dept[10, ACCOUNTING, NEW YORK]
Dept[20, RESEARCH, DALLAS]
Dept[30, SALES, CHICAGO]
Dept[40, OPERATIONS, BRISBANE]
Dept[50, MARKETING, ADELAIDE]
Dept[60, DEV, PERTH]
Dept[70, SUPPORT, SYDNEY]