高分求一个关于Bean的简单问题
lichp 2003-12-29 04:49:35 问题是这样的,我参照书写了一个连接池的Bean名叫:connPool.java
然后又写了一个连接MySql的Bean名叫:mySqlConn.java
分别编译的时候都可以顺利编译,但现在我想把这他们整合,就是让mySqlConn使用connPool打开数据库,我的代码如下:
=============connPool.java===============
package common;
import java.lang.*;
import java.sql.*;
import java.util.*;
import javax.servlet.*;
public class connPool{
private static final int defaultMaxConnections = 3;
private Vector freeConnections;
private Hashtable boundConnections;
private static final String driverName = "org.gjt.mm.mysql.Driver";
private static final String jdbcURL = "jdbc:mysql://localhost/univessence";
private static final String username = "root";
private static final String password = "";
private int maxConnections;
public connPool(int numConnections){
maxConnections = numConnections;
boundConnections = null;
freeConnections = null;
}
public connPool(){
this(defaultMaxConnections);
}
public void closeDB() throws SQLException{
if (boundConnections != null){
for(Enumeration e = boundConnections.elements();
e.hasMoreElements();){
Connection conn = (Connection)e.nextElement();
conn.close();
}
boundConnections.clear();
boundConnections = null;
}
if (freeConnections != null){
for (Enumeration e = freeConnections.elements();
e.hasMoreElements();){
Connection conn = (Connection)e.nextElement();
conn.close();
}
freeConnections.removeAllElements();
freeConnections = null;
}
}
public synchronized Connection getConnection()
throws SQLException{
if (freeConnections == null)
throw new SQLException(
"The connection pool has not been established yet.");
if (boundConnections.get(Thread.currentThread()) != null)
throw new SQLException(
"Cannot get connections over once for this current running thread.");
try{
if (freeConnections.size() == 0)
wait();
}
catch(InterruptedException ex){
throw new SQLException(ex.toString());
}
Connection conn = (Connection)freeConnections.firstElement();
freeConnections.removeElement(conn);
boundConnections.put(Thread.currentThread(),conn);
return conn;
}
public void openDB(String drvName,String url,
String uname,String passwd)
throws SQLException{
try{
boundConnections = new Hashtable(maxConnections);
freeConnections = new Vector(maxConnections);
Class.forName(drvName);
for (int i=0;i<maxConnections;i++)
freeConnections.addElement(
DriverManager.getConnection(url,uname,passwd));
}
catch(Exception ex){
boundConnections = null;
freeConnections = null;
throw new SQLException(ex.toString());
}
}
public synchronized void returnConnection()
throws SQLException{
Connection conn =
(Connection)boundConnections.remove(
Thread.currentThread());
if (conn == null)
throw new SQLException(
"The connection which this current running thread got is not found.");
freeConnections.addElement(conn);
notify();
}
public void setConnectionSwitch(String on_off)
throws ServletException{
try{
if (on_off.equalsIgnoreCase("ON"))
openDB(driverName,jdbcURL,username,password);
else if (on_off.equalsIgnoreCase("OFF"))
closeDB();
}
catch(SQLException ex){
throw new ServletException(ex.toString());
}
}
}
=============mySqlConn.java===============
package common;
import java.lang.*;
import java.sql.*;
import javax.servlet.*;
public class mySqlConn{
private Connection conn;
private ResultSet rs;
private ResultSetMetaData rsmd;
private Statement stmt;
private ConnPool connPool; //错误就是在这行产生的
private static final String driverName = "org.gjt.mm.mysql.Driver";
private static final String jdbcURL = "jdbc:mysql://localhost/univessence";
private static final String username = "root";
private static final String password = "";
public mySqlConn(){
conn = null;
rs = null;
rsmd = null;
stmt = null;
}
//由于字数限制,代码不能完全贴出来
}
mySqlConn.java:12:cannot resolve symbol
symbol:class ConnPool
location:common.mySqlConn
private ConnPool connPool; 这是错误之一,几个错误是一样的,我想其中一个解决了另几个就很容易了