tomcat配置資料來源

atlantisholic發表於2011-08-07

一.配置tomcat連線池

1.       修改server.xml或者在conf/Catalina/localhost下新增對應的xml片段。此處使用的是第二種方法。

conf/Catalina/localhost資料夾下新建ROOT.xml片段,新增以下內容:

xml version="1.0" encoding="UTF-8"?>

<Context  crossContext="true"  useHttpOnly="true" >

    <Resource name="jdbc/infogrid"

             type="javax.sql.DataSource"

             password="123456"

              driverClassName="com.mysql.jdbc.Driver"

             maxIdle="10"

             maxWait="50"

             username="root"

url="jdbc:mysql://localhost:3306/infogrid?autoReconnect=true"

             maxActive="20"/>

Context>

2.       tomcat新增資料庫連線驅動包,本用例使用mysql,mysql的驅動包新增到common/lib或者如果部署的應用程式中有該驅動包,那麼也可以忽略此步。

 

二.編寫java測試類(該類必須部署在tomcat容器中,否則無法獲得JNDI資源)

PreparedStatement ps=null;

       ResultSet rs=null;

       try{

           InitialContext ctx=new  InitialContext();

           DataSource  dataSource=(DataSource)ctx.lookup("java:comp/env/jdbc/infogrid");

           Connection  connection=dataSource.getConnection();

           ps=connection.prepareStatement("select count(*) from test");

           rs=ps.executeQuery();

           rs.next();

           System.out.println("表中行數為:"+rs.getInt(1));

           rs.close();

           ps.close();

           System.out.println(connection.getClass());

           //class org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper

           Field  field=connection.getClass().getDeclaredField("delegate");

           field.setAccessible(true);

           System.out.println(field.get(connection).getClass());

           //class org.apache.tomcat.dbcp.dbcp.PoolableConnection

           connection.close();

           //此關閉並非為真得關閉資料庫連線,具體該close實現可見上面的兩個Connection代理類,其實只是告訴連線池,該Connection已經用完了,可以被再次利用了

       }catch(Exception  ex){

           ex.printStackTrace();

    }

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23071790/viewspace-704351/,如需轉載,請註明出處,否則將追究法律責任。

相關文章