各位高手帮我看看数据源配置不成功,是怎么回事?我是这样做的:
1.在tomcat的admin中配置数据源信息,部分信息如下:
        JNDI Name:jdbc/datasource
        Data Source URL: com.mysql.jdbc.Driver
        ........
   依次save-->Commition Changes
2.把将数据库的JDBC驱动放入TOMCAT_HOME/common/lib下。 
3.配置项目的web.xml文件:
        <resource-ref> 
        <description>DB Connection</description> 
        <res-ref-name>jdbc/bugcsol</res-ref-name> 
        <res-type>javax.sql.DataSource</res-type> 
       <res-auth>Container</res-auth> 
      </resource-ref>
4.在tomcat的安装目录下的conf/Catalina/localhost/jsp_study.xml文件已存在,其内容是:
     <?xml version="1.0" encoding="UTF-8"?>
<Context
    reloadable="true">
  <Resource
    auth="Container"
    name="MyDataSource"
    type="javax.sql.DataSource"/>
  <Resource
    auth="Container"
    name="datasourse"
    type="javax.sql.DataSource"/>
</Context>
5.测试代码如下:
<%@ page contentType="text/html;charset=GBK"%> 
<%@ page import= "java.sql.* "%> 
<%@ page import= "javax.naming.* "%> 
<%@ page import= "javax.sql.DataSource "%> 
<% 
try{ 
Context initCtx = new InitialContext(); 
Context ctx = (Context) initCtx.lookup("java:comp/env"); 
//获取连接池对象 
DataSource ds =(DataSource)ctx.lookup("jdbc/datasource"); 
//创建连接
Connection conn = ds.getConnection(); 
Statement stmt = conn.createStatement(); 
String strSql ="SELECT * FROM product"; 
ResultSet rs = stmt.executeQuery(strSql); 
  out.print("数据源配置并连接成功!<BR>");  
  out.print("<TABLE BORDER=1 bordercolorlight=#000000 >");
  out.print("<TR><TD width=40>序号</TD>");
  out.print("<TD width=60>代码</TD><TD width=80>商品名称</TD>");
  out.print("<TD width=60>品牌</TD>");
  out.print("<TD width=150>产品简介</TD><TD width=80>存货数量</TD>");
  out.print("<TD width=80>价格/元</TD></TR>");
  while(rs.next())
    {
     out.print("<TR>");
     out.print("<TD>"+rs.getInt(1)+"</TD>");
     out.print("<TD>"+rs.getString("pdm")+"</TD>");
     out.print("<TD>"+rs.getString("pname")+"</TD>");     
     out.print("<TD>"+rs.getString("provider")+"</TD>");
     out.print("<TD>"+rs.getString("info")+"</TD>");
     out.print("<TD>"+rs.getString("stock")+"</TD>");
     out.print("<TD>"+rs.getString("price")+"</TD>");
     out.print("</TR>");
   }
  out.print("</TABLE>"); 
rs.close();
}catch(Exception ex){ 
ex.printStackTrace(); 
throw new SQLException("cannot get Connection pool."); 

%> 
提示错误如下:
--------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Exception in JSP: /DataSource/testdatasource.jsp:3936: rs.close();
37: }catch(Exception ex){ 
38: ex.printStackTrace(); 
39: throw new SQLException("cannot get Connection pool."); 
40: } 
41: %> 
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause javax.servlet.ServletException: cannot get Connection pool.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.DataSource.testdatasource_jsp._jspService(testdatasource_jsp.java:92)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

解决方案 »

  1.   

    用到的Tomcat版本为5.5.12,Tomcat Admin工具的版本为5.5.16。这里强调版本号,是因为不同版本的配置文件的写法略有不同。
    配置步骤:
    1.安装tomcat admin工具。
    将下载的tomcat admin的文件夹拷贝到tomcat的安装目录下。浏览地址http://localhost:8080/admin/。如果安装成功会出现tomcat管理界面。
    2.配置tomcat全局数据源:
         登入tomcat管理系统,按附件图示配置数据源:
        
    配置完后记得要提交,即按图示的commit changes按钮。如果配置配置成功的话,可以看到数据源的相关信息。
    3.将数据库的JDBC驱动放入TOMCAT_HOME/common/lib下。
    4.配置项目的web.xml文件。
    将下面代码加入到web.xml中:
    <resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/bugcsol</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    5.到TOMCAT_HOME/conf/Catalina/localhost下面察看是否存在名字为项目名.xml的文件。如果不存在,新建该文件。在文件中加入以下代码:
       <?xml version="1.0" encoding="UTF-8"?>
        <Context privileged="true">
         <ResourceLink
          global="jdbc/bugcsol"
          name="jdbc/bugcsol"
          type="javax.sql.DataSourcer"/>
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
       </Context>
    6.将项目拷贝到TOMCAT_HOME/webapps下面。
    7.启动tomcat,用代码:
          Context ctx = new InitialContext();
         DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/bugcsol");
         Connection conn = ds.getConnection();
        测试是否配置成功。
    上面配置全局数据源的代码。配置项目范围内的数据源的过程略为简单些。
    只需要在server.xml文件中加入如下代码:
    <Context>
    <Resource name="jdbc/HPMSHP"
      type="javax.sql.DataSource"
      password="kokai"
        driverClassName="oracle.jdbc.OracleDriver"
      maxIdle="2"
      maxWait="50"
      username="kokai"
               url="jdbc:oracle:thin:@10.70.26.91:1521:public"
      maxActive="4"/>
    </Context> 
      

  2.   

    必须再安装tomcat admin吗?输入http://127.0.0.1:8080/admin不就能直接进入吗?
      

  3.   

    为什么要用tomcat5.x,用6.x把!