You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2002/11/03 01:04:05 UTC

DO NOT REPLY [Bug 14197] New: - Duplicate jspDestroy() when JSP page implements jspDestroy() and tag handler pooling enabled

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=14197>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=14197

Duplicate jspDestroy() when JSP page implements jspDestroy() and tag handler pooling enabled

           Summary: Duplicate jspDestroy() when JSP page implements
                    jspDestroy() and tag handler pooling enabled
           Product: Tomcat 4
           Version: 4.1.12
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: Major
          Priority: Other
         Component: Jasper 2
        AssignedTo: tomcat-dev@jakarta.apache.org
        ReportedBy: killswtch@hotmail.com


Found this bug while attempting to deploy the "bookstore3 example" of the Java 
Web Services Tutorial (JWST).  Jasper seems to create duplicate jspDestroy() 
methods when a JSP page implements jspDestroy(), and uses custom tag 
libraries, and has Jasper's tag handler pooling enabled.

Immediate work-arounds are to turn off tag handler pooling or for a JSP author 
to not try to override jspDestroy().  However, since the ability to provide 
custom implementation of jspInit() and jspDestroy() is part of the JSP 1.2 
spec, this should be fixed.

The JWST example is as follows:

***************************************************************************
File:  tutorial/examples/web/bookstore3/web/bookstore.jsp

<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean-1.0.2" 
           prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic-1.0.2" 
           prefix="logic" %>
<%@ include file="initdestroy.jsp" %>
<%@ page import="java.util.*" %>
<%
   ResourceBundle messages = (ResourceBundle)session.getAttribute("messages");
   if (messages == null) {
       Locale locale=null;
       String language = request.getParameter("language");

       if (language != null) { 
           if (language.equals("English")) { 
               locale=new Locale("en", ""); 
           } else { 
               locale=new Locale("es", ""); 
           }
       } else {
         locale = new Locale("en", "");
       }
       messages = ResourceBundle.getBundle("BookStoreMessages", locale); 
       session.setAttribute("messages", messages);
  }
%>
<p><b><%=messages.getString("What")%></b></p>
<jsp:useBean id="bookDB" class="database.BookDB" scope="page" >
  <jsp:setProperty name="bookDB" property="database" value="<%=bookDBAO%>" />
</jsp:useBean>
<jsp:setProperty name="bookDB" property="bookId" value="203" />
<bean:define id="book" name="bookDB" property="bookDetails" 
             type="database.BookDetails"/>
<blockquote><p><em><a href="<%=request.getContextPath()%>/bookdetails?
bookId=203">
<jsp:getProperty name="book" property="title"/></a></em>, 
<%=messages.getString("Talk")%></blockquote>
<p><b><a href="<%=request.getContextPath()%>/catalog"><%=messages.getString
("Start")%></a></b>

****************************************************************************
File: tutorial/examples/web/bookstore3/web/initdestroy.jsp

<%@ page import="database.*" %>
<%@ page errorPage="errorpage.jsp" %>
<%!
  private BookDBAO bookDBAO;

  public void jspInit() {	

      bookDBAO = (BookDBAO)getServletContext().getAttribute("bookDB");
      if (bookDBAO == null) {
          System.out.println("Couldn't get database.");
      }
  }

  public void jspDestroy() {      
      bookDBAO = null;
  }
%>
******************************************************************************

Jasper generated file: 
<CATALINA_HOME>/work/Standalone/localhost/bookstore3/bookstore_jsp.java

package org.apache.jsp;

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

public class bookstore_jsp extends HttpJspBase {

    private BookDBAO bookDBAO;

    public void jspInit() {	

	bookDBAO = (BookDBAO)getServletContext().getAttribute("bookDB");
	if (bookDBAO == null) {
	    System.out.println("Couldn't get database.");
	}
    }

    public void jspDestroy() {      
	bookDBAO = null;
    }

    private static java.util.Vector _jspx_includes;

    static {
	_jspx_includes = new java.util.Vector(1);
	_jspx_includes.add("/initdestroy.jsp");
    }

    private org.apache.jasper.runtime.TagHandlerPool 
_jspx_tagPool_bean_define_type_property_name_id;

    public bookstore_jsp() {
	_jspx_tagPool_bean_define_type_property_name_id = new 
org.apache.jasper.runtime.TagHandlerPool();
    }

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

    public void jspDestroy() {
	_jspx_tagPool_bean_define_type_property_name_id.release();
    }

    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=ISO-8859-1");
	    pageContext = _jspxFactory.getPageContext(this, request, response,
						      "errorpage.jsp", true, 
8192, true);
	    application = pageContext.getServletContext();
	    config = pageContext.getServletConfig();
	    session = pageContext.getSession();
	    out = pageContext.getOut();
	    _jspx_out = out;

	    out.write("\n\n");
	    out.write("\n");
	    out.write("\n");
	    out.write("\n\n");
	    out.write("\n");
	    out.write("\n");
	    out.write("\n");
	    out.write("\n");
	    out.write("\n");

	    ResourceBundle messages = (ResourceBundle)session.getAttribute
("messages");
	    if (messages == null) {
		Locale locale=null;
		String language = request.getParameter("language");

		if (language != null) { 
		    if (language.equals("English")) { 
			locale=new Locale("en", ""); 
		    } else { 
			locale=new Locale("es", ""); 
		    }
		} else 
		    locale=new Locale("en", "");

		messages = ResourceBundle.getBundle("BookStoreMessages", 
locale); 
		session.setAttribute("messages", messages);
	    }

	    out.write("\n\n");
	    out.write("<p>");
	    out.write("<b>");
	    out.print(messages.getString("What"));
	    out.write("</b>");
	    out.write("</p\n\n");
	    database.BookDB bookDB = null;
	    synchronized (pageContext) {
		bookDB = (database.BookDB) pageContext.getAttribute("bookDB", 
PageContext.PAGE_SCOPE);
		if (bookDB == null){
		    try {
			bookDB = (database.BookDB) java.beans.Beans.instantiate
(this.getClass().getClassLoader(), "database.BookDB");
		    } catch (ClassNotFoundException exc) {
			throw new InstantiationException(exc.getMessage());
		    } catch (Exception exc) {
			throw new ServletException("Cannot create bean of 
class " + "database.BookDB", exc);
		    }
		    pageContext.setAttribute("bookDB", bookDB, 
PageContext.PAGE_SCOPE);
		    out.write("\n  ");
		    JspRuntimeLibrary.handleSetProperty
(pageContext.findAttribute("bookDB"), "database",
							bookDBAO);
		    out.write("\n");
		}
	    }
	    out.write("\n\n");
	    JspRuntimeLibrary.introspecthelper(pageContext.findAttribute
("bookDB"), "bookId",
					       "203",null, null, false);
	    out.write("\n\n");
	    /* ----  bean:define ---- */
	    database.BookDetails book = null;
	    org.apache.struts.taglib.bean.DefineTag _jspx_th_bean_define_0 = 
(org.apache.struts.taglib.bean.DefineTag) 
_jspx_tagPool_bean_define_type_property_name_id.get
(org.apache.struts.taglib.bean.DefineTag.class);
	    _jspx_th_bean_define_0.setPageContext(pageContext);
	    _jspx_th_bean_define_0.setParent(null);
	    _jspx_th_bean_define_0.setId("book");
	    _jspx_th_bean_define_0.setName("bookDB");
	    _jspx_th_bean_define_0.setProperty("bookDetails");
	    _jspx_th_bean_define_0.setType("database.BookDetails");
	    int _jspx_eval_bean_define_0 = _jspx_th_bean_define_0.doStartTag();
	    book = (database.BookDetails) pageContext.findAttribute("book");
	    if (_jspx_th_bean_define_0.doEndTag() == 
javax.servlet.jsp.tagext.Tag.SKIP_PAGE)
		return;
	    book = (database.BookDetails) pageContext.findAttribute("book");
	    _jspx_tagPool_bean_define_type_property_name_id.reuse
(_jspx_th_bean_define_0);
	    out.write("\n \n");
	    out.write("<blockquote>");
	    out.write("<p>");
	    out.write("<em>");
	    out.write("<a href=\"");
	    out.print(request.getContextPath());
	    out.write("/bookdetails?bookId=203\">\n");
	    out.print(JspRuntimeLibrary.toString
(JspRuntimeLibrary.handleGetProperty(pageContext.findAttribute
("book"), "title")));
	    out.write("</a>");
	    out.write("</em>, \n");
	    out.print(messages.getString("Talk"));
	    out.write("</blockquote>\n");
	    out.write("<p>");
	    out.write("<b>");
	    out.write("<a href=\"");
	    out.print(request.getContextPath());
	    out.write("/catalog\">");
	    out.print(messages.getString("Start"));
	    out.write("</a>");
	    out.write("</b>\n\n\n");
	} 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);
	}
    }
}

**************************************************************************

File: <CATALINA_HOME>/logs/bookstore3.log

2002-11-02 17:36:13 StandardContext[/bookstore3]: Starting
2002-11-02 17:36:13 StandardContext[/bookstore3]: Processing start(), current 
available=false
2002-11-02 17:36:13 StandardContext[/bookstore3]: Configuring default Resources
2002-11-02 17:36:13 StandardContext[/bookstore3]: Configuring non-privileged 
default Loader
2002-11-02 17:36:13 StandardContext[/bookstore3]: Configuring default Manager
2002-11-02 17:36:13 StandardContext[/bookstore3]: Processing standard 
container startup
2002-11-02 17:36:13 WebappLoader[/bookstore3]: Deploying class repositories to 
work directory D:\jakarta-tomcat-4.1.14\work\Standalone\localhost\bookstore3
2002-11-02 17:36:14 WebappLoader[/bookstore3]: Deploy class files /WEB-
INF/classes to D:\jakarta-tomcat-4.1.14\work\Standalone\localhost\bookstore3
\WEB-INF\classes
2002-11-02 17:36:14 WebappLoader[/bookstore3]: Deploy JAR /WEB-
INF/lib/struts.jar to D:\jakarta-tomcat-4.1.14
\work\Standalone\localhost\bookstore3\WEB-INF\lib\struts.jar
2002-11-02 17:36:14 WebappLoader[/bookstore3]: Deploy JAR /WEB-
INF/lib/taglib.jar to D:\jakarta-tomcat-4.1.14
\work\Standalone\localhost\bookstore3\WEB-INF\lib\taglib.jar
2002-11-02 17:36:14 ContextConfig[/bookstore3]: ContextConfig: Processing START
2002-11-02 17:36:14 StandardContext[/bookstore3]: Setting deployment 
descriptor public ID to '-//Sun Microsystems, Inc.//DTD Web Application 
2.3//EN'
2002-11-02 17:36:14 StandardContext[/bookstore3]: Setting deployment 
descriptor public ID to '-//Sun Microsystems, Inc.//DTD Web Application 
2.3//EN'
2002-11-02 17:36:14 ContextConfig[/bookstore3]:  Accumulating TLD resource 
paths
2002-11-02 17:36:14 ContextConfig[/bookstore3]:   Scanning <taglib> elements 
in web.xml
2002-11-02 17:36:14 ContextConfig[/bookstore3]:    Adding path '/WEB-
INF/lib/struts.jar' for URI 'http://jakarta.apache.org/struts/tags-logic-1.0.2'
2002-11-02 17:36:14 ContextConfig[/bookstore3]:    Adding path '/WEB-
INF/lib/struts.jar' for URI 'http://jakarta.apache.org/struts/tags-bean-1.0.2'
2002-11-02 17:36:14 ContextConfig[/bookstore3]:    Adding path '/WEB-
INF/tutorial-template.tld' for URI '/tutorial-template'
2002-11-02 17:36:14 ContextConfig[/bookstore3]:   Scanning TLDs in /WEB-INF 
subdirectory
2002-11-02 17:36:14 ContextConfig[/bookstore3]:    Adding path '/WEB-
INF/tutorial-template.tld'
2002-11-02 17:36:14 ContextConfig[/bookstore3]:   Scanning JARs in /WEB-
INF/lib subdirectory
2002-11-02 17:36:14 ContextConfig[/bookstore3]:    Adding path '/WEB-
INF/lib/struts.jar'
2002-11-02 17:36:14 ContextConfig[/bookstore3]:    Adding path '/WEB-
INF/lib/taglib.jar'
2002-11-02 17:36:14 ContextConfig[/bookstore3]:  Scanning TLD at resource 
path '/WEB-INF/tutorial-template.tld'
2002-11-02 17:36:14 ContextConfig[/bookstore3]:  Scanning JAR at resource 
path '/WEB-INF/lib/taglib.jar'
2002-11-02 17:36:14 ContextConfig[/bookstore3]:  Scanning JAR at resource 
path '/WEB-INF/lib/struts.jar'
2002-11-02 17:36:14 ContextConfig[/bookstore3]:   Processing TLD at 'META-
INF/tlds/struts-bean.tld'
2002-11-02 17:36:14 ContextConfig[/bookstore3]:   Processing TLD at 'META-
INF/tlds/struts-form.tld'
2002-11-02 17:36:14 ContextConfig[/bookstore3]:   Processing TLD at 'META-
INF/tlds/struts-html.tld'
2002-11-02 17:36:14 ContextConfig[/bookstore3]:   Processing TLD at 'META-
INF/tlds/struts-template.tld'
2002-11-02 17:36:14 ContextConfig[/bookstore3]:   Processing TLD at 'META-
INF/tlds/struts-logic.tld'
2002-11-02 17:36:14 ContextConfig[/bookstore3]:   Processing TLD at 'META-
INF/taglib.tld'
2002-11-02 17:36:14 ContextConfig[/bookstore3]: Added certificates -> request 
attribute Valve
2002-11-02 17:36:14 ContextConfig[/bookstore3]: Pipline Configuration:
2002-11-02 17:36:14 ContextConfig[/bookstore3]:   
org.apache.catalina.valves.CertificatesValve/1.0
2002-11-02 17:36:14 ContextConfig[/bookstore3]:   
org.apache.catalina.core.StandardContextValve/1.0
2002-11-02 17:36:14 ContextConfig[/bookstore3]: ======================
2002-11-02 17:36:14 NamingContextListener[/Standalone/localhost/bookstore3]: 
Creating JNDI naming context
2002-11-02 17:36:14 NamingContextListener[/Standalone/localhost/bookstore3]:   
Resource parameters for jdbc/bookDB = null
2002-11-02 17:36:14 NamingContextListener[/Standalone/localhost/bookstore3]:   
Adding resource link jdbc/bookDB
2002-11-02 17:36:14 NamingContextListener[/Standalone/localhost/bookstore3]:   
Resource parameters for UserTransaction = null
2002-11-02 17:36:14 StandardManager[/bookstore3]: Seeding random number 
generator class java.security.SecureRandom
2002-11-02 17:36:14 StandardManager[/bookstore3]: Seeding of random number 
generator has been completed
2002-11-02 17:36:14 StandardContext[/bookstore3]: Posting standard context 
attributes
2002-11-02 17:36:14 StandardContext[/bookstore3]: Configuring application 
event listeners
2002-11-02 17:36:14 StandardContext[/bookstore3]:  Configuring event listener 
class 'listeners.ContextListener'
2002-11-02 17:36:14 StandardContext[/bookstore3]: Sending application start 
events
2002-11-02 17:36:14 StandardContext[/bookstore3]: Starting filters
2002-11-02 17:36:14 StandardWrapper[/bookstore3:default]: Loading container 
servlet default
2002-11-02 17:36:14 StandardWrapper[/bookstore3:invoker]: Loading container 
servlet invoker
2002-11-02 17:36:14 StandardContext[/bookstore3]: Starting completed
2002-11-02 17:36:32 StandardContext[/bookstore3]: Mapping 
contextPath='/bookstore3' with requestURI='/bookstore3/enter' and 
relativeURI='/enter'
2002-11-02 17:36:32 StandardContext[/bookstore3]:   Trying exact match
2002-11-02 17:36:32 StandardContext[/bookstore3]:  Mapped to 
servlet 'Dispatcher' with servlet path '/enter' and path info 'null' and 
update=true
2002-11-02 17:36:32 StandardContext[/bookstore3]: Mapping 
contextPath='/bookstore3' with requestURI='/bookstore3/template.jsp' and 
relativeURI='/template.jsp'
2002-11-02 17:36:32 StandardContext[/bookstore3]:   Trying exact match
2002-11-02 17:36:32 StandardContext[/bookstore3]:   Trying prefix match
2002-11-02 17:36:32 StandardContext[/bookstore3]:   Trying extension match
2002-11-02 17:36:32 StandardContext[/bookstore3]:  Mapped to servlet 'jsp' 
with servlet path '/template.jsp' and path info 'null' and update=true
2002-11-02 17:36:38 StandardContext[/bookstore3]: Mapping 
contextPath='/bookstore3' with requestURI='/bookstore3/banner.jsp' and 
relativeURI='/banner.jsp'
2002-11-02 17:36:38 StandardContext[/bookstore3]:   Trying exact match
2002-11-02 17:36:38 StandardContext[/bookstore3]:   Trying prefix match
2002-11-02 17:36:38 StandardContext[/bookstore3]:   Trying extension match
2002-11-02 17:36:38 StandardContext[/bookstore3]:  Mapped to servlet 'jsp' 
with servlet path '/banner.jsp' and path info 'null' and update=true
2002-11-02 17:36:41 StandardContext[/bookstore3]: Mapping 
contextPath='/bookstore3' with requestURI='/bookstore3/bookstore.jsp' and 
relativeURI='/bookstore.jsp'
2002-11-02 17:36:41 StandardContext[/bookstore3]:   Trying exact match
2002-11-02 17:36:41 StandardContext[/bookstore3]:   Trying prefix match
2002-11-02 17:36:41 StandardContext[/bookstore3]:   Trying extension match
2002-11-02 17:36:41 StandardContext[/bookstore3]:  Mapped to servlet 'jsp' 
with servlet path '/bookstore.jsp' and path info 'null' and update=true
2002-11-02 17:36:41 StandardContext[/bookstore3]: Mapping 
contextPath='/bookstore3' with requestURI='/bookstore3/duke.books.gif' and 
relativeURI='/duke.books.gif'
2002-11-02 17:36:41 StandardContext[/bookstore3]:   Trying exact match
2002-11-02 17:36:41 StandardContext[/bookstore3]:   Trying prefix match
2002-11-02 17:36:41 StandardContext[/bookstore3]:   Trying extension match
2002-11-02 17:36:41 StandardContext[/bookstore3]:   Trying default match
2002-11-02 17:36:41 StandardContext[/bookstore3]:  Mapped to servlet 'default' 
with servlet path '/duke.books.gif' and path info 'null' and update=true
2002-11-02 17:36:43 ApplicationDispatcher[/bookstore3] Servlet.service() for 
servlet jsp threw exception
org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: -1 in the jsp file: null

Generated servlet error:
    [javac] Compiling 1 source file

D:\jakarta-tomcat-4.1.14\work\Standalone\localhost\bookstore3
\bookstore_jsp.java:45: jspDestroy() is already defined in 
org.apache.jsp.bookstore_jsp
  public void jspDestroy() {
              ^
1 error


	at org.apache.jasper.compiler.DefaultErrorHandler.javacError
(DefaultErrorHandler.java:120)
	at org.apache.jasper.compiler.ErrorDispatcher.javacError
(ErrorDispatcher.java:293)
	at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:319)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:330)
	at org.apache.jasper.JspCompilationContext.compile
(JspCompilationContext.java:474)
	at org.apache.jasper.servlet.JspServletWrapper.service
(JspServletWrapper.java:184)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile
(JspServlet.java:295)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationDispatcher.invoke
(ApplicationDispatcher.java:684)
	at org.apache.catalina.core.ApplicationDispatcher.doInclude
(ApplicationDispatcher.java:575)
	at org.apache.catalina.core.ApplicationDispatcher.include
(ApplicationDispatcher.java:498)
	at org.apache.jasper.runtime.JspRuntimeLibrary.include
(JspRuntimeLibrary.java:822)
	at org.apache.jasper.runtime.PageContextImpl.include
(PageContextImpl.java:395)
	at taglib.InsertTag.doEndTag(Unknown Source)
	at org.apache.jsp.template_jsp._jspx_meth_tt_insert_2
(template_jsp.java:601)
	at org.apache.jsp.template_jsp._jspService(template_jsp.java:287)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.jasper.servlet.JspServletWrapper.service
(JspServletWrapper.java:204)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile
(JspServlet.java:295)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationDispatcher.invoke
(ApplicationDispatcher.java:684)
	at org.apache.catalina.core.ApplicationDispatcher.doForward
(ApplicationDispatcher.java:432)
	at org.apache.catalina.core.ApplicationDispatcher.forward
(ApplicationDispatcher.java:356)
	at Dispatcher.doGet(Unknown Source)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:260)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNe
xt(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:191)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNe
xt(StandardPipeline.java:643)
	at org.apache.catalina.valves.CertificatesValve.invoke
(CertificatesValve.java:246)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNe
xt(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke
(StandardContext.java:2415)
	at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:180)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNe
xt(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke
(ErrorDispatcherValve.java:170)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNe
xt(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:172)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNe
xt(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:174)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNe
xt(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service
(CoyoteAdapter.java:223)
	at org.apache.coyote.http11.Http11Processor.process
(Http11Processor.java:413)
	at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnecti
on(Http11Protocol.java:380)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt
(PoolTcpEndpoint.java:537)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
(ThreadPool.java:533)
	at java.lang.Thread.run(Thread.java:536)

2002-11-02 17:36:43 StandardContext[/bookstore3]: Mapping 
contextPath='/bookstore3' with requestURI='/bookstore3/errorpage.jsp' and 
relativeURI='/errorpage.jsp'
2002-11-02 17:36:43 StandardContext[/bookstore3]:   Trying exact match
2002-11-02 17:36:43 StandardContext[/bookstore3]:   Trying prefix match
2002-11-02 17:36:43 StandardContext[/bookstore3]:   Trying extension match
2002-11-02 17:36:43 StandardContext[/bookstore3]:  Mapped to servlet 'jsp' 
with servlet path '/errorpage.jsp' and path info 'null' and update=true

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>