本帖最后由 刘军亭 于 2013-3-16 14:47 编辑
itserious 发表于 2013-3-16 14:20
不好意思上面的URL被改变了!请看下面: - public class MyDataSource {
- private String connectionUrl = "jdbc:sqlserver://localhost:1434;" +
- "databaseName=WYMS;integratedSecurity=true;";
- private LinkedList<Connection> connectionsPool = new LinkedList<Connection>();
- // 初始化的connection个数
- private static int initCount = 5;
- // 最大连接数
- private static int maxCount = 10;
- // 当前连接数
- int currentCount = 0;
- // 通过构造函数初始化2个连接存入到List集合,
- public MyDataSource() {
- for (int x = 1; x < 3; x++) {
- try {
- this.connectionsPool.addLast(this.creatConnection());//<b>主要就是这里出了问题,第一遍可以,第二遍就挂了</b>
- } catch (SQLException e) {
- throw new ExceptionInInitializerError("初始化连接失败");
- }
- this.currentCount++;
- }
- }
- // 给调用此方法者一个connection对象.从集合中删除一个连接
- public Connection getConnection() throws SQLException {
- synchronized (connectionsPool) {
- if (this.connectionsPool.size() > 0)
- return this.connectionsPool.removeFirst();
- if (this.currentCount < maxCount) {
- this.currentCount++;
- return this.creatConnection();
- }
- throw new SQLException("连接以达到最大值");
- }
- }
- // 把一个不用的connection对象放入到集合中,供下次使用
- public void free(Connection conn) {
- this.connectionsPool.addLast(conn);
- }
- // 通过DriverManager对象创建一个连接.对connection进行包装增强,
- private Connection creatConnection() throws SQLException {
-
- Connection realConn = DriverManager.getConnection(connectionUrl);
- return realConn;
- //使用动态代理的方式
- //MyConnectionHandler proxy = new MyConnectionHandler(this);
- // return proxy.bind(realConn);
-
- // 使用MyConnection时候的代理类的方式
- // MyConnection myConnection = new MyConnection(realConn,this);
- //return myConnection;
-
- }
- }
复制代码 |