先在\tomcat\conf\server.xml中</host>前加如下面代码
<Context  path="/examples" docBase="/examples" debug="0" reloadable="true" crossContext="true">
  <Resource name="jdbc/数据源名称" auth="Container" type="javax.sql.DataSource"/>
   <ResourceParams name="jdbc/数据源名称">
   <parameter>
     <name>factory</name>
 <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
   </parameter>
   <parameter>
     <name>driverClassName</name>
 <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
   </parameter>
   <parameter>
     <name>url</name>
 <value>jdbc:microsoft:sqlserver://127.0.0.1:1433;
 DatabaseName=huainan</value>
   </parameter> 
   <parameter>
     <name>username</name>
 <value>sa</value>
   </parameter>
      <parameter>
     <name>password</name>
 <value></value>
   </parameter>
   <parameter>
     <name>maxActive</name>
 <value>20</value>
   </parameter>
   <parameter>
     <name>maxIdle</name>
 <value>10</value>
   </parameter>
   <parameter>
     <name>maxWait</name>
 <value>-1</value>
   </parameter>
    </ResourceParams>
</Context>其中数据源名称那换成你的数据源名称,驱动程序的三个jar文件放在了TOMCAT/common/lib下面
还有一个很重要的在\WEB-INF\web.xml文件中加入以下代码
<description>
Resource reference to a factory for java.sql.Connection
instances that may be used for talking to a particular
database that is configured in the server.xml file.
</description>
<res-ref-name>
jdbc/数据源名称
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
然后OK~可以测试了~本问题困扰小弟多时,书上只说在server.xml中配置,害死人了,希望能帮你~

解决方案 »

  1.   

    tomcat中配置数据库连结池的具体操作,tomcat已经有了比较详细的文档http://jakarta.apache.org/tomcat/tomcat-4.0-doc/jndi-resources-howto.html这篇文档同样可以在tomcat4.0及更高版本安装后的目录里找到。以前一直认为这篇文档内容很模糊,而且例子太少。连结池配了很久都没有成功,配置成功后回头看它的内容还都是对的,只能认为是自己E文水平和理解力不行。所以下面将自己对tomcat文档的一些理解和调试过程中的一些体会,通过中文表达出来,而不是完全的翻译。按J2EE标准配置连结池,至少需要改动两个文件 $CATALINA_HOME/conf/server.xml 和 /WEB-INF/web.xml。而tomcat中,所用数据库的驱动可以用jar文件的形式(驱动为zip文件的,改后缀名为jar即可)放在$CATALINA_HOME/common/lib目录下(tomcat会自动加载该目录中jar文件),本例中就是把oracle的JDBC驱动classes12.zip更名为classes12.jar使用的。首先,server.xml在tomcat的安装目录conf目录下,连结池数据源的驱动、URL、用户名、密码,以及此连结产生资源名的等参数都保存在这里。下面就是一个例子:<Context ...>...<Resource name="jdbc/Test" auth="Container" type="javax.sql.DataSource"/><ResourceParams name="jdbc/Test"><parameter><name>user</name><value></value></parameter><parameter><name>password</name><value></value></parameter><parameter><name>driverClassName</name><value>sun.jdbc.odbc.JdbcOdbcDriver</value></parameter><parameter><name>driverName</name><value>jdbc:odbc:test</value></parameter></ResourceParams>...</Context>这里有一点大家尤其要注意的是Context中有path和docBase参数,server.xml中默认有一个<Context path="/examples" docBase="examples" debug="0" reloadable="true">如果把上面的代码放在这个<Context>之间,那它就是用来设置exmaple中的一个数据连结池资源,其他发布目录包括ROOT目录是无法调用到的。所以测试用的JSP页面也应该放到$CATALINA_HOME/webapps/examples目录下。如果你要在其他目录下发布的话,就应该建立一个相应的<Context>,并设置相应的连结资源。言归正传,看了上面的代码,很容易理解,此数据库连结池的资源名为jdbc/Test。这个资源名在tomcat启动后根据server.xml中的参数立即生成,JSP和Servlet一般即直接调用了。不过按照J2EE的规范,应该在WEB-INF目录中的web.xml部署文件来实现此资源的调度(也可以将资源名重新映射成为你所需要的名字)。按照前面提到的,应该在examples\WEB-INF目录下的web.xml文件中加入如下代码:<resource-ref><description>Resource reference to a factory for java.sql.Connectioninstances that may be used for talking to a particulardatabase that is configured in the server.xml file.</description><res-ref-name>jdbc/Test</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth></resource-ref>完毕后,就可以写测试用的JSP文件了(test.jsp):<%@ page import="javax.naming.Context" %><%@ page import="javax.sql.DataSource"%><%@ page import="javax.naming.InitialContext"%><%@ page import="java.sql.*"%><%DataSource ds = null;try{Context initCtx = new InitialContext();Context envCtx = (Context) initCtx.lookup("java:comp/env");ds = (DataSource)envCtx.lookup("jdbc/Test");if(ds!=null)out.println("Connection is OK!");else out.println("Fail!");}catch(Exception ne){ out.println(ne);}%>把它放到examples目录下即可。然后启动tomcat,输入http://localhost:8080/examples/test.jsp。如果不成功,请参阅tomcat关于JNDI的文档,再仔细分析一边。
      

  2.   

    搞定,谢谢 ebiza(*⌒_⌒*),给分了