一、JNDI方式创建DataSource
以JNDI方式创建数据源首先要配置数据源的相关连接信息,也就是数据源连接池。该配置应该在Tomcat安装目录下的conf/context.xml文件中配置,在Eclipse的J2EE架构下,也可以把context.xml文件创建在/META-INF目录下。其配置如下:
<Context><!--MySql-->
<Resource name="jdbc/movie" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="[用户名]" password="[密码]" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/[实例名]?autoReconnect=true"/>
</Context>
正确的配置后,就可以在程序中以JNDI的方式创建数据源,得到数据库连接并进行相应的操作。代码如下:
try { Context context = new InitialContext(); if (context == null ){ throw new Exception( "create context failed!" ); } DataSource ds = (DataSource) context.lookup( "java:comp/env/jdbc/[实例名]" ); if (ds == null ) { Thread.sleep( 2000 ); ds = (DataSource) context.lookup( "java:comp/env/jdbc/[实例名]" ); if (ds == null ) { throw new Exception( "get datasource failed!" ); } } } catch (NamingException ne) { throw ne; } catch (Exception e) { throw e; } |
二、Apache提供的简单连接池创建数据源
以这种方式创建数据源必须先准备两个jar文件:commons-dbcp.jar 和 commons-pool.jar,将这两个jar包放到WEB-INF/lib目录下。以这种方式创建的数据源就不再是javax.sql.DataSource了,而是org.apache.commons.dbcp.BasicDataSource。而且不再需要配置任何文件就可以直接使用。代码如下:
// 创建BasicDataSource对象 BasicDataSource ds = new BasicDataSource(); ds.setDriverClassName( "com.mysql.jdbc.Driver" ); ds.setUrl( "jdbc:mysql://localhost:3306/[实例名]" ); ds.setUsername( "[用户名]" ); ds.setPassword( "[密码]" ); ds.setInitialSize( 50 ); ds.setMaxActive( 100 ); ds.setMaxIdle( 30 ); ds.setMaxWait( 10000 ); // 关闭数据源连接 ds.close(); |
三、C3P0方式创建数据源
使用C3P0方式创建数据源应该首先准备一个jar文件:c3p0-0.9.1.2.jar,将其放到WEB-INF/lib目录下,就可以在项目中使用C3P0创建数据源,C3P0创建的数据源对象也不是DataSource对象,而是ComboPooledDataSource,代码如下:
// 创建ComboPooledDataSource对象 ComboPooledDataSource ds = new ComboPooledDataSource(); ds.setDriverClass( "com.mysql.jdbc.Driver" ); ds.setJdbcUrl( "jdbc:mysql://localhost:3306/[实例名]" ); ds.setUser( "[用户名]" ); ds.setPassword( "[密码]" ); ds.setInitialPoolSize( 50 ); ds.setMaxPoolSize( 100 ); ds.setMaxIdleTime( 10000 ); |
四、Proxool方式创建数据源
采用该方式创建数据源需要准备的jar包:proxool-01.9.0RC3.jar,将其放到WEB-INF/lib目录下,之后就可以项目中创建ProxoolDataSource对象,其代码如下:
// 创建ProxoolDataSource对象 ProxoolDataSource ds = new ProxoolDataSource(); ds.setDriver( "com.mysql.jdbc.Driver" ); ds.setDriverUrl( "jdbc:mysql://localhost:3306/[实例名]" ); ds.setUser( "[用户名]" ); ds.setPassword( "[密码]" ); |
五、BoneCP方式创建数据源
BoneCP是一个快速高效,开源免费的Java数据库接池。创作者称,BoneCP在性能上会完全超越所有主流的Java连接池。它可以帮你管理数据连接,让你的应用程序能更快速地访问数据库。比C3P0/DBCP(DataBaseconnection pool,数据库连接池)连接池快25倍。这个数据库连接池采用Google Collection作为内部的集合类框架,而且现在的版本已经很稳定。要使用BoneCP,必须用到的jar文件有:
· bonecp-0.6.5.jar
· google-collections-1.0.jar
· slf4j-api-1.5.11.jar
· slf4j-log4j12-1.5.11.jar
· log4j-1.2.15.jar
将这些jar包放到WEB-INF/lib目录下,就可以在程序中创建BoneCPDataSource对象,代码如下:
// 创建BoneCPDataSource对象 BoneCPDataSource ds = new BoneCPDataSource(); ds.setDriverClass( "com.mysql.jdbc.Driver" ); ds.setJdbcUrl( "jdbc:mysql://localhost:3306/[实例名]" ); ds.setUsername( "[用户名]" ); ds.setPassword( "[密码]" ); ds.setAcquireIncrement( 1 ); ds.setAcquireRetryDelay( 10000 ); ds.setIdleConnectionTestPeriod( 100 ); ds.setMinConnectionsPerPartition( 2 ); ds.setMaxConnectionsPerPartition( 20 ); ds.setPartitionCount( 2 ); |
在创建完数据源之后,就可以利用jdbc在程序与数据库之间建立连接,但要注意的是,要有相关的jdbc驱动包,不同的数据库需要不同的驱动,一般在各个数据库官方网都可以获取。
此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/70228.html