1. 程式人生 > >JBoss 中配置資料來源(datasource)連線池

JBoss 中配置資料來源(datasource)連線池

什麼是資料庫連線池?

         配置連線池為的是解決效率問題.因為每建立一個連線都是很耗時的,有了連線池,就可以提前放一些連線進去.以後我們再用連線就去連線池裡面取而不是每次都建立.但是我們知道連線池是有上限的,如果只允許我們放10,那麼當這10個連線都被佔用的時候,下一個使用者再來請求連線將不能得到,只好等待,如果等的時間太長了就會丟擲timeout的異常.使用完連線後要釋放,否則會一直佔著資源,當連線全部被佔用而得不到釋放時,就會出現錯誤...

         JBoss實現了J2EE13個規範包括JNDI,JNDI採用樹形結構管理我們的物件,tomcatJBoss等伺服器對

JNDI做了實現,實現它之後可以管理物件.

        採用JNDI可以使我們的應用和實際實現解耦,,我們的應用中只管從連線池中取連線,而不用管使用的是哪個連線池實現,連線池的實現對我們是透明的.也就是說,我們使用連線池時,根本沒有寫dbcp(dbcp實現了DataSource介面),我們也不知道它是dbcp.我們只管使用連線不需要考慮連線是如何被建立的.對於我們來說這就像是一個工廠,隱藏了建立的細節.所以,這就是面向介面程式設計.我們拿到DataSource介面就OK.

下面我們看看資料來源是如何在JBoss註冊的,我們又是如何從連線池取連線的?

         在JBoss

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

參考:http://blog.csdn.net/rainbow702/article/details/50518928