免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1974 | 回复: 8
打印 上一主题 下一主题

关于数据库连接的奇怪问题,SOS!!!!(已用连接池方法解决) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-06-13 10:36 |只看该作者 |倒序浏览
做了一个利用JavaBean查数据库的JSP网页,但是刷新此页面次数过多时会出错,错误大致如下:
HTTP Status 500 - Internal Server Error

--------------------------------------------------------------------------------

type Exception report

message Internal Server Error

description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)

请帮助,多谢!!!

论坛徽章:
0
2 [报告]
发表于 2003-06-13 10:37 |只看该作者

关于数据库连接的奇怪问题,SOS!!!!(已用连接池方法解决)

对了,这里tomcat就死了,非要重启动一下才行!!!

论坛徽章:
0
3 [报告]
发表于 2003-06-13 11:58 |只看该作者

关于数据库连接的奇怪问题,SOS!!!!(已用连接池方法解决)

再贴全点吧!!

论坛徽章:
0
4 [报告]
发表于 2003-06-14 19:03 |只看该作者

关于数据库连接的奇怪问题,SOS!!!!(已用连接池方法解决)

[quote]原帖由 "rollingpig"]再贴全点吧!![/quote 发表:
     

大概就这么多了,对了,我需要说明的是,我用javabean,其中一项是scope,我写的是scope="request"

论坛徽章:
0
5 [报告]
发表于 2003-06-15 15:52 |只看该作者

关于数据库连接的奇怪问题,SOS!!!!(已用连接池方法解决)

数据库连接没有释放,刷新连接多了,就连不上去了,所以返回NULL结果

论坛徽章:
0
6 [报告]
发表于 2003-06-16 15:15 |只看该作者

关于数据库连接的奇怪问题,SOS!!!!(已用连接池方法解决)

[quote]原帖由 "ii"]数据库连接没有释放,刷新连接多了,就连不上去了,所以返回NULL结果[/quote 发表:
     


嗯,应该是的,哪我该怎么办呢,我在linux下装的TOMCAT,用的是JAVABEAN实现的数据库,不是说网页完了,就释放的嘛?哪我该怎么办,听人说要用connection pool技术,你那里有没有个例子呀???

论坛徽章:
0
7 [报告]
发表于 2003-06-17 00:46 |只看该作者

关于数据库连接的奇怪问题,SOS!!!!(已用连接池方法解决)

读读精华贴中的jndi的一些相关知识,尤其要看看tomcat帮助中的HOW_TO

论坛徽章:
0
8 [报告]
发表于 2003-06-18 22:21 |只看该作者

关于数据库连接的奇怪问题,SOS!!!!(已用连接池方法解决)

[quote]原帖由 "ii"]读读精华贴中的jndi的一些相关知识,尤其要看看tomcat帮助中的HOW_TO[/quote 发表:
     


了解,我先了解一下什么叫jndi

论坛徽章:
0
9 [报告]
发表于 2003-06-19 17:37 |只看该作者

关于数据库连接的奇怪问题,SOS!!!!(已用连接池方法解决)

对了,改用jndi,解决此问题,并将在网上查的文章张帖如下:

server.xml配置如下:
<Context path="/mysqlTest" docBase="ROOT"
       debug="5" reloadable="true" crossContext="true">;
<Resource name="jdbc/mysql"
              auth="Container"
              type="javax.sql.DataSource"/>;

<ResourceParams name="jdbc/mysql">;
   <parameter>;
     <name>;factory</name>;
     <value>;org.apache.commons.dbcp.BasicDataSourceFactory</value>;
   </parameter>;

   <!-- Maximum number of dB connections in pool. Make sure you
        configure your mysqld max_connections large enough to handle
        all of your db connections. Set to 0 for no limit.
        -->;
   <parameter>;
     <name>;maxActive</name>;
     <value>;100</value>;
   </parameter>;

   <!-- Maximum number of idle dB connections to retain in pool.
        Set to 0 for no limit.
        -->;
   <parameter>;
     <name>;maxIdle</name>;
     <value>;30</value>;
   </parameter>;

   <!-- Maximum time to wait for a dB connection to become available
        in ms, in this example 10 seconds. An Exception is thrown if
        this timeout is exceeded.  Set to -1 to wait indefinitely.
        -->;
   <parameter>;
     <name>;maxWait</name>;
     <value>;10000</value>;
   </parameter>;

   <!-- MySQL dB username and password for dB connections  -->;
   <parameter>;
    <name>;username</name>;
    <value>;root</value>;
   </parameter>;
   <parameter>;
    <name>;password</name>;
    <value>;</value>;
   </parameter>;

   <!-- Class name for mm.mysql JDBC driver -->;
   <parameter>;
      <name>;driverClassName</name>;
      <value>;org.gjt.mm.mysql.Driver</value>;
   </parameter>;

   <!-- The JDBC connection url for connecting to your MySQL dB.
        The autoReconnect=true argument to the url makes sure that the
        mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
        connection.  mysqld by default closes idle connections after 8 hours.
        -->;
   <parameter>;
     <name>;url</name>;
     <value>;jdbc:mysql://localhost:3306/test?autoReconnect=true</value>;
   </parameter>;
</ResourceParams>;
</Context>;
记得配置在你的application下的WEB_INF/web.xml在<web-app>;</web-app>;之间加入
如下代码:
<resource-ref>;
   <description>;DbPool For Mysql</description>;
   <res-ref-name>;jdbc/mysql</res-ref-name>;
   <res-type>;javax.sql.DataSource</res-type>;
   <res-auth>;Container</res-auth>;
</resource-ref>;

再做个测试页面:
<%@ page contentType="text/html; charset=Shift_JIS" %>;
<%@ page import="javax.naming.Context" %>;
<%@ page import="javax.sql.DataSource"%>;
<%@ page import="javax.naming.InitialContext"%>;
<%@ page import="java.sql.*"%>;

<%
  DataSource ds = null;
  Connection conn = null;
  try{
    Context initCtx = new InitialContext();
    Context envCtx = (Context) initCtx.lookup("java:comp/env";
    ds = (DataSource)envCtx.lookup("jdbc/mysql";

    conn = ds.getConnection();
    if(conn!=null)
        out.println("Connection is OK!";
    else
        out.println("Connection Failed!";
   }catch(Exception e){
      out.println(e.getMessage());
   }
%>;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP