You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by cr...@apache.org on 2001/08/07 22:53:06 UTC

cvs commit: jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/servlet JspServlet.java

craigmcc    01/08/07 13:53:06

  Modified:    jasper/src/share/org/apache/jasper/logging
                        DefaultLogger.java
               jasper/src/share/org/apache/jasper/servlet JspServlet.java
  Log:
  The current implementation of logging in Jasper (using JasperLogger)
  causes a background thread to be created per <jsp-file> declaration,
  instead of once per web app, due to the changes needed to deal with
  sealing violation problems.  Change this to use DefaultLogger instead,
  which uses the request processing thread.  Messages continue to be logged
  to the servlet context log, so there will be no visible behavior
  difference (other than elimination of useless daemon threads).
  
  PR: BugTraq #4488877
  Submitted By:  Tony Ng <to...@sun.com>
  
  Revision  Changes    Path
  1.2       +38 -0     jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/logging/DefaultLogger.java
  
  Index: DefaultLogger.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/logging/DefaultLogger.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultLogger.java	2000/08/12 00:52:11	1.1
  +++ DefaultLogger.java	2001/08/07 20:53:06	1.2
  @@ -58,6 +58,7 @@
   
   import java.io.Writer;
   import java.io.IOException;
  +import javax.servlet.ServletContext;
   
   /**
    * Trivial logger that sends all messages to the default sink.  To
  @@ -74,12 +75,45 @@
   	newline = separator.toCharArray();
       }
       
  +
  +    /**
  +     * Default constructor leaves the debug output going to the
  +     * default sink.
  +     */
  +    public DefaultLogger() {
  +        super();
  +    }
  +
  +
  +    /**
  +     * The servlet context we are associated with.
  +     */
  +    protected ServletContext servletContext;
  +
  +
  +    /**
  +     * Construct a logger that writes output to the servlet context log
  +     * for the current web application.
  +     *
  +     * @param servletContext The servlet context for our web application
  +     */
  +    public DefaultLogger(ServletContext servletContext) {
  +        super();
  +        this.servletContext = servletContext;
  +    }
  +
  +
  +
       /**
        * Prints log message to default sink
        * 
        * @param	message		the message to log.
        */
       protected void realLog(String message) {
  +        if (servletContext != null) {
  +            servletContext.log(message);
  +            return;
  +        }
   	try {
   	    defaultSink.write(message);
   	    defaultSink.write(newline);
  @@ -97,6 +131,10 @@
        * @param	t		the exception that was thrown.
        */
       protected void realLog(String message, Throwable t) {
  +        if (servletContext != null) {
  +            servletContext.log(message, t);
  +            return;
  +        }
   	try {
   	    defaultSink.write(message);
   	    defaultSink.write(newline);
  
  
  
  1.20      +3 -1      jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/servlet/JspServlet.java
  
  Index: JspServlet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/servlet/JspServlet.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- JspServlet.java	2001/07/17 04:21:14	1.19
  +++ JspServlet.java	2001/08/07 20:53:06	1.20
  @@ -96,6 +96,7 @@
   import org.apache.jasper.compiler.TldLocationsCache;
   
   import org.apache.jasper.logging.Logger;
  +import org.apache.jasper.logging.DefaultLogger;
   import org.apache.jasper.logging.JasperLogger;
   
   /**
  @@ -253,7 +254,8 @@
           this.serverInfo = context.getServerInfo();
           
   	// Setup logging 
  -        Constants.jasperLog = new JasperLogger(this.context);
  +        //        Constants.jasperLog = new JasperLogger(this.context);
  +        Constants.jasperLog = new DefaultLogger(this.context);
   	Constants.jasperLog.setName("JASPER_LOG");
   	Constants.jasperLog.setTimestamp("false");
   	Constants.jasperLog.setVerbosityLevel(