最近使用velocity,发现系统运行一会后就时不时会报下面的错误,刷新一下又正常了。使用的resin服务器,WEB.xml中配置:
<servlet>
<description>velocity</description>
<servlet-name>velocity</servlet-name>
<servlet-class>org.apache.velocity.tools.view.VelocityViewServlet</servlet-class>
<init-param>
<param-name>org.apache.velocity.properties</param-name>
<param-value>WEB-INF/classes/velocity.properties</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>velocity</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>麻烦各位朋友帮忙指点一下,谢谢![11-08-09 10:28:57] ERROR [velocity-151] - Error processing a template for path '/ifac/frame/myzdx.html'
[11-08-09 10:28:57] ERROR [velocity-151] - java.lang.NullPointerException
at com.caucho.server.connection.AbstractHttpResponse.writeHeaders(AbstractHttpResponse.java:1755)
at com.caucho.server.connection.ResponseStream.writeHeaders(ResponseStream.java:221)
at com.caucho.server.connection.ResponseStream.writeNext(ResponseStream.java:411)
at com.caucho.server.connection.ToByteResponseStream.flushByteBuffer(ToByteResponseStream.java:525)
at com.caucho.server.connection.ToByteResponseStream.flushBuffer(ToByteResponseStream.java:431)
at com.caucho.server.connection.ResponseStream.flushBuffer(ResponseStream.java:568)
at com.caucho.server.connection.ResponseStream.getBuffer(ResponseStream.java:230)
at com.caucho.vfs.i18n.UTF8Writer.write(UTF8Writer.java:119)
at com.caucho.server.connection.ToByteResponseStream.flushCharBuffer(ToByteResponseStream.java:476)
at com.caucho.server.connection.ToByteResponseStream.flushBuffer(ToByteResponseStream.java:429)
at com.caucho.server.connection.ResponseStream.flushBuffer(ResponseStream.java:568)
at com.caucho.server.connection.ResponseStream.flush(ResponseStream.java:584)
at com.caucho.server.connection.ResponseStream.flushChar(ResponseStream.java:632)
at com.caucho.server.connection.ResponseWriter.flush(ResponseWriter.java:174)
at org.apache.velocity.io.VelocityWriter.flush(VelocityWriter.java:156)
at org.apache.velocity.tools.view.VelocityView.merge(VelocityView.java:905)
at org.apache.velocity.tools.view.VelocityViewServlet.mergeTemplate(VelocityViewServlet.java:318)
at org.apache.velocity.tools.view.VelocityViewServlet.doRequest(VelocityViewServlet.java:220)
at org.apache.velocity.tools.view.VelocityViewServlet.doGet(VelocityViewServlet.java:182)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:114)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:273)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:682)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:743)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:662)
at java.lang.Thread.run(Thread.java:619)[10:28:57.631] {http--5007-1$30851894} java.lang.NullPointerException
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.connection.AbstractHttpResponse.writeHeaders(AbstractHttpResponse.java:1755)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.connection.ResponseStream.writeHeaders(ResponseStream.java:221)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.connection.ResponseStream.writeNext(ResponseStream.java:411)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.connection.ToByteResponseStream.flushByteBuffer(ToByteResponseStream.java:525)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.connection.ToByteResponseStream.flushBuffer(ToByteResponseStream.java:431)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.connection.ResponseStream.flushBuffer(ResponseStream.java:568)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.connection.ResponseStream.getBuffer(ResponseStream.java:230)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.vfs.i18n.UTF8Writer.write(UTF8Writer.java:119)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.connection.ToByteResponseStream.flushCharBuffer(ToByteResponseStream.java:476)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.connection.ToByteResponseStream.flushBuffer(ToByteResponseStream.java:429)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.connection.ResponseStream.flushBuffer(ResponseStream.java:568)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.connection.ResponseStream.flush(ResponseStream.java:584)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.connection.ResponseStream.flushChar(ResponseStream.java:632)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.connection.ResponseWriter.flush(ResponseWriter.java:174)
[10:28:57.631] {http--5007-1$30851894}  at org.apache.velocity.io.VelocityWriter.flush(VelocityWriter.java:156)
[10:28:57.631] {http--5007-1$30851894}  at org.apache.velocity.tools.view.VelocityView.merge(VelocityView.java:905)
[10:28:57.631] {http--5007-1$30851894}  at org.apache.velocity.tools.view.VelocityViewServlet.mergeTemplate(VelocityViewServlet.java:318)
[10:28:57.631] {http--5007-1$30851894}  at org.apache.velocity.tools.view.VelocityViewServlet.doRequest(VelocityViewServlet.java:220)
[10:28:57.631] {http--5007-1$30851894}  at org.apache.velocity.tools.view.VelocityViewServlet.doGet(VelocityViewServlet.java:182)
[10:28:57.631] {http--5007-1$30851894}  at javax.servlet.http.HttpServlet.service(HttpServlet.java:114)
[10:28:57.631] {http--5007-1$30851894}  at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:273)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.server.port.TcpConnection.run(TcpConnection.java:682)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:743)
[10:28:57.631] {http--5007-1$30851894}  at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:662)
[10:28:57.631] {http--5007-1$30851894}  at java.lang.Thread.run(Thread.java:619)

解决方案 »

  1.   

    NullPointException 自己检查代码去。
      

  2.   

    '/ifac/frame/myzdx.html'此路径下有误
      

  3.   

    resin具体版本多少? 日志没有把问题打出来,可能先要分析下AbstractHttpResponse.java,看看是什么导致抛出npe
      

  4.   

    resin3.1.10pro版本。 protected boolean writeHeaders(WriteStream os, int length)
        throws IOException
      {
        if (this._isHeaderWritten) {
          return this._isChunked;
        }    boolean canCache = startCaching(true);
        this._isHeaderWritten = true;    if (this._request.getMethod().equals("HEAD")) {
          this._originalResponseStream.setHead();
        }    WebApp webApp = this._request.getWebApp();    int majorCode = this._statusCode / 100;    if ((webApp != null) && 
          (majorCode == 5)) {
          webApp.addStatus500();
        }    HttpSession session = this._originalRequest.getMemorySession();
        if ((session instanceof SessionImpl)) {
          ((SessionImpl)session).saveBeforeHeaders();
        }
        if ((this._sessionId != null) && (!this._hasSessionCookie)) {
          this._hasSessionCookie = true;      SessionManager manager = webApp.getSessionManager();//报错,webApp为null