5.开源连接池_DBCP_C3P0

开源数据源:

DBCP

导包:commons-dbcp-1.4.jar    commons-pool-1.5.6.jar

方式1

BasicDataSource source = new BasicDataSource();

source.setDriverClassName("com.mysql.jdbc.Driver");

source.setUrl("jdbc:mysql:///day11");

source.setUsername("root");

source.setPassword("root");

 

方式2

Properties prop = new Properties();

prop.load(new FileReader("dbcp.properties"));

BasicDataSourceFactory factory = new BasicDataSourceFactory();

DataSource source = factory.createDataSource(prop);

 

   配置文件中:

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql:///day11

username=root

password=root

 

#<!-- 初始化连接 -->

initialSize=10

 

#最大连接数量

maxActive=50

 

#<!-- 最大空闲连接 -->

maxIdle=20

 

#<!-- 最小空闲连接 -->

minIdle=5

 

#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60-->

maxWait=60000

 

C3P0数据源:c3p0-0.9.1.2.jar

方式1

ComboPooledDataSource source = new ComboPooledDataSource();

source.setDriverClass("com.mysql.jdbc.Driver");

source.setJdbcUrl("jdbc:mysql:///day11");

source.setUser("root");

source.setPassword("root");

 

方式2

ComboPooledDataSource source = new ComboPooledDataSource();

ComboPooledDataSource source = new ComboPooledDataSource(aaa);

 

在类加载目录下名称为c3p0-config.xml的配置文件中配置:

<c3p0-config>

  <default-config>

<property name="driverClass">com.mysql.jdbc.Driver</property>

<property name="jdbcUrl">jdbc:mysql:///day11</property>

<property name="user">root</property>

<property name="password">root</property>

  </default-config>

  <named-config name="aaa">

    <property name="driverClass">com.mysql.jdbc.Driver</property>

    <property name="jdbcUrl">jdbc:mysql:///day12</property>

    <property name="user">root</property>

    <property name="password">root</property>

  </named-config>

</c3p0-config>

6.开源连接池_tomcat内置连接池

tomcat内置的数据源(DBCP):

1.如何为tomcat配置数据源

1tomcat/conf/context.xml文件中配置<Context>配置在这个位置的信息将会被所有的web应用所共享

2tomcat/conf/[engin]/[Host]/context.xml文件中可以配置<Context>标签,这里配置的信息将会被这台虚拟主机中的所有web应用所共享

 

3.1 tomcat/conf/server.xml文件中的<Host>标签中配置<Context>标签,这是web应用的第一种配置方式,在这个标签中配置的信息将只对当前web应用起作用

3.2 tomcat/conf/[engin]/[Host]/自己创建一个.xml文件,在这个文件中使用<Context>标签配置一个web应用,这是web应用第二种配置方式,在这个<Context>标签中配置的信息将只会对当前web应用起作用

3.3 web应用还有第三种配置方式:web应用直接放置到虚拟主机管理的目录.此时可以在web应用的META-INF文件夹下创建一个context.xml文件,在其中可以写<Context>标签进行配置,这种配置信息将只会对当前web应用起作用

 

web应用里面导入mysql驱动mysql-connector-java-5.0.8-bin.jar

最好把MySQL的包放入E:\Program-Files\apache-tomcat-6.0.36\lib

<Context>

<Resource name="mySource"

auth="Container"

type="javax.sql.DataSource"

username="root"

password="root"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql:///day11"

maxActive="8"

maxIdle="4"/>

</Context>

1.在程序中获取这个数据源

 jnditomcat的组件之一

为JAVA应用程序提供命名和目录访问服务的API。例如,Tomcat服务器在启动时可以创建一个连接到某种数据库系统的数据源(DataSource)对象,并将该数据源(DataSource)对象绑定到JNDI环境中,以后在这个Tomcat服务器中运行的Servlet和JSP程序就可以从JNDI环境中查询出这个数据源(DataSource)对象进行使用,而不用关心数据源(DataSource)对象是如何创建出来的,这种方式极大地增强了系统的可维护性,当数据库系统的连接参数发生变更时,这只是Tomcat系统管理员一个人要关心的事情,而与所有的应用程序开发人员无关。

 

想要访问jndi就必须在Servlet中才能执行下列代码:

Context initCtx = new InitialContext();

Context jndi = (Context) initCtx.lookup("java:comp/env");

DataSource source = jndi.lookUp("mySource");

 

启动加载servlet

web.xml

  <servlet>

    <servlet-name>DataSourceInitServlet</servlet-name>

    <servlet-class>com.itheima.init.DataSourceInitServlet</servlet-class>

<load-on-startup>1</load-on-startup>

  </servlet>

 

public void init() throws ServletException {

try{

Context initCtx = new InitialContext();

Context jndi = (Context) initCtx.lookup("java:comp/env");

DataSource source = (DataSource) jndi.lookup("mySource");


Connection conn = source.getConnection();

PreparedStatement ps = conn.prepareStatement("select * from account");

ResultSet rs = ps.executeQuery();

while(rs.next()){

String name = rs.getString("name");

System.out.println(name);

}

rs.close();

ps.close();

conn.close();


}catch (Exception e) {

e.printStackTrace();

throw new RuntimeException(e);

}

}

 

}