上面是我的数据库连接池代码,下面我用这个servlet调用
package project1;import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*; public class TestServlet extends HttpServlet {
private DBConnectionManager connMgr;
public void init(ServletConfig conf) throws ServletException {
super.init(conf);
connMgr = DBConnectionManager.getInstance();
}
public void service(HttpServletRequest req, HttpServletResponse res) throws IOException {
res.setContentType("text/html;charset=gb2312");
PrintWriter out = res.getWriter();
Connection con = connMgr.getConnection("oracle");
if(con==null)
{
out.println("Cant get connection");
return;
}
ResultSet rs = null;
ResultSetMetaData md = null;
Statement stmt = null;
try {
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT * FROM sale_info");
out.print("can get select ");
md = rs.getMetaData();
out.println("sale infomation ");
out.println("<Table border=2>");
while (rs.next()) {
out.println("<tr>");
for (int i =1; i<md.getColumnCount(); i++) {
out.print("<td>"+rs.getString(i) + "</td>");
}
out.print("</tr>");
}
out.println("</table>");
stmt.close();
//rs.close();
}
catch (SQLException e) {
e.printStackTrace(out);
}
connMgr.freeConnection("oracle", con);
}public void destroy() {
connMgr.release();
super.destroy();
}
}
package project1;import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*; public class TestServlet extends HttpServlet {
private DBConnectionManager connMgr;
public void init(ServletConfig conf) throws ServletException {
super.init(conf);
connMgr = DBConnectionManager.getInstance();
}
public void service(HttpServletRequest req, HttpServletResponse res) throws IOException {
res.setContentType("text/html;charset=gb2312");
PrintWriter out = res.getWriter();
Connection con = connMgr.getConnection("oracle");
if(con==null)
{
out.println("Cant get connection");
return;
}
ResultSet rs = null;
ResultSetMetaData md = null;
Statement stmt = null;
try {
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT * FROM sale_info");
out.print("can get select ");
md = rs.getMetaData();
out.println("sale infomation ");
out.println("<Table border=2>");
while (rs.next()) {
out.println("<tr>");
for (int i =1; i<md.getColumnCount(); i++) {
out.print("<td>"+rs.getString(i) + "</td>");
}
out.print("</tr>");
}
out.println("</table>");
stmt.close();
//rs.close();
}
catch (SQLException e) {
e.printStackTrace(out);
}
connMgr.freeConnection("oracle", con);
}public void destroy() {
connMgr.release();
super.destroy();
}
}
logfile=F:\\log.txt
oracle.maxconn=100
oracle.url=jdbc:oracle:thin:@hupeng:1521:dd
oracle.user="scott"
oracle.password="as680168"
问题是,我现在对这个怎样调用数据库连接池的问题感到很迷惑?不是很清楚这个servlet是怎样去调用连接池的?
执行后页面就是显示servlet中if语句的Cant get connection,不能把数据库中的数据显示出来,这是什么问题啊?然后日志文件显示:
Mon Apr 14 09:27:02 CST 2008: 成功注册JDBC驱动程序oracle.jdbc.driver.OracleDriver
Mon Apr 14 09:27:02 CST 2008: 成功创建连接池oracle
Mon Apr 14 09:27:02 CST 2008: 正确返回数据库连接
Mon Apr 14 09:27:02 CST 2008: 无法取得新连接
高手帮帮忙啊~~~先谢谢咯
public DBPlugIn() {
}
public void destroy() {
}
public DataSource getDS(){
DataSource ds = (DataSource) servlet.getServletContext().getAttribute("datasourcdName");//根据数据源名取得数据源
retur ds;
}
}
ex.printStackTrace(); // 把异常打印出来
log("无法取得新连接");
} 已经看到好多人把异常屏蔽了,简单的打印一句:"出错了”。 真奇怪。都是哪些人误导的呢???
的,和DBConnection.java怎样工作不是很明白?麻烦回答一下~~~
if(con==null)
{
out.println("Cant get connection");
return;
}
还是调试追踪以下 connection ……
logfile=F:\\log.txt
oracle.maxconn=100
oracle.url=jdbc:oracle:thin:@hupeng:1521:dd
oracle.user="scott"
oracle.password="as680168"
没有执行下面的Select语句,也没有抛出异常
F:\\log.txt 记录信息:
Tue Apr 15 08:45:27 CST 2008: 撤销JDBC驱动程序 oracle.jdbc.driver.OracleDriver的注册
Tue Apr 15 08:45:30 CST 2008: 成功注册JDBC驱动程序oracle.jdbc.driver.OracleDriver
Tue Apr 15 08:45:30 CST 2008: 成功创建连接池oracle
Tue Apr 15 08:45:30 CST 2008: 正确返回数据库连接
Tue Apr 15 08:45:30 CST 2008: 无法取得新连接这个日志文件又记录的成功创建了连接池的和返回数据库连接的,感觉与打印出来的信息有点矛盾样?
麻烦各位回答一下,小弟在线等待啊~~~
08/04/15 15:37:25 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:138)
08/04/15 15:37:25 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:175)
08/04/15 15:37:25 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:240)这是JDeveloper控制台中显示的信息?是那里的问题呢?
private Connection newConnection() {
Connection con = null;
try {
if (user != null) {
con = DriverManager.getConnection(URL);
log("建立数据库连接URL");
}
}
catch (Exception e) {
log("无法取得新连接");
}
return con;
} DriverManager.getConnection("url","name","password");