java數據源的幾種配置


幾種常用的Java數據源解決方案

Java中的數據源就是javax.sql.DataSourceDataSource的創建可以有不同的實現。

JNDI方式創建DataSource

    JNDI方式創建數據源首先要配置數據源的相關連接信息,也就是數據源連接池。該配置應該在Tomcat安裝目錄下的conf/context.xml文件中配置。其配置如下:

    <Context>

……

   <!-- MySql -->

   <Resource name="jdbc/NutzDemo" auth="Container"

           type="javax.sql.DataSource"maxActive="100" maxIdle="30"

           maxWait="10000"username="root" password="root"

           driverClassName="com.mysql.jdbc.Driver"

           url="jdbc:mysql://localhost:3306/cheng"/>

    ……

</Context>

然后,在程序中以JNDI的方式創建數據源,得到數據庫連接已進行相應的操作。代碼如下:

    // 初始化JNDI上下文,創建DataSource對象

    Context initContext = new InitialContext();

    Context context = (Context)initContext.lookup("java:comp/env");

           DataSourcedataSource =  (DataSource)context.lookup("jdbc/NutzDemo");

 

 

Apache提供的簡單連接池創建數據源

以這種方式創建數據源必須先准備兩個jar文件:commons-dbcp.jar commons-pool.jar

以這種方式創建的數據源就不再是javax.sql.DataSourceDataSource了,而是org.apache.commons.dbcp.BasicDataSource。而且不再需要配置任何文件就可以直接使用。代碼如下:

// 創建BasicDataSource對象

    BasicDataSource ds = new BasicDataSource();

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

    ds.setUrl("jdbc:mysql://localhost:3306/cheng");

    ds.setUsername("root");

    ds.setPassword("root");

    ds.setInitialSize(50);

    ds.setMaxActive(100);

    ds.setMaxIdle(30);

    ds.setMaxWait(10000);

   

    // 關閉數據源連接

ds.close();

 

C3P0方式創建數據源

    使用C3P0方式創建數據源應該首先准備一個jar文件:c3p0-0.9.1.2.jar,將其放到web/lib目錄下,就可以在項目中使用C3P0創建數據源,C3P0創建的數據源對象也不是DataSource對象,而是ComboPooledDataSource,代碼如下:

    // 創建ComboPooledDataSource對象

    ComboPooledDataSource ds = new ComboPooledDataSource();

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

    ds.setJdbcUrl("jdbc:mysql://localhost:3306/cheng");

    ds.setUser("root");

    ds.setPassword("root");

    ds.setInitialPoolSize(50);

    ds.setMaxPoolSize(100);

    ds.setMaxIdleTime(10000);

 

Proxool方式創建數據源

    應該准備的jar文件為:proxool-01.9.0RC3.jar,之后在項目中創建ProxoolDataSource對象,其代碼如下:

    // 創建ProxoolDataSource對象

    ProxoolDataSource ds = new ProxoolDataSource();

    ds.setDriver("com.mysql.jdbc.Driver");

    ds.setDriverUrl("jdbc:mysql://localhost:3306/cheng");

    ds.setUser("root");

    ds.setPassword("root");

 

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

在程序中創建BoneCPDataSource對象,代碼如下:

// 創建BoneCPDataSource對象

    BoneCPDataSource ds = new BoneCPDataSource();

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

    ds.setJdbcUrl("jdbc:mysql://localhost:3306/cheng");

    ds.setUsername("root");

    ds.setPassword("root");

    ds.setAcquireIncrement(1);

    ds.setAcquireRetryDelay(10000);

    ds.setIdleConnectionTestPeriod(100);

ds.setMinConnectionsPerPartition(2);

    ds.setMaxConnectionsPerPartition(20);

ds.setPartitionCount(2);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM