1. 程式人生 > >Tomcat的資料來源配置

Tomcat的資料來源配置

Tomcat本身並不具備提供資料來源的能力,它需要藉助其他的開源資料來源(如DBCP)類實現。通過Tomcat提供的資料來源,我們的程式中可以通過JNDI來訪問資料來源。

下面以DBCP(Tomcat內建的)為例,簡介資料來源的配置。

資料來源的配置也有兩種方式,一種是通過修改Tomcat系統檔案來配置全域性資料來源,一種是通過增加使用者的web部署檔案來配置區域性資料來源。全域性資料來源的意義是所有部署在Tomcat內的web應用只要遵循規定都可以訪問的資料來源,不建議此方式,可能會導致混亂。相對而言,增加使用者自己的web部署檔案就比較合適一些,因為該資料來源只針對某個web應用生效,其他web應用無法訪問該資料來源,安全一些,也沒全域性資料來源那麼混亂。

配置資料來源需要資料來源的jar檔案,如DBCP資料來源就需要在Tomcat的common/lib下增加一個commons-dbcp.jar檔案,還需要commons-poo.jar和commons-collections.jar的支援,一般在Tomcat裡都會有這三個jar檔案,最好還是檢查一下。

在Tomcat的conf\localhost下建立自己的web部署配置檔案,彷彿見《Tomcat中部署web應用的方式》,在Context元素下增加子元素,以Mysql資料庫為例,如:

<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"


                  maxActive
="100" maxIdle="30" maxWait="10000"
                  username
="root" password="123456"
                  driverClassName
="com.mysql.jdbc.Driver"
                  url
="jdbc:mysql://127.0.0.1:3306/test"
                  characterEncoding
=“GB2312&amp;useUnicode=TRUE"/>

程式中訪問此資料來源的程式碼:

 Context ctx=new InitialContext();

//初始化Context

 DataSource ds

=ctx.lookup("java:comp/env/jdbc/TestDB");

//獲取資料來源,其中java:comp/env是Tomcat規定的,Tomcat提供的JNDI繫結都必須加該字首

   Connection conn

=ds.getConnection();

//獲取資料庫連結

//一系列資料庫操作

   Statement stmt

=conn.createStatement();
   ResultSet rs
=stmt.executeQuery("select * from newsinf");
  
while(rs.next())
  
...{
   
//............,
   }

上面介紹了局部資料來源的配置方法,全域性資料來源的配置和這差不多,只不過要是將Resource標籤放在server.xml的<GlobalNamingResources>元素裡。