• JNDI使用小记


    JDNI使用小记
    
           < Resource name ="jdbc/mysql"
                    auth ="Container"   
                       type ="javax.sql.DataSource"
                       maxActive ="100"
                       maxIdle ="30"
                       maxWait ="60"   
                       wait_timeout ="18800"
                       timeBetweenEvictionRunsMillis ="300000"   
                       minEvictableIdleTimeMillis ="600000"
                       username ="root"
                       password ="root"   
                       driverClassName ="com.mysql.jdbc.Driver"   
                       url ="jdbc:mysql://localhost:3306/studentjxy?comautoReconnect=true&failOverReadOnly=false"   
                       removeAbandoned ="true"
                       removeAbandonedTimeout ="60"   
                       logAbandoned ="true" />
    
    package db;
    
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.Map;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.sql.DataSource;
    
    public class DBCache {
           private InitialContext ic ;
           private Map<String, DataSource> cache ;
           private static DBCache instance = new DBCache();
    
           private DBCache() {
                 try {
                       ic = new InitialContext();
                } catch (NamingException e) {
                      e.printStackTrace();
                }
                 cache = Collections.synchronizedMap( new HashMap<String, DataSource>());
          }
    
           public static DBCache getInstance() {
                 return instance ;
          }
    
           public Connection getDBConn(String dataSourceName) throws SQLException,
                      NamingException {
                Connection conn = null ;
                conn = getDataSource(dataSourceName).getConnection();
                 return conn;
          }
    
           public DataSource getDataSource(String dataSourceName)
                       throws NamingException {
                 if (cache .containsKey(dataSourceName)) {
                       return cache .get(dataSourceName);
                } else {
                      DataSource newDataSource = (DataSource) ic .lookup(dataSourceName);
                       cache .put(dataSourceName, newDataSource);
                       return newDataSource;
                }
          }
    
           public void removeDateSouceOffCache(String dataSourceName) {
                 try {
                      DataSource ds = cache .get(dataSourceName);
                      ds.getConnection().close();
                       cache .remove(dataSourceName);
                } catch (Exception ex) {
                }
          }
    
           public static void freeConn(Connection conn) {
                 freeConn(conn, null, null );
          }
    
           public static void freeConn(Connection connection, Statement statement) {
                 freeConn(connection, statement, null);
          }
    
           public static void freeConn(Connection conn, Statement ps, ResultSet rs) {
                 try {
                       try {
                             if (rs != null)
                                  rs.close();
                      } finally {
                             try {
                                   if (ps != null)
                                        ps.close();
                            } finally {
                                   if (conn != null)
                                        conn.close();
                            }
                      }
                } catch (SQLException ex) {
                      ex.printStackTrace();
                }
          }
    }
    
    package db;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    
    import javax.naming.NamingException;
    
    public class DBManager {
    
           public Connection getConnection() {
    
                DBCache db = DBCache. getInstance();
                Connection conn = null ;
                 try {
                      conn = db.getDBConn( "java:comp/env/jdbc/mysql" );
                } catch (SQLException e) {
                       // TODO Auto-generated catch block
                      e.printStackTrace();
                } catch (NamingException e) {
                       // TODO Auto-generated catch block
                      e.printStackTrace();
                }
                 return conn;
          }
    
    }
    

      

  • 相关阅读:
    转: winform间的传值并linklabel动态窗口跳转
    app.config配置
    RSS2.0中文规范
    windows forms 窗口跳转
    C#对DataGridView进行添加、修改、删除数据操作
    小小一颗心
    小记上海一天
    又一个婉约的日子
    七夕节
    我的实习
  • 原文地址:https://www.cnblogs.com/tatame/p/2650080.html
Copyright © 2020-2023  润新知