免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: foxzhu

jsp頁面為何在運行時讓sql server占用了很大的內存? [复制链接]

论坛徽章:
0
发表于 2006-03-11 08:56 |显示全部楼层
kakasi老哥﹐我引用你的BufferedResultSet類﹐然后Query也按你寫的改了﹐編譯通過﹐但是當我的頁面在調用此executeQuery()時卻出錯﹐系統提示NullPointerException錯誤﹐按提示進入編譯后的java文件查看﹐只要是使用了結果集的語句全部出錯﹗
系統報錯如下﹕
HTTP Status 500 -

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

type Exception report

message

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

exception

org.apache.jasper.JasperException
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:207)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:240)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:187)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:94
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:94
        at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:235
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
        at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:11
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:94
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:94
        at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)


root cause

java.lang.NullPointerException
        at org.apache.jsp.aa_jsp._jspService(aa_jsp.java:69)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:92)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:162)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:240)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:187)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:94
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:94
        at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:235
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
        at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:11
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
        at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)

編譯后的Java文件如下﹕
package org.apache.jsp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import org.apache.jasper.runtime.*;
import java.sql.*;
import java.io.*;
import java.util.*;

public class aa_jsp extends HttpJspBase {


  private static java.util.Vector _jspx_includes;

  public java.util.List getIncludes() {
    return _jspx_includes;
  }

