做一个缓冲区(调度室)来解决,不要直接进行物理连接数,称为DataSource 。
实现方法:
1.简单实现
2.pooled池化实现
3.分布式实现
pooled池化实现方法:
1.DBCP:实现JDBC2.0或更高版本,标准实现。
2.C3P0。
3.proxool:在外层包装一层池。
直接使用容器中带过来的连接池技术。
配置TomCat,使用了一个JNDI技术(目录访问协议)。
1.配置:
<!-- The contents of this file will be loaded for each web application -->
<Context docBase="CRMDemo"
privileged="true" antiResourceLocking="false" antiJARLocking="false">
<Resource name="jdbc/CRMDemo" auth="Container" class="org.apache.commons.dbcp.BasicDataSource"
type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test" username="root" password="root"
maxActive="10" maxIdle="5" removeAbandoned="true" maxWait="300" />
</Context>
docBase是工程项目的名称。
name是自己取的,在程序中需要调用到。
一定要开启服务器才能运行有效。
2.实现连接:
public static Connection getConnection() throws NamingException, SQLException {
Context initContext = new InitialContext();
// 注意: 以下写法只适用于tomcat(java:/comp/env).
DataSource dataSource = (DataSource) initContext.lookup("java:/comp/env/jdbc/CRMDemo");
Connection conn = dataSource.getConnection();
return conn;
}
在此的参数是固定的,每个服务器都有相应的参数。
其中调用了在配置文件中的名字,请注意!