posts - 22,comments - 35,trackbacks - 0
          本文主要介紹Tomcat5.0.25這個版本下數據庫連接池的配置,及程序對連接池的JNDI查找,并提供相應測試代碼。最后指出配置及應用過程中的常見問題及解決方法。

          1?.該文的配置環境:Tomcat5.0.25?+?jdk1.4+?Sql?Server?2000+Win2000

          2.配置步驟:

          第一步:

          啟動Tomcat,打開IE在地址欄內輸入http://localhost:8080/admin??進入Tomcat的管理界面;點擊右邊的Data?Sources?在右上角的下拉菜單中選擇Create?New?Data?Source?在下邊的輸入框中輸入需要的配置信息。

          JNDI?Name:jdbc/XXX(XXX為自己所命的名字)

          Data?Source?URL:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb(連接的數據名)

          JDBC?Driver?Class:?com.microsoft.jdbc.sqlserver.SQLServerDriver

          User?Name:連接數據庫的用戶名?

          Password:?數據庫密碼

          Max.?Active?Connections:?最大連接數

          Max.?Idle?Connections:?是最大的空閑連接數

          Max.?Wait?for?Connection:?最大等待連接數

          ?

          第二步:配置web.xml
          打開webapps/ROOT/WEB-INF下web.xml,加入如下內容:???
          <resource-ref>
          ??<description>SqlServer?Datasource?example</description>
          ??<res-ref-name>jdbc/SqlServerDB</res-ref-name>
          ??<res-type>javax.sql.DataSource</res-type>
          ??<res-auth>Container</res-auth>
          ??</resource-ref>

          第三步:配置tomcat(添加類)

          首先要下載安裝sqlserver-jdbc-驅動,然后將其lib下的三個jar文件放到

          tomcat/common/lib下。

          ?

          注意事項:

          如果是單個JSP頁面我們將它放在TOMCAT_HOME/webapps/ROOT下邊,同時還須修改TOMCAT_HOME/conf/Catalina/localhost/下的ROOT.xml文件,在

          <Resource?auth="Container"?description="SqlServer?Datasource?example"?name="jdbc/SqlServerDB"?type="javax.sql.DataSource"/>下邊加入:

          <ResourceLink?global="jdbc/test"?name="jdbc/test"?type="javax.sql.DataSource"/>

          來引用所配置的JNDI數據源。同時將<Resource?auth="Container"?description="SqlServer?Datasource?example"?name="jdbc/SqlServerDB"?type="javax.sql.DataSource"/>注釋掉

          ????如果我們要部署的是個WEB應用程序,我們將該應用程序放在TOMCAT_HOME/webapps目錄下,有兩種方式可以引用我們所配置的JNDI數據源。

          A:可以在TOMCAT_HOME/conf/Catalina/localhost下新建XXX.xml文件,XXX為所發布的WEB應用的名字,如我所發布的WEB應用是JndiTest,.xml文件命名為JndiTest.xml在該文件內加:

          <?xml?version='1.0'?encoding='utf-8'?>

          <Context?debug="1"?docBase="E:/Tomcat?5.0/webapps/JndiTest"?path="/JndiTest"?reloadable="true"?workDir="work\Catalina\localhost\JndiTest">

          ??<Resource?name="jdbc/test"?type="javax.sql.DataSource"/>

          ??<ResourceParams?name="jdbc/test">

          ????<parameter>

          ??????<name>factory</name>

          ??????<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>

          ????</parameter>

          ????<parameter>

          ??????<name>password</name>

          ??????<value>jsjrj</value>

          ????</parameter>

          ????<parameter>

          ??????<name>maxActive</name>

          ??????<value>4</value>

          ????</parameter>

          ????<parameter>

          ??????<name>maxWait</name>

          ??????<value>5000</value>

          ????</parameter>

          ????<parameter>

          ??????<name>url</name>

          ??????<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb</value>

          ????</parameter>

          ????<parameter>

          ??????<name>driverClassName</name>

          ??????<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

          ????</parameter>

          ????<parameter>

          ??????<name>username</name>

          ??????<value>sa</value>

          ????</parameter>

          ????<parameter>

          ??????<name>maxIdle</name>

          ??????<value>2</value>

          ????</parameter>

          ??</ResourceParams>

          </Context>

          其中E:/Tomcat?5.0/webapps/JndiTest為你所發布應用程序的目錄,這樣就可以進行測試了。

          這樣做就是每個WEB應用程序都須創建一個象JndiTest.xml這樣的文件。

          B;為了避免每個WEB應用程序都創建XXX.xml文件,我們可以修改TOMCAT_HOME/conf下的server.xml文件,修改如下:

          在<Host></Host>之間加入:

          <Context?path="/JndiTest"?docBase="E:/Tomcat?5.0/webapps/JndiTest"?debug="1"?reloadable="true">

          ????<Resource?name="jdbc/test"?type="javax.sql.DataSource"/>

          ????<ResourceParams?name="jdbc/test">

          ??????<parameter>

          ????????<name>url</name>

          ????????<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb</value>

          ??????</parameter>

          ??????<parameter>

          ????????<name>driverClassName</name>

          ????????<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

          ??????</parameter>

          ??????<parameter>

          ????????<name>maxWait</name>

          ????????<value>5000</value>

          ??????</parameter>

          ??????<parameter>

          ????????<name>maxActive</name>

          ????????<value>4</value>

          ??????</parameter>

          ??????<parameter>

          ????????<name>password</name>

          ????????<value>jsjrj</value>

          ??????</parameter>

          ??????<parameter>

          ????????<name>maxIdle</name>

          ????????<value>2</value>

          ??????</parameter>

          ??????<parameter>

          ????????<name>username</name>

          ????????<value>sa</value>

          ??????</parameter>

          ??????<parameter>?

          ????????<name>factory</name>?

          ????????<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>?

          ??????</parameter>?

          ????</ResourceParams>

          ???</Context>

          <Resource?auth="Container"?description="User?database?that?can?be?updated?and?saved"?name="UserDatabase"?type="org.apache.catalina.UserDatabase"/>下的

          <Resource?name="jdbc/test"?type="javax.sql.DataSource"/>

          同時移去上邊的這段:(也可以不移去)<ResourceParams?name="jdbc/test">

          ??????<parameter>

          ????????<name>url</name>

          ????????<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb</value>

          ??????</parameter>

          ??????<parameter>

          ????????<name>driverClassName</name>

          ????????<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

          ??????</parameter>

          ??????<parameter>

          ????????<name>maxWait</name>

          ????????<value>5000</value>

          ??????</parameter>

          ??????<parameter>

          ????????<name>maxActive</name>

          ????????<value>4</value>

          ??????</parameter>

          ??????<parameter>

          ????????<name>password</name>

          ????????<value>jsjrj</value>

          ??????</parameter>

          ??????<parameter>

          ????????<name>maxIdle</name>

          ????????<value>2</value>

          ??????</parameter>

          ??????<parameter>

          ????????<name>username</name>

          ????????<value>sa</value>

          ??????</parameter>

          ??????<parameter>?

          ????????<name>factory</name>?

          ????????<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>?

          ??????</parameter>?

          </ResourceParams>

          注意要在每個WEB應用程序的web.xml文件中都加入

          <resource-ref>
          ??<description>SqlServer?Datasource?example</description>
          ??<res-ref-name>jdbc/SqlServerDB</res-ref-name>
          ??<res-type>javax.sql.DataSource</res-type>
          ??<res-auth>Container</res-auth>
          ??</resource-ref>

          3.測試

          編寫jsp文件:

          <%@?page?contentType="text/html;charset=gb2312"%>?

          <%@?page?import="java.sql.*"%>

          <%@?page?import="javax.sql.*"%>??

          <%@?page?import="javax.naming.*"%>??

          <html>?

          <body>?

          <%

          ?

          Context?ctx?=?new?InitialContext();

          Connection?conn=null;

          ??????????ctx?=?new?InitialContext();

          ??????????DataSource?ds?=(DataSource)ctx.lookup("java:comp/env/jdbc/test");

          ??????????conn?=?ds.getConnection();

          Statement?stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);?

          String?sql="select?*?from?T_Student";?

          ResultSet?rs=stmt.executeQuery(sql);?

          while(rs.next())?{%>

          <%?

          out.print(rs.getString(1));

          out.print(rs.getString(2));

          out.print(rs.getString(3));

          }%>?

          <%?

          out.print("數據庫操作成功,恭喜你");

          rs.close();?

          stmt.close();?

          conn.close();?

          %>?

          </body>?

          </html>
          posted on 2006-04-05 14:08 kelven 閱讀(277) 評論(0)  編輯  收藏 所屬分類: 其它
          主站蜘蛛池模板: 连山| 镇安县| 鹿邑县| 馆陶县| 辰溪县| 正镶白旗| 金湖县| 乌审旗| 武定县| 开远市| 桐城市| 阳春市| 元朗区| 龙井市| 莆田市| 泌阳县| 襄樊市| 峨边| 清苑县| 洪洞县| 琼中| 武隆县| 安化县| 磐石市| 溧水县| 吴堡县| 阳新县| 三江| 民权县| 胶南市| 文化| 晋江市| 延长县| 乐安县| 盐津县| 大丰市| 开封县| 韶山市| 改则县| 江源县| 安徽省|