DANCE WITH JAVA

          開發(fā)出高質(zhì)量的系統(tǒng)

          常用鏈接

          統(tǒng)計

          積分與排名

          好友之家

          最新評論

          配置tomcat5.5 jndi 各種配置方式 分析總結(jié)(mysql)

          準(zhǔn)備工作:
          安裝tomcat5.5(注意這點)
          安裝mysql
          拷貝mysql驅(qū)動到tomcat_home/common/lib下
          新建一個web工程
          在工程中加入index.jsp
          <%@page import="java.util.*,javax.naming.*,java.sql.*,javax.sql.*" %>
          <%@page contentType="text/html;charset=BIG5"%>
          <%    
              Context ctx 
          = new InitialContext();      
              String strLookup 
          = "java:comp/env/jdbc/test"
              DataSource ds 
          =(DataSource) ctx.lookup(strLookup);
              Connection con 
          = ds.getConnection();
              
          if (con != null){
                  out.print(
          "success");
              }
          else{
                  out.print(
          "failure");
              }
                 
          %>
          web.xml中加入
          <resource-ref>
              
          <res-ref-name>jdbc/test</res-ref-name>
              
          <res-type>javax.sql.DataSource</res-type>
              
          <res-auth>Container</res-auth>
              
          <res-sharing-scope>Shareable</res-sharing-scope>
          </resource-ref>

          配置tomcat
          這一步的目的就是告訴tomcat如何連接數(shù)據(jù)庫
          可以分為兩種大的類型,每種類型又有很多種配置方式
          配置類型一;
          (直接配置的類型,這種方式最簡單)

          方法一:
          直接在tomcat_home/conf/localhost/下建立一個xml文件,文件名是<yourAppName>.xml
          例如我的工程名叫jndi,對應(yīng)的名字叫jdni.xml
          內(nèi)容如下:

          <Context>
           
          <Resource
                    name
          ="jdbc/test"
                    type
          ="javax.sql.DataSource"
                    password
          ="bb"
                    driverClassName
          ="com.mysql.jdbc.Driver"
                    maxIdle
          ="2"
                    maxWait
          ="50"
                    username
          ="root"
                    url
          ="jdbc:mysql://localhost:3306/test"
                    maxActive
          ="4"/>
          </Context>

          方法二:
          只需在tomcat_home\webapps\myapps\META-INF\context.xml中增加:
          <context>
          <Resource
                    name
          ="jdbc/test"
                    type
          ="javax.sql.DataSource"
                    password
          ="bb"
                    driverClassName
          ="com.mysql.jdbc.Driver"
                    maxIdle
          ="2"
                    maxWait
          ="50"
                    username
          ="root"
                    url
          ="jdbc:mysql://localhost:3306/test"
                    maxActive
          ="4"/>
          </context>


          說明:這種配置需要告訴tomcat resource的內(nèi)容,resource應(yīng)用于什么地方
          第一種方法通過文件名知道了app的name
          第二種方式本身就在app內(nèi)部,所以name肯定知道
          兩種方式都要放在context中

          配置類型二:
          (配置全局resource,然后通過resourcelink來映射)

          步驟一:配置全局resource(這一步對于所有的配置都是一樣的)
          打開tomcat_home/conf/server.xml加入

          <Resource
                    name
          ="jdbc/test"
                    type
          ="javax.sql.DataSource"
                    password
          ="bb"
                    driverClassName
          ="com.mysql.jdbc.Driver"
                    maxIdle
          ="2"
                    maxWait
          ="50"
                    username
          ="root"
                    url
          ="jdbc:mysql://localhost:3306/test"
                    maxActive
          ="4"/>


          步驟二:映射
          (映射可以配置在多個地方,也就有多個配置方法:)

          方法一:(對比類型一的配置理解)
          直接在tomcat_home/conf/localhost/下建立一個xml文件,文件名是<yourAppName>.xml
          例如我的工程名叫jndi,對應(yīng)的名字叫jdni.xml加入如下內(nèi)容

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

          方法二:(對比類型一的配置理解)
          在tomcat_home\webapps\myapps\META-INF\context.xml的Context中增加:
          <context>
          <ResourceLink global="jdbc/test" name="jdbc/test" type="javax.sql.DataSource"/> 
          </context>


          方法三:(上邊兩種方法都是把全局的resource 映射給jndi這個web應(yīng)用,第三種方法就是把這個
          全局的resource直接公開給所有的應(yīng)用)
          在tomcat_home/conf/context.xml的<Context></context>之間加入
          <ResourceLink global="jdbc/test" name="jdbc/test" type="javax.sql.DataSource"/>

          運行測試:
          打開ie,輸入http://localhost:8080/jndi/index.jsp
          看到success

          常見錯誤:
          1,Name jdbc is not bound in this Context
          2,Cannot create JDBC driver of class '' for connect URL 'null' conf localhost
          原因:
          大多數(shù)是因為配置了全局的resource,但沒有l(wèi)ink造成的。
          解決:
          加入link就行了,link的方式見類型二的三種方法。

          分析:
          看到上邊這么多方法,是否感覺眼花繚亂,其實不要死記配置,按照原理分析一下就好了。
          你需要的是告訴tomcat哪個應(yīng)用如何連接數(shù)據(jù)庫。

          類型一的方式對應(yīng)一個應(yīng)用單獨使用這個配置的情況
          就是直接告訴tomcat"應(yīng)用名"  "連接數(shù)據(jù)庫需要的參數(shù)"

          類型二的方式對應(yīng)多個應(yīng)用共享一個配置的情況
          這樣先配置server.xml告訴tomcat全局范圍的"連接數(shù)據(jù)庫需要的參數(shù)"
          然后映射,映射的時候
          1,如果不知道"app name(應(yīng)用名)"就只需要通過文件名來傳遞這個信息
          2,如果"app name"都知道就只需要加入映射的內(nèi)容
          3,如果要配置成全局公用的,就不需要"app name",本身放在tomcat的context.xml中

          最后再次提醒一下:所有的配置必須放在<context></context>之間

          posted on 2007-05-07 22:27 dreamstone 閱讀(6825) 評論(2)  編輯  收藏 所屬分類: 利器基礎(chǔ)片段

          評論

          # re: 配置tomcat5.5 jndi 各種配置方式 分析總結(jié)(mysql) 2007-05-07 23:03 楊愛友

          樓主能用SQLSERVER配置好嗎?用JNDI我一直連接不上SQLSERVER數(shù)據(jù)庫  回復(fù)  更多評論   

          # re: 配置tomcat5.5 jndi 各種配置方式 分析總結(jié)(mysql) 2007-05-07 23:33 dreamstone

          sqlserver和mysql的區(qū)別不大。主要幾個地方:
          1,sqlserver的jdbc驅(qū)動是三個文件,mysql是一個。
          2,把文中多次出現(xiàn)的這一部分換成
          <Resource
          name="jdbc/test"
          type="javax.sql.DataSource"
          username="sa"
          password="your password" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
          maxIdle="2"
          maxWait="50"
          DatabaseName="your db name"
          url="jdbc:microsoft:sqlserver://localhost:1433"
          maxActive="4"/>
          只需要更改url ,username ,password,driverClassName并加入databasename就可以了。
          沒經(jīng)過測試,憑著記憶寫的,不過應(yīng)該是對的。  回復(fù)  更多評論   

          主站蜘蛛池模板: 南投县| 阿鲁科尔沁旗| 宁德市| 永和县| 芮城县| 确山县| 依兰县| 马公市| 莆田市| 九台市| 石首市| 民乐县| 湘阴县| 永寿县| 铁力市| 巩义市| 修水县| 乐平市| 新丰县| 高唐县| 汝城县| 五河县| 利津县| 东台市| 本溪市| 锡林浩特市| 浑源县| 玉屏| 六枝特区| 德江县| 宜丰县| 晋州市| 高安市| 红桥区| 高台县| 吉林省| 田阳县| 隆子县| 任丘市| 谷城县| 桃源县|