tomcat6配置JNDI

在Java Web開發中都要與數據庫打交道,爲了避免頻繁地打開和關閉數據庫,以減小數據庫操做負荷,可以使數據庫在開發過程當中保持打開狀態,在這裏咱們採用配置數據源的方式(JNDI),而不是傳統地JDBC方式。下面就針對常規型的MySQL5.0.15和Tomcat6.0的數據源的基本配置進行簡單的介紹:
  首先聲明,若是數據源沒有配置好的話,在開發過程當中會拋出諸以下列異常等:
  一、org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
  二、Caused by: java.sql.SQLException: No suitable driver
  三、Name jdbc is not bound in this context
如今開始講下如何配置好數據源同時也是解決上述異常的辦法:
方案一:
  步驟1、在Tomcat6.0解壓目錄conf下找到context.xml,在其中的<Context></Context> 中加入以下代碼(要根據本身的狀況稍加修改):
<Resource name="jdbc/TestDB"  auth="Container" type="javax.sql.DataSource" password="localhost" username="root"  driverClassName="org.gjt.mm.mysql.Driver"  url="jdbc:mysql://localhost/myznt"  maxActive="100"  maxIdle="30"  maxWait="5000"/>
  步驟2、在工程應用中/WEB-INF/下的web.xml中加入以下代碼(要根據本身的狀況稍加修改):
<resource-ref>
    <description>MySQL DataSource</description>
     <res-ref-name>jdbc/myznt</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
</resource-ref>
步驟3、把MySQL-Connector-java-3.0.12-bin.jar(可換更高版本)加到Tomcat安裝目錄中的lib目錄下和工程中的lib目錄下。
    經過這三步,一個基本的數據源就配置成功了!
----------------------------------------------------------------------------------
方案二
步驟1、在Tomcat6.0解壓目錄conf下找到server.xml,在其中的
<GlobalNamingResources></GlobalNamingResources>中加入以下代碼(要根據本身的狀況稍加修改):
<Resource name="jdbc/TestDB"  auth="Container" type="javax.sql.DataSource" password="localhost" username="root"  driverClassName="org.gjt.mm.mysql.Driver"  url="jdbc:mysql://localhost/myznt"  maxActive="100"  maxIdle="30"  maxWait="5000"/>
步驟2、在Tomcat6.0解壓目錄conf下找到context.xml,在其中的<Context></Context>中加入並修改爲以下代碼(要根據本身的狀況稍加修改):
<Context path="/znt" debug="1" reloadable="true"  docBase="E:\EclipseWorkPlace\MyZNT\WebRoot">
<ResourceLink global="jdbc/myznt" name="jdbc/myznt" type="javax.sql.Datasource"/>
................<!--此間可能有系統其它自配的內容,可無論-->
</Context>
步驟3、在工程中/WEB-INF/下的web.xml中加入以下代碼(要根據本身的狀況稍加修改):
<resource-ref>
    <description>MySQL DataSource</description>
     <res-ref-name>jdbc/myznt</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
</resource-ref>
步驟4、把MySQL-Connector-java-3.0.12-bin.jar(可換更高版本)加到Tomcat安裝目錄中的lib目錄下和工程中的lib目錄下。
   經過以上四步就行了!
-----------------------------------------------------------
方案三(具備不穩定性,慎用)
步驟1、在Tomcat6.0解壓目錄conf下找到server.xml,在其中的<Host></Host>中加入以下代碼(要根據本身的狀況稍加修改):
<Context path="/znt" docBase="E:\EclipseWorkPlace\MyZNT\WebRoot"
  debug="5" reloadable="true" crossContext="true"> java

<Logger className="org.apache.catalina.logger.FileLogger"
     prefix="localhost_MysqlTest_log." suffix=".txt"
     timestamp="true"/>
<Resource name="jdbc/myznt"  auth="Container" type="javax.sql.DataSource" password="localhost" username="root"  driverClassName="org.gjt.mm.mysql.Driver"  url="jdbc:mysql://localhost/myznt"  maxActive="100"  maxIdle="30"  maxWait="5000"/>
</Context>
步驟2、在工程中/WEB-INF/下的web.xml中加入以下代碼(要根據本身的狀況稍加修改):
<resource-ref>
    <description>MySQL DataSource</description>
     <res-ref-name>jdbc/myznt</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
</resource-ref>
步驟3、把MySQL-Connector-java-3.0.12-bin.jar(可換更高版本)加到Tomcat安裝目錄中的lib目錄下和工程中的lib目錄下。
    經過以上三步,大部分時候仍是起做用的,但有時會出現異常,所以不建議使用。
    以上幾種方案在實踐中經受了測試,方案一和二比較穩定,方案三最好別用,同時只是進行了大體地概括,其中的哪些地方沒有必要或哪裏欠妥尚未去測試,望讀者進行批評指正。
--------------------------------------------------------
Tomcat連接數據源的基本代碼
Context initContext;
try {
    initContext = new InitialContext();
    Context envContext  = (Context)initContext.lookup("java:/comp/env");
    DataSource ds = (DataSource)envContext.lookup("jdbc/TestDB");
    Connection conn = ds.getConnection();
    Statement stmt = conn.createStatement();
    ResultSet set = stmt.executeQuery("SELECT id,name,age FROM user_lzy");
    while(set.next()){
System.out.println(set.getString("name"));
    }
    //etc.
} catch (NamingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} mysql

相關文章
相關標籤/搜索