首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

数据库连接池的有关问题(c3p0),很棘手,项目很紧,高手帮帮忙,严重感谢!

2012-01-06 
数据库连接池的问题(c3p0),很棘手,项目很紧,高手帮帮忙,严重感谢!!!1.在server.xml中 Context/Context

数据库连接池的问题(c3p0),很棘手,项目很紧,高手帮帮忙,严重感谢!!!
1.在server.xml中 <Context> </Context> 内加 <Resource   /> ,完整的示例:
<Context   path= "/test "   docBase= "C:\Program   Files\Apache   Software   Foundation\Tomcat   5.5\webapps\test "       debug= "5 "   reloadable= "true "   crossContext= "true ">
<Resource   auth= "Container "   driverClass= "com.mysql.jdbc.Driver "
                                                                        maxPoolSize= "50 "   minPoolSize= "2 "   acquireIncrement= "2 "
                                                                        name= "jdbc/connPool "   user= "root "   password= "888 "
                                                                        factory= "org.apache.naming.factory.BeanFactory "
                                                                        type= "com.mchange.v2.c3p0.ComboPooledDataSource "
                                                                        jdbcUrl= "jdbc:mysql://localhost:3306/user "   />
</Context>
2.在web.xml添加:
    <resource-ref>
            <description> DB   Connection </description>
            <res-ref-name> jdbc/connPool </res-ref-name>
            <res-type> javax.sql.DataSource </res-type>
            <res-auth> Container </res-auth>
    </resource-ref>
3.测试页面testConnPool.jsp
<%@   page   language= "java "   pageEncoding= "UTF-8 "%>
<%@   taglib   uri= "http://java.sun.com/jsp/jstl/sql "   prefix= "sql "   %>
<%@   taglib   uri= "http://java.sun.com/jsp/jstl/core "   prefix= "c "   %>

<sql:query   var= "rs "   dataSource= "jdbc/connPool ">
select   id,   typename   from   text
</sql:query>

<html>
    <head>
        <title> DB   Test   Conn   Pool   c3p0   and   Jndi </title>
    </head>
    <body>

    <h2> Results </h2>
   
<c:forEach   var= "row "   items= "${rs.rows} ">
        id:   ${row.id} <br/>


        name:   ${row.typename} <br/>
</c:forEach>

    </body>
</html>


------------------------
这个例子是我从网上考的,改了一下但是并没有成功


那个JSP测试页面最好不用标签,写一个简单的测试类就行,给个列子,各位帮忙啊!!!!!!!!!!!!!!!!!!!

[解决办法]
server.xml中
<Resource auth= "Container " driverClassName= "COM.ibm.db2.jdbc.app.DB2Driver " maxActive= "20 " maxIdle= "10 " maxWait= "10000 " name= "GSETAX " password= "db2inst1 " type= "javax.sql.DataSource " url= "jdbc:db2:DSZGXX " username= "db2inst1 "/>

web.xml中
<resource-ref>
<res-ref-name> GSETAX </res-ref-name>
<res-type> javax.sql.DataSource </res-type>
<res-auth> Container </res-auth>
</resource-ref>

我用的是DB2的数据库,改为你用的驱动,
测试类
<html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=UTF-8 ">
<title> JSP Page </title>
</head>
<body>
<center>
<h1> XT_CXTJXM表 </h1>
<%

java.sql.Connection conn;
Statement stmt;
conn=DBAccess.getConnection();
stmt=conn.createStatement();
String sql= "SELECT * FROM XT_CXTJXM ";
ResultSet rs=stmt.executeQuery(sql); %>
<table border= "1 " align= "center ">
<tr>
<td width= "200 " align= "center "> BBMC </td>
<td width= "180 "> ENABLE </td>
<td width= "200 " align= "center "> BBMC </td>
<td width= "180 "> ENABLE </td>
</tr>
<%while(rs.next()) {%>

<tr>
<td> <%=rs.getString(1) %> </td>
<td> <%=rs.getString(2) %> </td>
<td> <%=rs.getString(3) %> </td>
<td> <%=rs.getString(4) %> </td>

</tr>

<%}%>
<%

conn.close();
stmt.close();
rs.close();
%>


</table>


</center>
</body>
</html>

//数据库访问类
public class DBAccess {
public DBAccess() {
}
/** Creates a new instance of DBAccess */
public static Connection getConnection() throws NamingException,Exception{
Connection con=null;
try{
DataSource ds=getGSETAX();
con = ds.getConnection();
con.setAutoCommit(false);
return con;
} catch (SQLException sqle){
sqle.printStackTrace();
throw new Exception( "数据库繁忙,请稍候重试 ");
} catch (Exception e){
throw e;


}
}

public static void cleanUP(Connection con,PreparedStatement stmt, ResultSet rs){
try {
try {
if (rs != null) {
rs.close();
}
} finally {
try {
if (stmt != null) {
stmt.close();
}
} finally {
if (con != null) {
con.close();
}
}
}
} catch (SQLException sqle) {
sqle.printStackTrace();
}
}

//得到连接池方法
private static DataSource getGSETAX() throws NamingException {
Context c = new InitialContext();
return (DataSource) c.lookup( "java:comp/env/GSETAX ");
}
}
[解决办法]
JDBC没有注册
[解决办法]
- Servlet.service() for servlet jsp threw exception
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class ' ' for connect URL 'null '
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at org.apache.jsp.c3p0_jsp._jspService(c3p0_jsp.java:94)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(DriverManager.java:243)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773)
... 22 more


这又是个什么问题?

热点排行