costin      01/03/22 18:14:17

  Modified:    src/admin/WEB-INF admin.tld
               src/admin/WEB-INF/classes/tadm TomcatAdmin.java
                        TomcatAdminTEI.java TomcatIterateTEI.java
               src/admin/contextAdmin ctxDetail.jsp
  Added:       src/admin/WEB-INF/classes/tadm ContextAdmin.java
                        ModuleAdmin.java ModuleAdminTEI.java
               src/admin/contextAdmin sessionExpire.jsp sessionState.jsp
  Log:
  Added 2 pages and a tag to display informations about sessions.
  
  This was done to debug one of the bugs and to better monitor
  what was happening. You can see all active sessions for a context
  and invalidate individual sessions.
  ( of course, this is just better than nothing, a bit of HTML-formating
  and more details would be even better )
  
  Revision  Changes    Path
  1.9       +58 -0     jakarta-tomcat/src/admin/WEB-INF/admin.tld
  
  Index: admin.tld
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/admin/WEB-INF/admin.tld,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- admin.tld 2001/01/29 06:46:17     1.8
  +++ admin.tld 2001/03/23 02:14:16     1.9
  @@ -55,6 +55,64 @@
       </attribute>
     </tag>
   
  +  <tag>
  +    <name>contextAdmin</name>
  +    <tagclass>tadm.ContextAdmin</tagclass>
  +    <info>
  +       Will set the "ctx" variable based on the ctxPathParam parameter
  +       and perform context actions. ( will replace adm:admin which 
  +       also declares the vars - so can't have multiple instances ).
  +    </info>
  +    <attribute>
  +      <name>action</name>
  +      <required>false</required>
  +    </attribute>
  +    <attribute>
  +      <name>ctxPathParam</name>
  +      <required>false</required>
  +    </attribute>
  +    <attribute>
  +      <name>docBaseParam</name>
  +      <required>false</required>
  +    </attribute>
  +    <attribute>
  +      <name>docBase</name>
  +      <required>false</required>
  +    </attribute>
  +    <attribute>
  +      <name>ctxPath</name>
  +      <required>false</required>
  +      <rtexprvalue>true</rtexprvalue>
  +    </attribute>
  +    <attribute>
  +      <name>ctxHost</name>
  +      <required>false</required>
  +      <rtexprvalue>true</rtexprvalue>
  +    </attribute>
  +    <attribute>
  +      <name>value</name>
  +      <required>false</required>
  +    </attribute>
  +  </tag>
  +
  +  <tag>
  +    <name>moduleAdmin</name>
  +    <tagclass>tadm.ModuleAdmin</tagclass>
  +    <teiclass>tadm.ModuleAdminTEI</teiclass>
  +    <info>
  +      Will set the "module" variable and perform module actions.
  +    </info>
  +    <attribute>
  +      <name>type</name>
  +      <required>true</required>
  +    </attribute>
  +    <attribute>
  +      <name>var</name>
  +      <required>true</required>
  +    </attribute>
  +  </tag>
  +
  +
     <!-- this is a "generic" tag, should be moved in a separate tld -->  
     <tag>
       <name>iterate</name>
  
  
  
  1.12      +16 -15    jakarta-tomcat/src/admin/WEB-INF/classes/tadm/TomcatAdmin.java
  
  Index: TomcatAdmin.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/admin/WEB-INF/classes/tadm/TomcatAdmin.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- TomcatAdmin.java  2001/03/02 05:26:01     1.11
  +++ TomcatAdmin.java  2001/03/23 02:14:16     1.12
  @@ -9,7 +9,7 @@
   import javax.servlet.jsp.tagext.*;
   import org.apache.tomcat.core.*;
   import org.apache.tomcat.util.log.*;
  -import org.apache.tomcat.util.qlog.*;
  +//import org.apache.tomcat.util.qlog.*;
   
   /**
    * A context administration class. Contexts can be
  @@ -54,6 +54,7 @@
                    // XXX virtual host
                    if( ctxPath.equals( ctx.getPath())) {
                        pageContext.setAttribute("ctx", ctx);
  +                     System.out.println("Found " + ctx );
                        break;
                    }
                }
  @@ -133,21 +134,21 @@
       private void setLogFile( Context ctx, String dest )
        throws TomcatException
       {
  -     try {
  -         QueueLogger logger=new QueueLogger();
  -         System.out.println("Setting logger " + dest );
  -         logger.setPath( dest );
  -         logger.open();
  -         LogManager logManager=(LogManager)ctx.getContextManager().
  -             getNote("tc.LogManager");
  +//   try {
  +//       QueueLogger logger=new QueueLogger();
  +//       System.out.println("Setting logger " + dest );
  +//       logger.setPath( dest );
  +//       logger.open();
  +//       LogManager logManager=(LogManager)ctx.getContextManager().
  +//           getNote("tc.LogManager");
            
  -         logManager.addChannel("temp.log", logger );
  -         Log log=Log.getLog( "temp.log", ctx );
  -         ctx.setLog( log );
  -         ctx.setServletLog( log );
  -     } catch( Exception ex ) {
  -         ex.printStackTrace();
  -     }
  +//       logManager.addChannel("temp.log", logger );
  +//       Log log=Log.getLog( "temp.log", ctx );
  +//       ctx.setLog( log );
  +//       ctx.setServletLog( log );
  +//   } catch( Exception ex ) {
  +//       ex.printStackTrace();
  +//   }
       }
   
       private void addContext( ContextManager cm, String host, String path,
  
  
  
  1.5       +3 -0      
jakarta-tomcat/src/admin/WEB-INF/classes/tadm/TomcatAdminTEI.java
  
  Index: TomcatAdminTEI.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/admin/WEB-INF/classes/tadm/TomcatAdminTEI.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TomcatAdminTEI.java       2000/12/31 15:39:15     1.4
  +++ TomcatAdminTEI.java       2001/03/23 02:14:16     1.5
  @@ -23,6 +23,9 @@
            new VariableInfo("cm", "org.apache.tomcat.core.ContextManager",
                             true,  VariableInfo.AT_BEGIN),
            new VariableInfo("ctx", "org.apache.tomcat.core.Context",
  +                          true,  VariableInfo.AT_BEGIN),
  +         new VariableInfo("module",
  +                          "org.apache.tomcat.core.BaseInterceptor",
                             true,  VariableInfo.AT_BEGIN)
        });
   
  
  
  
  1.5       +0 -3      
jakarta-tomcat/src/admin/WEB-INF/classes/tadm/TomcatIterateTEI.java
  
  Index: TomcatIterateTEI.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/admin/WEB-INF/classes/tadm/TomcatIterateTEI.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TomcatIterateTEI.java     2000/12/31 15:39:15     1.4
  +++ TomcatIterateTEI.java     2001/03/23 02:14:16     1.5
  @@ -24,9 +24,6 @@
                             data.getAttributeString( "type" ),
                             true,
                             VariableInfo.NESTED ), 
  -                          
  -         new VariableInfo("ctx2", "org.apache.tomcat.core.Context",
  -                          true,  VariableInfo.NESTED)
        });
   
       }
  
  
  
  1.1                  jakarta-tomcat/src/admin/WEB-INF/classes/tadm/ContextAdmin.java
  
  Index: ContextAdmin.java
  ===================================================================
  package tadm;
  import java.util.Vector;
  import java.util.Enumeration;
  import java.io.*;
  import java.net.URL;
  import javax.servlet.http.*;
  
  import javax.servlet.jsp.*;
  import javax.servlet.jsp.tagext.*;
  import org.apache.tomcat.core.*;
  import org.apache.tomcat.util.log.*;
  
  /**
   * A context administration class. Contexts can be
   * viewed, added, and removed from the context manager.
   *
   */
  public class ContextAdmin extends TagSupport {
      private ContextManager cm;
      String ctxPath;
      String docBase;
      String ctxPathParam;
      String docBaseParam;
      String action;
      String host;
      String value;
      //    PageContext pageContext;
      
      public ContextAdmin() {}
  
      public int doStartTag() throws JspException {
        try {
            HttpServletRequest req=(HttpServletRequest)pageContext.
                getRequest();
  
            cm=(ContextManager)pageContext.getAttribute("cm");
            if( cm==null )
                throw new JspException( "Can't find context manager" );
  
            Context ctx=null;
            if( ctxPath==null && ctxPathParam!=null ) {
                ctxPath=req.getParameter( ctxPathParam );
            }
  
            if( docBase==null &&  docBaseParam!=null) {
                docBase=req.getParameter( docBaseParam );
            }
            
            if( ctxPath != null ) {
                if( debug>0 ) log("Finding " + ctxPath );
                Enumeration en=cm.getContexts();
                while( en.hasMoreElements() ) {
                    ctx=(Context)en.nextElement();
                    // XXX virtual host
                    if( ctxPath.equals( ctx.getPath())) {
                        pageContext.setAttribute("ctx", ctx);
                        break;
                    }
                }
            }
            if( ctx==null ) {
                throw new JspException("Can't find context " + ctxPath );
            }
            if("removeContext".equals( action ) )
                removeContext( cm , ctx);
            if("setLogger".equals( action ) )
                setLogFile(  ctx, value );
            if("addContext".equals( action ) )
                addContext( cm, host, ctxPath, docBase );
        } catch (Exception ex ) {
            ex.printStackTrace();
        }
        return EVAL_BODY_INCLUDE;
      }
  
      public int doEndTag() throws JspException {
        return EVAL_PAGE;
      }
      
      public void setParent( Tag parent ) {
        super.setParent( parent);
      }
  
      // -------------------- Properties --------------------
      
      public void setCtxPath( String ctx ) {
        ctxPath=ctx;
      }
  
      public void setCtxPathParam( String ctx ) {
        ctxPathParam=ctx;
      }
      
      public void setDocBaseParam( String ctx ) {
        docBaseParam=ctx;
      }
  
      public void setCtxHost( String host ) {
        this.host=host;
      }
  
      public void setAction( String action ) {
        this.action=action;
      }
  
      public void setDocBase( String docBase ) {
        this.docBase=docBase;
      }
  
      public void setValue( String s ) {
        this.value=s;
      }
  
      
      private void removeContext( ContextManager cm, Context ctx)
        throws TomcatException
      {
        if( debug > 0 ) log("Removing " + ctx );
        cm.removeContext( ctx );
      }
  
      private void setLogFile( Context ctx, String dest )
        throws TomcatException
      {
  //    try {
  //        QueueLogger logger=new QueueLogger();
  //        if( debug > 0 ) log ("Setting logger " + dest );
  //        logger.setPath( dest );
  //        logger.open();
  //        LogManager logManager=(LogManager)ctx.getContextManager().
  //            getNote("tc.LogManager");
            
  //        logManager.addChannel("temp.log", logger );
  //        Log log=Log.getLog( "temp.log", ctx );
  //        ctx.setLog( log );
  //        ctx.setServletLog( log );
  //    } catch( Exception ex ) {
  //        ex.printStackTrace();
  //    }
      }
  
      private void addContext( ContextManager cm, String host, String path,
                             String docBase)
        throws TomcatException
      {
        if( ! docBase.startsWith("/") ) {
            docBase=cm.getHome() + "/" + docBase;
        }
        if( debug > 0 )
            log("Adding " + path + " " + docBase);
        Context context = new Context();
        context.setContextManager(cm);
        context.setPath(path);
        context.setDocBase(docBase);
  
        cm.addContext(context);
        context.init();
      }
  
      // --------------------
      private static int debug=0;
      
      private void log(String s ) {
        System.out.println(s );
      }
  }
  
  
  
  1.1                  jakarta-tomcat/src/admin/WEB-INF/classes/tadm/ModuleAdmin.java
  
  Index: ModuleAdmin.java
  ===================================================================
  package tadm;
  import java.util.Vector;
  import java.util.Enumeration;
  import java.io.*;
  import java.net.URL;
  import javax.servlet.http.*;
  
  import javax.servlet.jsp.*;
  import javax.servlet.jsp.tagext.*;
  import org.apache.tomcat.core.*;
  import org.apache.tomcat.util.log.*;
  
  /**
   * A context administration class. Contexts can be
   * viewed, added, and removed from the context manager.
   *
   */
  public class ModuleAdmin extends TagSupport {
      private ContextManager cm;
  
      String var;
      String moduleName;
      
      public ModuleAdmin() {}
  
      /** Will set the "module" attribute, with the instance of the
       *  named interceptor. If "ctx" attribute is set, look in that
       *  context
       */
      public int doStartTag() throws JspException {
        try {
            cm=(ContextManager)pageContext.getAttribute("cm");
            if( cm==null )
                throw new JspException( "Can't find context manager" );
  
            Context ctx=(Context)pageContext.getAttribute("ctx");
  
            Container ct=(ctx==null)? cm.getContainer():ctx.getContainer();
            BaseInterceptor bi[]=ct.getInterceptors();
            BaseInterceptor found=null;
            for( int i=0; i<bi.length; i++ ) {
                String cn=bi[i].getClass().getName();
                if( cn.equals( moduleName )) {
                    found=bi[i];
                    pageContext.setAttribute( var,bi[i],
                                              PageContext.PAGE_SCOPE );
                    break;
                }
            }
            if( found==null )
                throw new JspException("Can't find module " + moduleName +
                                       " in " + ctx );
        } catch (Exception ex ) {
            ex.printStackTrace();
        }
        return EVAL_BODY_INCLUDE;
      }
  
      // -------------------- Properties --------------------
      
      public void setVar(String m) {
        var=m;
      }
  
      public void setType( String m ) {
        moduleName=m;
      }
  
      // --------------------
      private static int debug=0;
      
      private void log(String s ) {
        System.out.println(s );
      }
  }
  
  
  
  1.1                  
jakarta-tomcat/src/admin/WEB-INF/classes/tadm/ModuleAdminTEI.java
  
  Index: ModuleAdminTEI.java
  ===================================================================
  package tadm;
  import java.util.Vector;
  import java.util.Enumeration;
  import java.io.File;
  import java.net.URL;
  import javax.servlet.http.*;
  
  import javax.servlet.jsp.*;
  import javax.servlet.jsp.tagext.*;
  import org.apache.tomcat.core.Request;
  import org.apache.tomcat.core.Context;
  import org.apache.tomcat.core.ContextManager;
  
  
  import javax.servlet.jsp.tagext.TagData;
  import javax.servlet.jsp.tagext.TagExtraInfo;
  import javax.servlet.jsp.tagext.VariableInfo;
  
  public class ModuleAdminTEI extends TagExtraInfo {
  
      public VariableInfo[] getVariableInfo(TagData data) {
        return (new VariableInfo[] {
            new VariableInfo(data.getAttributeString( "var" ),
                             data.getAttributeString( "type" ),
                             true,
                             VariableInfo.AT_BEGIN ), 
        });
  
      }
  
  
  }
  
  
  
  1.3       +2 -1      jakarta-tomcat/src/admin/contextAdmin/ctxDetail.jsp
  
  Index: ctxDetail.jsp
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/admin/contextAdmin/ctxDetail.jsp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ctxDetail.jsp     2000/12/27 21:41:31     1.2
  +++ ctxDetail.jsp     2001/03/23 02:14:17     1.3
  @@ -9,7 +9,7 @@
   
   <body bgcolor="white">
   
  -<adm:admin ctxPath='<%= request.getParameter("ctx") %>' />
  +<adm:admin ctxPathParam="ctx" />
   
   <%
     if( ctx==null ) {
  @@ -17,6 +17,7 @@
     <h1>Error, no context for <%= request.getParameter( "ctx" ) %> </h1>
   <% } else { %>
   
  +  <a href="sessionState.jsp?ctx=<%= request.getParameter( "ctx" ) %>">Session 
info</a>
     <table border="0" cellpad="2" >
     <tr bgcolor="#e1e1e1">
   
  
  
  
  1.1                  jakarta-tomcat/src/admin/contextAdmin/sessionExpire.jsp
  
  Index: sessionExpire.jsp
  ===================================================================
  <html>
  <%@ taglib uri="http://jakarta.apache.org/taglibs/tomcat_admin-1.0" 
             prefix="adm" %>
  <head>
      <title>Session info</title>
  </head>
  
  <body bgcolor="white">
  
  <adm:admin ctxPathParam="ctx"/>
  <adm:moduleAdmin var="store" 
                 type="org.apache.tomcat.modules.session.SimpleSessionStore" />
  
    <h3>Invalidate <%= request.getParameter("id" ) %></h3>
  
  <% org.apache.tomcat.core.ServerSession s=store.findSession( ctx, 
               request.getParameter("id" ));
     s.setState( org.apache.tomcat.core.ServerSession.STATE_EXPIRED );
  %>
  
  </body>
  </html>
  
  
  
  1.1                  jakarta-tomcat/src/admin/contextAdmin/sessionState.jsp
  
  Index: sessionState.jsp
  ===================================================================
  <html>
  <%@ taglib uri="http://jakarta.apache.org/taglibs/tomcat_admin-1.0" 
             prefix="adm" %>
  <head>
      <title>Session info</title>
  </head>
  
  <body bgcolor="white">
  
  <adm:admin ctxPathParam="ctx"/>
  <adm:moduleAdmin var="store" 
                 type="org.apache.tomcat.modules.session.SimpleSessionStore" />
  
    <h3>Session store info</h3>
  
    <ul>
      <li>Context: <%= ctx %>
      <li>Default timeout: <%= ctx.getSessionTimeOut() %>
      <li>Active sessions: <%= store.getSessionCount(ctx) %>
      <li>Recycled sessions: <%= store.getRecycledCount(ctx) %>
    <ul>
  
      <table border>
        <tr>
          <th>Id</th>
          <th>Attrs</th>
          <th>St</th>
          <th>Creation</th>
          <th>Access</th>
          <th>Exp</th>
          <th>New</th>
        </tr>
       <adm:iterate name="sS" 
                    enumeration="<%= store.getSessions(ctx) %>" 
                    type="org.apache.tomcat.core.ServerSession" >
        <tr>
          <td><%= sS.getId().toString() %></td>
          <td><%= sS.getAttributeCount() %></td>
          <td><a href="sessionExpire.jsp?ctx=<%= request.getParameter("ctx") %>&id=<%= 
sS.getId().toString() %>" >
                <%= sS.getState() %></td>
              </a>
          <td><%= sS.getTimeStamp().getCreationTime() %></td>
          <td><%= sS.getTimeStamp().getLastAccessedTime() %></td>
          <td><%= sS.getTimeStamp().getMaxInactiveInterval() %></td>
          <td><%= sS.getTimeStamp().isNew() %></td>
        </tr>
       </adm:iterate>
      </table>
  
  </body>
  </html>
  
  
  

Reply via email to