免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1587 | 回复: 2
打印 上一主题 下一主题

请帮我看看这段程式错在哪里?关于JAVA连接池的. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-12-08 15:13 |只看该作者 |倒序浏览
/***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()
        {
            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()
        {
            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.

论坛徽章:
0
2 [报告]
发表于 2003-12-08 17:07 |只看该作者

请帮我看看这段程式错在哪里?关于JAVA连接池的.

C:\Tomcat5\webapps\ROOT\WEB-INF\classes\poolManager$connectionPool.java:116: illegal start of type
public (connParam connparam)

应为: public param(connParam connparam)

^
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();
^


应为: java.util.Date date=new java.util.Date();

论坛徽章:
0
3 [报告]
发表于 2003-12-11 10:53 |只看该作者

请帮我看看这段程式错在哪里?关于JAVA连接池的.

poolManager$connectionPool.java ok
poolManager.java err message:

--------------------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:197: cannot resolve symbol
symbol  : method release ()
location: class org.zhengmao.soft.poolManager.connectionPool
        for(Enumeration enumeration = pools.elements(); enumeration.hasMoreElements(); connectionpool.release())
                                                                                                     ^
5 errors

Process completed.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP