我已将 tomcat-dbcp.jar 从 tomcat lib 目录复制到 jdk 的 jre\lib\ext 目录,并且在我的应用程序的 context.xml 文件中编码如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/Conn_Pool">
<Resource name="jdbc/murach" auth="Container"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="1234"
driverClassName=" com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/murach"
logAbandoned="true" removeAbandoned="true"
removeAbandonedTimeout="60" type="javax.sql.DataSource"
/>
</Context>
和一个类 ConnectionPool.java 如下所示:
package data;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.*;
import javax.sql.DataSource;
import javax.naming.InitialContext;
public class ConnectionPool
{
private static ConnectionPool pool=null;
private static DataSource dataSource=null;
private ConnectionPool()
{
try
{
InitialContext ic = new InitialContext();
dataSource = (DataSource)ic.lookup("java:/comp/env/jdbc/murach");
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static ConnectionPool getInstance()
{
if(pool==null)
{
pool= new ConnectionPool();
}
return pool;
}
public Connection getConnection()
{
try
{
return dataSource.getConnection();
}
catch(SQLException sqle)
{
sqle.printStackTrace();
return null;
}
}
public void freeConnection(Connection c)
{
try{
c.close();
}
catch(SQLException sqle){
sqle.printStackTrace();
}
}
}
但公共连接 getConnection() 不起作用。
它不返回 dataSource.getConnection(); 在 try 块内。相反,它进入了 catch 块