三个驱动程序在Tomcat的Common/lib下有了,在工程的web-inf/lib下也有了!

解决方案 »

  1.   

    Here's what I did:
    1. added resource-ref entry to web.xml<resource-ref>
      <description>DataSource for HR app</description> 
      <res-ref-name>jdbc/hrDS</res-ref-name> 
      <res-type>javax.sql.DataSource</res-type> 
      <res-auth>Container</res-auth> 
    </resource-ref>2. deployed WAR file to Tomcat3. inside <tomcat_install_dir>\conf\Catalina\localhost\<my_app_context>.xml, I made sure that I had the 
    resourceentry in the file, which should have been populated upon deployment of the WAR file to Tomcat:<Resource auth="Container" description="DataSource for HR app" name="jdbc/hrDS" type="javax.sql.DataSource" />4. inside <tomcat_install_dir>\conf\Catalina\localhost\<context>.xml, I populated the 
    ResourceParamslike so:
    <ResourceParams name="jdbc/hrDS">
      <parameter>
         <name>factory</name> 
         <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> 
      </parameter>
      <parameter>
         <name>maxWait</name> 
         <value>5000</value> 
      </parameter>
      <parameter>
         <name>maxActive</name> 
         <value>4</value> 
      </parameter>
      <parameter>
         <name>password</name> 
         <value /> 
      </parameter>
      <parameter>
         <name>url</name> 
         <value>jdbc:odbc:HRFORECAST</value> 
      </parameter>
      <parameter>
         <name>driverClassName</name> 
         <value>sun.jdbc.odbc.JdbcOdbcDriver</value> 
      </parameter>
      <parameter>
         <name>maxIdle</name> 
         <value>2</value> 
      </parameter>
      <parameter>
         <name>username</name> 
         <value /> 
      </parameter>
    </ResourceParams>
      

  2.   

    <Context path="/UserInfo" docBase="" debug="5" reloadable="true" crossContext="true">
    <Resource name="jdbc/UserDB" 
       auth="UserDB" 
       type="javax.sql.DataSource" 
       username="SYSDBA"
       password="sdsdsdsd"
       driverClassName="interbase.interclient.Driver"
       url="jdbc:interbase://localhost//usr/opt/tomcat/webapps/database/main.g db"/>
    </Context>
      

  3.   

    I did the following to get up and running with Tomcat 5.5.4:
    (Note that javatest was the name of my webapp, and javatestDB was the name of my database)1) Copied "mysql-connector-java-3.0.16-ga-bin.jar" to "%CATALINA_HOME%\common\lib" (though I could have instead copied it to the "WEB-INF\lib" directory for my webapp if I didn't plan to use the driver across multiple applications.)2) Added the following to my Java class:
    InitialContext ic = new InitialContext();
    ds = (DataSource)ic.lookup("java:comp/env/jdbc/javatestDB");
    con = ds.getConnection();
    3) Added the following within the "web-app" node of "WEB-INF/web.xml" (placing it at an appropriate location based on the DTD for web.xml files):
    <resource-ref>
    <description>DB Connection</description>
        <res-ref-name>jdbc/javatestDB</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
    4) Added a "Resource" node within the "Context" node in %CATALINA_HOME%\conf\Catalina\localhost\javatest.xml:
    <?xml version='1.0' encoding='utf-8'?>
    <Context docBase="C:/eclipse/workspace/javatest" path="/javatest" reloadable="true" workDir="C:\eclipse\workspace\javatest\work">
      <Resource auth="Container" name="jdbc/javatestDB" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" password="dbPassword" maxIdle="2" maxWait="5000" username="dbUsername" url="jdbc:mysql://localhost:3306/javatestDB?autoReconnect=true" maxActive="4"/>
    </Context>
    5) Restarted Tomcat
      

  4.   

    根据名字去查找的时候没有找到,应该是ds=(DataSource)ctx.lookup("java:comp/env/aaa");这条语句出的问题,你看看你的配置文件的写法和语句中的一样不
      

  5.   

    我的配置文件: (已将aaa改成了jdbc/test,test为数据库名称)
    server.xml:
    <?xml version='1.0' encoding='utf-8'?>
    <Server>
      <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
      <GlobalNamingResources>
        <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
        <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="UserDatabase">
          <parameter>
            <name>factory</name>
            <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
          </parameter>
          <parameter>
            <name>pathname</name>
            <value>conf/tomcat-users.xml</value>
          </parameter>
        </ResourceParams>
        <ResourceParams name="jdbc/test">
          <parameter>
            <name>url</name>
            <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test</value>
          </parameter>
          <parameter>
            <name>password</name>
            <value>sa</value>
          </parameter>
          <parameter>
            <name>maxActive</name>
            <value>4</value>
          </parameter>
          <parameter>
            <name>maxWait</name>
            <value>5000</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>
      </GlobalNamingResources>
      <Service name="Catalina">
        <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="8080" redirectPort="8443" maxSpareThreads="75" maxThreads="150" minSpareThreads="25">
        </Connector>
        <Connector port="8009" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443">
        </Connector>
        <Engine defaultHost="localhost" name="Catalina">
          <Host appBase="webapps" name="localhost">
            <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_log." suffix=".txt" timestamp="true"/>
          </Host>
          <Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/>
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
        </Engine>
      </Service>
    </Server>
    ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    web.xml:
    <web-app>
    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list> <error-page>
    <error-code>404</error-code>
    <location>/error.jsp</location>
    </error-page>
        <resource-ref>
          <res-ref-name>jdbc/test</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
      </resource-ref>
    </web-app>
    ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    test.jsp:
    <%@ page import="java.sql.*"%>
    <%@ page import="javax.sql.*"%>
    <%@ page import="javax.naming.*"%>
    <% 
    DataSource ds = null;
    try{
    InitialContext ctx=new InitialContext();
    ds=(DataSource)ctx.lookup("java:comp/env/jdbc/test");
    System.out.println(ds);
    Connection conn = ds.getConnection();
    System.out.println(conn);
    Statement stmt = conn.createStatement();
    String strSql = " select * from tbTest";
    ResultSet rs = stmt.executeQuery(strSql);
    while(rs.next()){
    System.out.println(rs.getString(1)); 
    }
    }
    catch(Exception ex){
    ex.printStackTrace();
    }
    %>
      

  6.   

    不同版本的tomcat配置文件形式是不同的。
    强烈建议看相应版本文档。