JBoss配置連接池


         什么是數據庫連接池?

         配置連接池為的是解決效率問題.由於每創建一個連接都是非常耗時的,有了連接池,就能夠提前放一些連接進去.以后我們再用連接就去連接池里面取而不是每次都創建.可是我們知道連接池是有上限的,假設僅僅同意我們放10,那么當這10個連接都被占用的時候,下一個用戶再來請求連接將不能得到,僅僅好等待,假設等的時間太長了就會拋出timeout的異常.使用完連接后要釋放,否則會一直占着資源,當連接所有被占用而得不到釋放時,就會出現錯誤...

  

         JBoss實現了J2EE13個規范包含JNDI,JNDI採用樹形結構管理我們的對象,tomcatJBoss等server對JNDI做了實現,實現它之后能夠管理對象.

 

        採用JNDI能夠使我們的應用和實際實現解耦,,我們的應用中僅僅管從連接池中取連接,而不用管使用的是哪個連接池實現,連接池的實現對我們是透明的.也就是說,我們使用連接池時,根本沒有寫dbcp(dbcp實現了DataSource接口),我們也不知道它是dbcp.我們僅僅管使用連接不須要考慮連接是怎樣被創建的.對於我們來說這就像是一個工廠,隱藏了創建的細節.所以,這就是面向接口編程.我們拿到DataSource接口就OK.

 

 

         以下我們看看數據源是怎樣在JBoss注冊的,我們又是怎樣從連接池取連接的?

         在JBossstandalone.xml配置文件<datasources></datasources>節點中配置數據源,代碼例如以下:

 <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;
	}


          JNDI另一個典型的應用,即分布式對象的訪問.EJB.  把對象注冊到這棵樹上,起個名,遠程lookup這個服務,僅僅要知道這個服務所處機器的IP和port號,就能夠將這個服務傳到client的本地.

 

        知識都是連通的,當我們可以熟練地從一個跳到還有一個就說明我們會學了.



免責聲明!

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



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