各位高手帮我看看数据源配置不成功,是怎么回事?我是这样做的:
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的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 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>