Ⅰ java中建立資料庫連接池,有哪幾個步驟
Context context=new InitialContext();
DataSource ds=(DataSource)context.lookup("java:comp/env/jdbc/"+projectName);這里的projectName指的是你的項目名稱然後在tomcatde 的\conf\Catalina\localhost目錄下配置一個和你項目名稱相同的xml文件文件的配置方法可以去網路下很多的,這樣就可以使用連接池了。
Ⅱ java web項目中怎麼使用連接池是不是在tomcat中配置就好了。我使用了SSH框架
這個有幾個思路:
一個是本身項目文件應該有訪問許可權限制,生產環境的系統不應讓開發人員可以察看,開發環境和生產環境應分開。
如果不能分開,還有個方法是用J2EE伺服器容器提供資料庫Datasource,應用程序直接從web容器獲取,不需要提供用戶名密碼。
還有一個方法,配置資料庫伺服器限制用戶只能從Web容器IP連接,這樣甚至可以不需要密碼。
Ⅲ Java web連接池
請看JNDI 。。。。至於是不是同一個對象,那要看情況的了
Ⅳ java web資料庫連接池
,,,,,,,
這個你咋不會呢。。。。。。都開發網站了。。。
蠻麻煩的 建議你多看看書 現在告訴你 你也不明白的
Ⅳ java web開發 資料庫連接池什麼時候初始化
資料庫連接池處言喻現部application server都提供自資料庫連接池案要按照application server文檔說明確配置即應用享受資料庫連接池處 些候我應用獨立java application並普通WEB/J二EE應用且單獨運行要application server配合種情況我需要建立自資料庫連接池案 一、 DBCP DBCPApache源項目: commons.dbcp DBCP依賴Apache另外二源項目 commons.collectionscommons.pool dbcp包目前版本一.二.一:中國jakarta.apache.org/commons/dbcp/ pool包目前版本一.三:中國jakarta.apache.org/commons/pool/ common-collections包:中國jakarta.apache.org/commons/collections/ 載些包並些包路徑添加classpath使用dbcp做項目資料庫連接池使用 建立我自資料庫連接池使用xml文件傳入需要參數使用hard code式簡單介紹所需要我自寫代碼少要建立文件: import org.apache中國mons.dbcp.BasicDataSource; import org.apache中國mons.dbcp.BasicDataSourceFactory; import java.sql.SQLException; import java.sql.Connection; import java.util.Properties; public class ConnectionSource { private static BasicDataSource dataSource = null; public ConnectionSource() { } public static void init() { if (dataSource != null) { try { dataSource.close(); } catch (Exception e) { } dataSource = null; } try { Properties p = new Properties(); p.setProperty("driverClassName", "oracle.jdbc.driver.OracleDriver"); p.setProperty("url", "jdbc:oracle:thin:@一9二.一陸吧.0.一:一5二一:testDB"); p.setProperty("password", "scott"); p.setProperty("username", "tiger"); p.setProperty("maxActive", "三0"); p.setProperty("maxIdle", "一0"); p.setProperty("maxWait", "一000"); p.setProperty("removeAbandoned", "false"); p.setProperty("removeAbandonedTimeout", "一二0"); p.setProperty("testOnBorrow", "true"); p.setProperty("logAbandoned", "true"); dataSource = (BasicDataSource) BasicDataSourceFactory.createDataSource(p); } catch (Exception e) { } } public static synchronized Connection getConnection() throws SQLException { if (dataSource == null) { init(); } Connection conn = null; if (dataSource != null) { conn = dataSource.getConnection(); } return conn; } } 接我應用要簡單使用ConnectionSource.getConnection()取連接池資料庫連接享受資料庫連接帶給我處我使用完取資料庫連接要簡單使用connection.close()連接返連接池至於直接關閉連接返給連接池dbcp使用委派模型實現Connection介面 使用Properties創建BasicDataSource參數設置比較重要: testOnBorrow、testOnReturn、testWhileIdle意思取連接、返連接或連接空閑否進行效性驗證(即否資料庫連通)默認都false所資料庫連接某種原斷掉再連接池取連接實際能效連接所確保取連接效 些屬性設true進行校驗需要另參數:validationQueryoracle說:SELECT COUNT(*) FROM DUAL實際簡單SQL語句驗證SQL語句資料庫跑已連接結返 二參數:timeBetweenEvictionRunsMillis minEvictableIdleTimeMillis 兩配合持續更新連接池連接象timeBetweenEvictionRunsMillis 於0每timeBetweenEvictionRunsMillis 間啟線程校驗連接池閑置間超minEvictableIdleTimeMillis連接象 其些參數參考源代碼 二、 C三P0: C三P0放源代碼JDBC連接池C三PO 連接池優秀連接池推薦使用C三PO實現JDBC三.0規范部功能性能更加突,包括實現jdbc三jdbc二擴展規范說明Connection Statement 池DataSources 象 載址:中國sourceforge.net/projects/c三p0 package com.systex.utils.web; import java.beans.PropertyVetoException; import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; import com.mchange.v二.c三p0.ComboPooledDataSource; public class C三PODataSource { private static ComboPooledDataSource dataSource = null; private static final String driver = "com.mysql.jdbc.Driver"; private static final String url = "jdbc:mysql://localhost:三三0陸/wyd"; private static final String userName = "root"; private static final String password = "root"; public static DataSource getDataSource() { if (dataSource == null) { dataSource = new ComboPooledDataSource(); try { dataSource.setDriverClass(driver); } catch (PropertyVetoException e) { System.out.println("DataSource Load Driver Exception!!"); e.printStackTrace(); } dataSource.setJdbcUrl(url); dataSource.setUser(userName); dataSource.setPassword(password); // 設置連接池連接容量 dataSource.setMaxPoolSize(二0); // 設置連接池連接容量 dataSource.setMinPoolSize(二); // 設置連接池statements象容量 dataSource.setMaxStatements(一00); } return dataSource; } public static Connection getConnection() throws SQLException { return C三PODataSource.getDataSource().getConnection(); } } 三、 Proxool Java SQL Driver驅程序提供選擇其類型驅程序連接池封裝非簡單移植現存代碼完全配置快速熟健壯透明現存JDBC驅程序增加連接池功能 官中國站: 中國proxool.sourceforge.net/ 載址:中國proxool.sourceforge.net/download.htm
Ⅵ java web的資料庫連接池配置和jboss里的數據連接池配置的區別
主要差別就是,
1如果資料庫信息變更,web的資料庫連接池方式需要重新發布應用。而jboss連接池只要修改配置。
2 出於安全目的。有時生產資料庫密碼是保密的。而放在代碼里就太不安全了。
3 如果有測試和生產多套環境,使用jboss數據源可以使一個包在不同環境使用。
Ⅶ 什麼是Java web開發中資料庫的連接池技術,它的原理大致是什麼
什麼是連接池
資料庫連接池負責分配、管理和釋放資料庫連接,它允許應用程序重復使用一個現有的資料庫連接,而不是再重新建立一個。
為什麼要使用連接池
資料庫連接是一種關鍵的有限的昂貴的資源,這一點在多用戶的網頁應用程序中體現得尤為突出。 一個資料庫連接對象均對應一個物理資料庫連接,每次操作都打開一個物理連接,使用完都關閉連接,這樣造成系統的 性能低下。 資料庫連接池的解決方案是在應用程序啟動時建立足夠的資料庫連接,並講這些連接組成一個連接池(簡單說:在一個「池」里放了好多半成品的資料庫聯接對象),由應用程序動態地對池中的連接進行申請、使用和釋放。對於多於連接池中連接數的並發請求,應該在請求隊列中排隊等待。並且應用程序可以根據池中連接的使用率,動態增加或減少池中的連接數。 連接池技術盡可能多地重用了消耗內存地資源,大大節省了內存,提高了伺服器地服務效率,能夠支持更多的客戶服務。通過使用連接池,將大大提高程序運行效率,同時,我們可以通過其自身的管理機制來監視資料庫連接的數量、使用情況等。
Ⅷ JavaWeb中用apache的資料庫連接池連接資料庫,在Linux環境下報錯
其中sei7為Linux主機名,你怎麼能去連接sqlserver呢。我看是你的配置有問題吧,改寫資料庫連接地址。如果這部沒問題,那就看看你的sqlserver的版本如果是2000的話就需要打上補丁,不然不發從其他機器訪問的。
Ⅸ Java開發常用的幾個資料庫連接池
資料庫連接池的好處是不言而喻的,現在大部分的application
server都提供自己的資料庫連接池方案,此時,只要按照application server的文檔說明,正確配置,即可在應用中享受到資料庫連接池的好處。
但是,有些時候,我們的應用是個獨立的java
application,並不是普通的WEB/J2EE應用,而且是單獨運行的,不要什麼application
server的配合,這種情況下,我們就需要建立自己的資料庫連接池方案了。
1、 DBCP
DBCP是Apache的一個開源項目:
commons.dbcp
DBCP依賴Apache的另外2個開源項目
commons.collections和commons.pool
dbcp包,目前版本是1.2.1:http://jakarta.apache.org/commons/dbcp/
pool包,目前版本是1.3:http://jakarta.apache.org/commons/pool/,
common-collections包:http://jakarta.apache.org/commons/collections/
下載這些包並將這些包的路徑添加到classpath中就可以使用dbcp做為項目中的資料庫連接池使用了。
在建立我們自己的資料庫連接池時,可以使用xml文件來傳入需要的參數,這里只使用hard
code的方式來簡單介紹,所有需要我們自己寫的代碼很少,只要建立一個文件如下:
import
org.apache.commons.dbcp.BasicDataSource;
import
org.apache.commons.dbcp.BasicDataSourceFactory;
import
java.sql.SQLException;
import java.sql.Connection;
import
java.util.Properties;
public class ConnectionSource {
private static BasicDataSource dataSource =
null;
public ConnectionSource() {
}
public static void init() {
if (dataSource != null) {
try
{
dataSource.close();
} catch (Exception e)
{
}
dataSource = null;
}
try {
Properties p = new
Properties();
p.setProperty("driverClassName",
"oracle.jdbc.driver.OracleDriver");
p.setProperty("url",
"jdbc:oracle:thin:@192.168.0.1:1521:testDB");
p.setProperty("password", "scott");
p.setProperty("username",
"tiger");
p.setProperty("maxActive", "30");
p.setProperty("maxIdle", "10");
p.setProperty("maxWait",
"1000");
p.setProperty("removeAbandoned",
"false");
p.setProperty("removeAbandonedTimeout",
"120");
p.setProperty("testOnBorrow", "true");
p.setProperty("logAbandoned", "true");
dataSource = (BasicDataSource)
BasicDataSourceFactory.createDataSource(p);
} catch (Exception e) {
}
}
public static synchronized Connection
getConnection() throws SQLException {
if (dataSource == null) {
init();
}
Connection conn = null;
if (dataSource != null) {
conn = dataSource.getConnection();
}
return conn;
}
}
接下來,在我們的應用中,只要簡單地使用ConnectionSource.getConnection()就可以取得連接池中的資料庫連接,享受資料庫連接帶給我們的好處了。當我們使用完取得的資料庫連接後,只要簡單地使用connection.close()就可把此連接返回到連接池中,至於為什麼不是直接關閉此連接,而是返回給連接池,這是因為dbcp使用委派模型來實現Connection介面了。
在使用Properties來創建BasicDataSource時,有很多參數可以設置,比較重要的還有:
testOnBorrow、testOnReturn、testWhileIdle,他們的意思是當是取得連接、返回連接或連接空閑時是否進行有效性驗證(即是否還和資料庫連通的),默認都為false。所以當資料庫連接因為某種原因斷掉後,再從連接池中取得的連接,實際上可能是無效的連接了,所以,為了確保取得的連接是有效的,
可以把把這些屬性設為true。當進行校驗時,需要另一個參數:validationQuery,對oracle來說,可以是:SELECT COUNT(*) FROM
DUAL,實際上就是個簡單的SQL語句,驗證時,就是把這個SQL語句在資料庫上跑一下而已,如果連接正常的,當然就有結果返回了。
還有2個參數:timeBetweenEvictionRunsMillis 和
minEvictableIdleTimeMillis,
他們兩個配合,可以持續更新連接池中的連接對象,當timeBetweenEvictionRunsMillis
大於0時,每過timeBetweenEvictionRunsMillis
時間,就會啟動一個線程,校驗連接池中閑置時間超過minEvictableIdleTimeMillis的連接對象。
還有其他的一些參數,可以參考源代碼。
2、
C3P0:
C3P0是一個開放源代碼的JDBC連接池,C3PO
連接池是一個優秀的連接池,推薦使用。C3PO實現了JDBC3.0規范的部分功能,因而性能更加突出,包括了實現jdbc3和jdbc2擴展規范說明的Connection 和Statement 池的DataSources 對象。
下載地址:http://sourceforge.net/projects/c3p0
package
com.systex.utils.web;
import java.beans.PropertyVetoException;
import
java.sql.Connection;
import java.sql.SQLException;
import
javax.sql.DataSource;
import
com.mchange.v2.c3p0.ComboPooledDataSource;
public class C3PODataSource {
private static
ComboPooledDataSource dataSource = null;
private static final String driver
= "com.mysql.jdbc.Driver";
private static final String url =
"jdbc:mysql://localhost:3306/wyd";
private static final String userName =
"root";
private static final String password = "root";
public static DataSource getDataSource() {
if
(dataSource == null) {
dataSource = new ComboPooledDataSource();
try
{
dataSource.setDriverClass(driver);
} catch (PropertyVetoException
e) {
System.out.println("DataSource Load Driver
Exception!!");
e.printStackTrace();
}
dataSource.setJdbcUrl(url);
dataSource.setUser(userName);
dataSource.setPassword(password);
//
設置連接池最大連接容量
dataSource.setMaxPoolSize(20);
//
設置連接池最小連接容量
dataSource.setMinPoolSize(2);
//
設置連接池最大statements對象容量
dataSource.setMaxStatements(100);
}
return
dataSource;
}
public static Connection getConnection() throws
SQLException {
return
C3PODataSource.getDataSource().getConnection();
}
}
3、 Proxool
這是一個Java SQL
Driver驅動程序,提供了對你選擇的其它類型的驅動程序的連接池封裝。可以非常簡單的移植到現存的代碼中。完全可配置。快速,成熟,健壯。可以透明地為你現存的JDBC驅動程序增加連接池功能。
官方網站: http://proxool.sourceforge.net/
下載地址:http://proxool.sourceforge.net/download.html
Ⅹ Java資料庫連接池的幾種配置方法(以MySQL數
連接先建立一些連接,並且這些連接允許共享,因此這樣就節省了每次連接的時間開銷。Mysql資料庫為例,連接池在Tomcat中的配置與使用。
1、創建資料庫Student,表student
2、配置server.xml文件。Tomcat安裝目錄下conf中server.xml文件。
<GlobalNamingResources>
<Resource
name="jdbc/DBPool"
type="javax.sql.DataSource"
password=""
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/student"
maxActive="3"
/>
</GlobalNamingResources>
name:指定連接池的名稱
type:指定連接池的類,他負責連接池的事務處理
url:指定要連接的資料庫
driverClassName:指定連接資料庫使用的驅動程序
username:資料庫用戶名
password:資料庫密碼
maxWait:指定最大建立連接等待時間,如果超過此時間將接到異常
maxIdle:指定連接池中連接的最大空閑數
maxActive:指定連接池最大連接數
3、配置web.xml文件。
<web-app>
<resource-ref>
<description>mysql資料庫連接池配置</description>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>
4、配置context.xml文件
與server.xml文件所在的位置相同。
<Context>
<ResourceLink
name="jdbc/DBPool"
type="javax.sql.DataSource"
global="jdbc/DBPool"
/>
</Context>
5、測試
DataSource pool = null;
Context env = null;
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
env = (Context)new InitialContext().lookup("java:comp/env");
//檢索指定的對象,返回此上下文的一個新實例
pool = (DataSource)env.lookup("jdbc/DBPool");
//獲得資料庫連接池
if(pool==null){out.printl("找不到指定的連接池!");}
con = pool.getConnection();
st = con.createStatement();
rs = st.executeQuery("select * from student");
}catch(Exception ex){out.printl(ne.toString());}