JBoss 中配置資料來源(datasource)連線池
阿新 • • 發佈:2019-02-20
什麼是資料庫連線池?
配置連線池為的是解決效率問題.因為每建立一個連線都是很耗時的,有了連線池,就可以提前放一些連線進去.以後我們再用連線就去連線池裡面取而不是每次都建立.但是我們知道連線池是有上限的,如果只允許我們放10個,那麼當這10個連線都被佔用的時候,下一個使用者再來請求連線將不能得到,只好等待,如果等的時間太長了就會丟擲timeout的異常.使用完連線後要釋放,否則會一直佔著資源,當連線全部被佔用而得不到釋放時,就會出現錯誤...
JBoss實現了J2EE的13個規範包括JNDI,JNDI採用樹形結構管理我們的物件,tomcat和JBoss等伺服器對
採用JNDI可以使我們的應用和實際實現解耦,如,我們的應用中只管從連線池中取連線,而不用管使用的是哪個連線池實現,連線池的實現對我們是透明的.也就是說,我們使用連線池時,根本沒有寫dbcp(dbcp實現了DataSource介面),我們也不知道它是dbcp.我們只管使用連線不需要考慮連線是如何被建立的.對於我們來說這就像是一個工廠,隱藏了建立的細節.所以,這就是面向介面程式設計.我們拿到DataSource介面就OK了.
下面我們看看資料來源是如何在JBoss註冊的,我們又是如何從連線池取連線的?
在JBoss
<datasource jta="true" jndi-name="java:jboss/datasources/PjMysqlDS" pool-name="PjMysqlDS" enabled="true" use-java-context="true"> <connection-url>jdbc:mysql://192.168.24.118:3306/itoo_assess?useUnicode=true&characterEncoding=UTF-8</connection-url> <driver>mysql</driver> <pool> <prefill>false</prefill> <use-strict-min>false</use-strict-min> <flush-strategy>FailingConnectionOnly</flush-strategy> </pool> <security> <user-name>root</user-name> <password>888888</password> </security> </datasource>
連線配置:
public Connection getConnection{
Connection conn=null;
PreparedStatement pstmt=null;
try{
Context ctx=new InitialContext();
//通過JNDI查詢DataSource
DataSource ds=(DataSource)ctx.lookup("java:jboss/datasources/PjMysqlDS");
conn=ds.getConnection();
}catch(Exception e){
e.printStackTrace();
}
return conn;
}
參考:http://blog.csdn.net/rainbow702/article/details/50518928