ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver
cpds.setJdbcUrl( "jdbc:mysql://localhost:3306/dragon" );
cpds.setUser("root");
cpds.setPassword("password");
cpds.setMaxPoolSize(50);
我创建了一个包含以下代码的java文件来配置ComboPooledDataSource对象。现在这个代码足以与数据库建立池化连接吗?
如果没有,我还应该做什么?
另外请告诉我如何在这里实现JNDI。
请说明,因为我是初学者。
答案 0 :(得分:2)
At First ...创建代码以在包含静态方法或变量的类中启动连接,如下所示..
private static ComboPooledDataSource cpds = new ComboPooledDataSource();
public static void MakePool()
{
try
{
cpds=new ComboPooledDataSource();
cpds.setDriverClass("com.mysql.jdbc.Driver");
cpds.setJdbcUrl("jdbc:mysql://localhost:3306/att_db");
cpds.setUser("root");
cpds.setPassword("dragon");
cpds.setMaxPoolSize(MaxPoolSize);
cpds.setMinPoolSize(MinPoolSize);
cpds.setAcquireIncrement(Accomodation);
}
catch (PropertyVetoException ex)
{
//handle exception...not important.....
}
}
public static Connection getConnection()
{
return cpds.getConnection();
}
完成后,创建另一个用于服务器操作的类....
并从池中获取连接...
try{
con=DatabasePool.getConnection();
// DatabasePool is the name of the Class made earlier....
.
.
.
. // Server operations as u wanted.....
.
.
}
catch(SQL EXCEPTION HERE)
{
.....
}
finally
{
if(con!=null)
{
con.close();
}
}
答案 1 :(得分:0)
我不熟悉JNDI,所以我不会解决这个问题(你可能想要一个单独的问题来详细了解你的目标),但我相信你确实已经正确配置了你的ComboPooledDataSource。
您应该能够使用这样的代码测试您的DataSource(为简单起见,排除异常处理):
ArrayList<Object[]> data = new ArrayList<Object[]>();
Connection connection = cpds.getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select a_column from a_table;");
int columnCount = resultSet.getMetaData().getColumnCount();
while (resultSet.next()) {
Object[] rowData = new Object[columnCount];
for (int i = 0; i < columnCount; i++) {
rowData[i] = resultSet.getObject(i + 1);
}
data.add(rowData);
}
答案 2 :(得分:0)
您使用c3p0来管理jdbc连接,不应使用jdni。 如果要使用jndi,则需要在Web容器中配置连接。 Tomcat喜欢
<Context>
<Resource name="jdbc/springflow" auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000" username="root"
password="" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test" />
</Context>
你可以像context.lookup("java:jdbc/springflow")
一样使用jndi。