  public void _jspService(HttpServletRequest request, HttpServletResponse response)
        throws java.io.IOException, ServletException {

    JspFactory _jspxFactory = null;
    javax.servlet.jsp.PageContext pageContext = null;
    HttpSession session = null;
    ServletContext application = null;
    ServletConfig config = null;
    JspWriter out = null;
    Object page = this;
    JspWriter _jspx_out = null;


    try {
      _jspxFactory = JspFactory.getDefaultFactory();
      response.setContentType("text/html;charset=big5";
      pageContext = _jspxFactory.getPageContext(this, request, response,
                              null, true, 8192, true);
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;

      out.write("\r\n";
      com.conn1 conn1 = null;
      synchronized (pageContext) {
        conn1 = (com.conn1) pageContext.getAttribute("conn1", PageContext.PAGE_SCOPE);
        if (conn1 == null){
          try {
            conn1 = (com.conn1) java.beans.Beans.instantiate(this.getClass().getClassLoader(), "com.conn1";
          } catch (ClassNotFoundException exc) {
            throw new InstantiationException(exc.getMessage());
          } catch (Exception exc) {
            throw new ServletException("Cannot create bean of class " + "com.conn1", exc);
          }
          pageContext.setAttribute("conn1", conn1, PageContext.PAGE_SCOPE);
        }
      }
      out.write("\r\n";
      out.write("<HTML>\r\n";
      out.write("<HEAD>\r\n";
      out.write("<TITLE>伺服器登入";
      out.write("</TITLE>\r\n";
      out.write("</head>\r\n";
      out.write("<body>\r\n    ";

           String gh="";
           ResultSet rs=conn1.executeQuery("select * from base_role");
           if(rs.next());
              gh="fdsafdsa";
       
      out.write("\r\n    ");
      out.write("<form name=\"f1\" method=\"post\">\r\n\t  ");
      out.write("<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\">\r\n\t     ");
      out.write("<tr>\r\n\t\t   ");
      out.write("<td>gfdsgfdsgfds");
      out.write("</td>\r\n\t\t   ");
      out.write("<td>");
      out.print(gh);
      out.write("</td>\r\n\t\t ");
      out.write("</tr>\r\n\t  ");
      out.write("</table>\r\n\t");
      out.write("</form>\r\n");
      out.write("</body>\r\n");
      out.write("</html>");
    } catch (Throwable t) {
      out = _jspx_out;
      if (out != null && out.getBufferSize() != 0)
        out.clearBuffer();
      if (pageContext != null) pageContext.handlePageException(t);
    } finally {
      if (_jspxFactory != null) _jspxFactory.releasePageContext(pageContext);
    }
  }
}
說明一下﹐我的BufferedResultSet類是完全抄你的﹐executeQuery也是將你的代碼貼入我的bean中﹗謝謝老哥啊﹐我頭暈啦..

jad.rar

3.8 KB, 下载次数: 41

javabean文件

论坛徽章:
0
发表于 2006-03-11 10:01 |显示全部楼层

  1. public ResultSet executeQuery(String s)   //
  2.                   {
  3.                         BufferedResultSet bRs = null;
  4.                         //Connection conn = null;
  5.                         Statement stmt = null;
  6.                         ResultSet rs = null;
  7.                         try
  8.                         {
  9.                             //conn = DriverManager.getConnection(url, user, password);
  10.                             stmt = conn.createStatement(1004, 1007);
  11.                             rs = stmt.executeQuery(s);
  12.                             bRs = new BufferedResultSet(rs);
  13.                         }
  14.                         catch(SQLException sqlexception)
  15.                         {
  16.                             System.err.println("executeQuery False():" + sqlexception.getMessage());
  17.                         }
  18.                         finally
  19.                          {
  20.                                          try
  21.                                          {
  22.                                            if(rs != null)
  23.                                            {
  24.                                                rs.close();
  25.                                            }
  26.                                            if(stmt != null)
  27.                                            {
  28.                                                stmt.close();
  29.                                            }
  30.                                           // if(conn != null)
  31.                                            //{
  32.                                             //   conn.close();
  33.                                           // }
  34.                                          }
  35.                                         catch(SQLException sqlexception)
  36.                                         {
  37.                                             sqlexception.printStackTrace();
  38.                                         }
  39.                           }
  40.                         return bRs;
  41.                   }
复制代码


粘下来你的executeQuery,去掉里边取得connection的地方,使用你自己的类变量;

论坛徽章:
0
发表于 2006-03-11 10:20 |显示全部楼层
按上所述﹐仍然報NullPointerException錯誤﹗
我若將BufferedResultSet類中的數組下標改為從1開始便可得出數據﹐可惜數據集rs的任何方法如(close,beforeFirst)均不能使用﹗到底是咋了?我頭兩個大了﹔kakasi 哥﹐救人救到底﹐能否多耽誤你一點時間﹐幫我仔細瞧瞧﹐小弟這几天瘦了好几斤啦

论坛徽章:
0
发表于 2006-03-11 10:40 |显示全部楼层
抱歉,少写了一行

请使用附件的试一下

BufferedResultSet.rar

1.89 KB, 下载次数: 13

a

论坛徽章:
0
发表于 2006-03-11 11:04 |显示全部楼层
( 去掉里边取得connection的地方,使用你自己的类变量; )這里還是不明白。。。。

我只能按你說的改動executeQuery如下﹕
                 public ResultSet executeQuery(String s)   //
                  {
                        BufferedResultSet bRs = null;
                        //Connection conn = null;
                        Statement stmt = null;
                        ResultSet rs = null;
                        try
                        {
                            //conn = DriverManager.getConnection(url, user, password);
                            stmt = conn.createStatement(1004, 1007);  //conn都沒定義﹐這句還引用conn﹐咋辦啊?
                            rs = stmt.executeQuery(s);
                            bRs = new BufferedResultSet(rs);
                        }
                        catch(SQLException sqlexception)
                        {
                            System.err.println("executeQuery False():" + sqlexception.getMessage());
                        }
                        finally
                         {
                                         try
                                         {
                                           if(rs != null)
                                           {
                                               rs.close();
                                           }
                                           if(stmt != null)
                                           {
                                               stmt.close();
                                           }
                                           //if(conn != null)
                                           //{
                                           //    conn.close();
                                           //}
                                         }
                                        catch(SQLException sqlexception)
                                        {
                                            sqlexception.printStackTrace();
                                        }
                          }
                        return bRs;
                  }
BufferedResultSet類已下載您最新提供的檔案﹐編譯通過﹐運行仍然報NullPointerException錯誤﹗

jad.rar

3.88 KB, 下载次数: 19

最新java文檔

论坛徽章:
0
发表于 2006-03-11 11:12 |显示全部楼层
stmt = conn.createStatement(1004, 1007);  //conn都沒定義﹐這句還引用conn﹐咋辦啊?

使用你executeQuery所在类的链接,好像是那个conn1。空指针是从哪里抛的,自己打些信息debug一下。我那天随手写得,拿出来给大家review,也没怎么测试,我再看看去

论坛徽章:
0
发表于 2006-03-11 11:27 |显示全部楼层
現在executeQuery能調試通過且運行也不再提供query錯誤﹐只可惜所有的ResultSet所具有的屬性和方法均不能使用﹐只要用到(beforeFirst.....等等)﹐均提示unsupport........

论坛徽章:
0
发表于 2006-03-11 11:36 |显示全部楼层
原帖由 foxzhu 于 2006-3-11 12:27 发表
現在executeQuery能調試通過且運行也不再提供query錯誤﹐只可惜所有的ResultSet所具有的屬性和方法均不能使用﹐只要用到(beforeFirst.....等等)﹐均提示unsupport........


这个方法我没写,自己练习实现一下吧~不是很复杂

论坛徽章:
0
发表于 2006-03-11 14:07 |显示全部楼层
我是看著你前面寫的几個方法套著寫的﹐但有兩個還是寫不出來﹐請幫我填寫一下好嗎?謝了
    public void beforeFirst() throws SQLException
    {
        throw new SQLException("unsupport......");
    }
    public void close() throws SQLException
    {
         throw new SQLException("unsupport......");
    }
   另外public int getInt(String columnName) throws SQLException 調用時報錯

论坛徽章:
0
发表于 2006-03-11 15:02 |显示全部楼层
kakasi老哥﹐beforeFirst()調用不通過﹐仍然報unsupport....

jad.rar

3.9 KB, 下载次数: 24

最新javabean

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP