- 论坛徽章:
- 0
|
/***poolManager.java***/
package org.zhengmao.soft;
import java.io.*;
import java.net.MalformedURLException;
import java.sql.*;
import java.util.*;
// Referenced classes of package org.zhengmao.soft:
// Connect, connParam, poolThread
public class poolManager
{
/* member class not found */
class connectionPool {}
private static int umax;
private static int umin;
private static connParam connparam;
private boolean flag;
private boolean supportTransaction;
private static poolManager instance = null;
private static int clients = 0;
private Vector drivers;
private PrintWriter log;
private Hashtable pools;
private static String logfile = "c:/log.txt";
private static boolean isChecked = false;
private String DBdriver = "";
private poolManager()
{
supportTransaction = false;
drivers = new Vector();
pools = new Hashtable();
init();
Thread thread = new Thread(new poolThread(instance));
thread.start();
flag = true;
}
public poolManager(connParam connparam1)
throws SQLException
{
supportTransaction = false;
if(connparam1 == null)
{
throw new SQLException("connParam cannot be Emptyed!" ;
}
if(instance == null)
{
connparam = connparam1;
instance = new poolManager();
}
}
private void createPools()
{
connectionPool connectionpool = null;
try
{
connectionpool = new connectionPool(connparam);
}
catch(SQLException sqlexception)
{
System.err.println("\u521B\u5EFA\u8FDE\u63A5\u6C60\u65F6\u5931\u8D25\uFF1A" + sqlexception.toString());
}
pools.put(connparam.getPoolName(), connectionpool);
log("\u6210\u529F\u521B\u5EFA\u8FDE\u63A5\u6C60" + connparam.getPoolName());
}
public void freeConnection(String s, Connection connection)
{
connectionPool connectionpool = (connectionPool)pools.get(s);
if(connectionpool != null)
{
connectionpool.freeConnection(connection);
}
}
public Connection getConnection(String s)
{
connectionPool connectionpool = (connectionPool)pools.get(s);
if(connectionpool != null)
{
return connectionpool.getConnection();
} else
{
return null;
}
}
public Connection getConnection(String s, long l)
{
connectionPool connectionpool = (connectionPool)pools.get(s);
if(connectionpool != null)
{
return connectionpool.getConnection(l);
} else
{
return null;
}
}
public boolean getFlag()
{
return flag;
}
public static synchronized poolManager getInstance()
throws SQLException, IOException
{
if(instance == null)
{
connparam = new connParam();
instance = new poolManager();
}
return instance;
}
public connParam getParam()
{
return connparam;
}
private void init()
{
if(!isChecked)
{
//try
//{
// Connect.check();
//}
//catch(MalformedURLException _ex) { }
//catch(IOException _ex) { }
isChecked = true;
}
try
{
log = new PrintWriter(new FileWriter(logfile, true), true);
}
catch(IOException _ex)
{
System.err.println("\u65E0\u6CD5\u6253\u5F00\u65E5\u5FD7\u6587\u4EF6: log.txt" ;
log = new PrintWriter(System.err);
}
loadDrivers();
createPools();
}
private void loadDrivers()
{
try
{
Driver driver = (Driver)Class.forName(connparam.getDriver()).newInstance();
DriverManager.registerDriver(driver);
drivers.addElement(driver);
log("\u6210\u529F\u6CE8\u518CJDBC\u9A71\u52A8\u7A0B\u5E8F" + connparam.getDriver());
}
catch(Exception exception)
{
log("\u65E0\u6CD5\u6CE8\u518CJDBC\u9A71\u52A8\u7A0B\u5E8F: " + connparam.getDriver() + ", \u9519\u8BEF: " + exception);
}
}
public void log(String s)
{
log.println(String.valueOf(new Date()) + ": " + s);
}
public void log(Throwable throwable, String s)
{
log.println(String.valueOf(new Date()) + ": " + s);
throwable.printStackTrace(log);
}
public synchronized void release()
{
if(--clients != 0)
{
return;
}
connectionPool connectionpool;
for(Enumeration enumeration = pools.elements(); enumeration.hasMoreElements(); connectionpool.release())
{
connectionpool = (connectionPool)enumeration.nextElement();
}
for(Enumeration enumeration1 = drivers.elements(); enumeration1.hasMoreElements()![](static/image/smiley/default/icon_wink.gif)
{
Driver driver = (Driver)enumeration1.nextElement();
try
{
DriverManager.deregisterDriver(driver);
log("\u64A4\u9500JDBC\u9A71\u52A8\u7A0B\u5E8F " + driver.getClass().getName() + "\u7684\u6CE8\u518C" ;
}
catch(SQLException sqlexception)
{
log(sqlexception, "\u65E0\u6CD5\u64A4\u9500\u4E0B\u5217JDBC\u9A71\u52A8\u7A0B\u5E8F\u7684\u6CE8\u518C" +
": "
+ driver.getClass().getName());
}
}
flag = false;
}
public void setLogfile(String s)
{
logfile = s;
}
}
出错信息:
--------------------Configuration: j2sdk <Default>;--------------------
C:\Tomcat5\webapps\ROOT\WEB-INF\classes\poolManager.java:62: cannot resolve symbol
symbol : constructor connectionPool (org.zhengmao.soft.connParam)
location: class org.zhengmao.soft.poolManager.connectionPool
connectionpool = new connectionPool(connparam);
^
C:\Tomcat5\webapps\ROOT\WEB-INF\classes\poolManager.java:77: cannot resolve symbol
symbol : method freeConnection (java.sql.Connection)
location: class org.zhengmao.soft.poolManager.connectionPool
connectionpool.freeConnection(connection);
^
C:\Tomcat5\webapps\ROOT\WEB-INF\classes\poolManager.java:99: cannot resolve symbol
symbol : method getConnection ()
location: class org.zhengmao.soft.poolManager.connectionPool
return connectionpool.getConnection();
^
C:\Tomcat5\webapps\ROOT\WEB-INF\classes\poolManager.java:111: cannot resolve symbol
symbol : method getConnection (long)
location: class org.zhengmao.soft.poolManager.connectionPool
return connectionpool.getConnection(l);
^
C:\Tomcat5\webapps\ROOT\WEB-INF\classes\poolManager.java:181: reference to Date is ambiguous, both class java.util.Date in java.util and class java.sql.Date in java.sql match
log.println(String.valueOf(new Date()) + ": " + s);
^
C:\Tomcat5\webapps\ROOT\WEB-INF\classes\poolManager.java:186: reference to Date is ambiguous, both class java.util.Date in java.util and class java.sql.Date in java.sql match
log.println(String.valueOf(new Date()) + ": " + s);
^
C:\Tomcat5\webapps\ROOT\WEB-INF\classes\poolManager.java:197: cannot resolve symbol
symbol : method release ()
location: class org.zhengmao.soft.poolManager.connectionPool
for(Enumeration enumeration = pools.elements(); enumeration.hasMoreElements(); connectionpool.release())
^
7 errors
Process completed.
/***poolManager$connectionPool.java***/
package org.zhengmao.soft;
import java.sql.*;
import java.util.*;
// Referenced classes of package org.zhengmao.soft:
// connParam, poolManager
class param
{
private int checkedOut;
private Vector freeConnections;
private connParam param;
public synchronized void freeConnection(Connection connection)
{
freeConnections.addElement(connection);
checkedOut--;
notifyAll();
}
public synchronized Connection getConnection()
{
Connection connection = null;
if(freeConnections.size() >; 0)
{
connection = (Connection)freeConnections.firstElement();
freeConnections.removeElementAt(0);
try
{
if(connection.isClosed())
{
//log("\u4ECE\u8FDE\u63A5\u6C60\u5220\u9664\u4E00\u4E2A\u65E0\u6548\u8FDE\u63A5" ;
connection = getConnection();
}
}
catch(SQLException _ex)
{
//log("\u4ECE\u8FDE\u63A5\u6C60\u5220\u9664\u4E00\u4E2A\u65E0\u6548\u8FDE\u63A5" ;
connection = getConnection();
}
} else
if(param.getMaxConn() == 0 || checkedOut < param.getMaxConn())
{
connection = newConnection();
}
if(connection != null)
{
checkedOut++;
}
return connection;
}
public synchronized Connection getConnection(long l)
{
Date date = new Date();
long l1 = date.getTime();
Connection connection;
while((connection = getConnection()) == null)
{
try
{
wait(l);
}
catch(InterruptedException _ex) { }
if(l1 - l1 >;= l)
{
return null;
}
}
return connection;
}
private Connection newConnection()
{
Connection connection = null;
try
{
if(param.getUser() == null)
{
connection = DriverManager.getConnection(param.getURL());
} else
{
connection = DriverManager.getConnection(param.getURL(), param.getUser(), param.getPass());
}
//log("\u8FDE\u63A5\u6C60\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684\u8FDE\u63A5" ;
}
catch(SQLException sqlexception)
{
//log(sqlexception, "\u65E0\u6CD5\u521B\u5EFA\u4E0B\u5217URL\u7684\u8FDE\u63A5: " + param.getURL());
return null;
}
return connection;
}
public synchronized void release()
{
for(Enumeration enumeration = freeConnections.elements(); enumeration.hasMoreElements()![](static/image/smiley/default/icon_wink.gif)
{
Connection connection = (Connection)enumeration.nextElement();
try
{
connection.close();
//log("\u5173\u95ED\u8FDE\u63A5\u6C60\u4E2D\u7684\u4E00\u4E2A\u8FDE\u63A5" ;
}
catch(SQLException sqlexception)
{
//log(sqlexception, "\u65E0\u6CD5\u5173\u95ED\u8FDE\u63A5\u6C60\u4E2D\u7684\u8FDE\u63A5" ;
}
}
freeConnections.removeAllElements();
}
public (connParam connparam)
throws SQLException
{
freeConnections = new Vector();
if(connparam == null)
{
throw new SQLException("connparam not be emptyed!");
} else
{
param = connparam;
return;
}
}
}
出错信息:
--------------------Configuration: j2sdk <Default>;--------------------
C:\Tomcat5\webapps\ROOT\WEB-INF\classes\poolManager$connectionPool.java:116: illegal start of type
public (connParam connparam)
^
C:\Tomcat5\webapps\ROOT\WEB-INF\classes\poolManager$connectionPool.java:128: <identifier>; expected
}
^
C:\Tomcat5\webapps\ROOT\WEB-INF\classes\poolManager$connectionPool.java:57: reference to Date is ambiguous, both class java.util.Date in java.util and class java.sql.Date in java.sql match
Date date = new Date();
^
C:\Tomcat5\webapps\ROOT\WEB-INF\classes\poolManager$connectionPool.java:57: reference to Date is ambiguous, both class java.util.Date in java.util and class java.sql.Date in java.sql match
Date date = new Date();
^
4 errors
Process completed. |
|