costin 00/12/27 13:41:33 Modified: src/admin index.html src/admin/WEB-INF admin.tld src/admin/WEB-INF/classes/tadm TomcatAdmin.java src/admin/contextAdmin contextAdmin.html contextAdmin.jsp contextList.jsp ctxDetail.jsp Added: src/admin/contextAdmin contextAdd.jsp contextRemove.jsp moduleList.jsp Removed: src/admin/WEB-INF/classes ContextAdmin.java Log: - update /admin app - moved the code from ContextAdmin ( used as bean in contextAdmin.jsp ) to TomcatAdmin ( tag library ) - added small jsp files to add/remove ( using tag libraries instead of bean) - tested add/remove/add back - the code still needs work ( support for virtual hosts, support for adding/removing modules at runtime, support for restarting, etc), but at least we have a start. Volunteers welcome :-) Revision Changes Path 1.2 +2 -0 jakarta-tomcat/src/admin/index.html Index: index.html =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/admin/index.html,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- index.html 2000/02/18 18:33:02 1.1 +++ index.html 2000/12/27 21:41:23 1.2 @@ -27,6 +27,8 @@ <br> <ul> + <li><a href="./contextAdmin/contextList.jsp">Context list</a> + <li><a href="./contextAdmin/moduleList.jsp">Modules</a> <li><a href="./contextAdmin/contextAdmin.html">Context Admin</a> <li><a href="/examples/jsp/snp/snoop.jsp">Snoop</a> </ul> 1.2 +17 -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.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- admin.tld 2000/07/25 20:13:26 1.1 +++ admin.tld 2000/12/27 21:41:26 1.2 @@ -23,11 +23,28 @@ Admin </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> 1.5 +60 -8 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.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- TomcatAdmin.java 2000/10/02 02:04:36 1.4 +++ TomcatAdmin.java 2000/12/27 21:41:29 1.5 @@ -7,9 +7,7 @@ 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 org.apache.tomcat.core.*; import org.apache.tomcat.helper.RequestUtil; /** @@ -19,8 +17,12 @@ */ public class TomcatAdmin extends TagSupport { private ContextManager cm; - String ctxPathParam; String ctxPath; + String docBase; + String ctxPathParam; + String docBaseParam; + String action; + String host; PageContext pageContext; public TomcatAdmin() {} @@ -31,19 +33,30 @@ getRequest(); init(req); pageContext.setAttribute("cm", cm); - if( ctxPathParam != null ) { + Context ctx=null; + if( ctxPath==null && ctxPathParam!=null ) { ctxPath=req.getParameter( ctxPathParam ); } + if( docBase==null && docBaseParam!=null) { + docBase=req.getParameter( docBaseParam ); + } + if( ctxPath != null ) { + System.out.println("Finding " + ctxPath ); Enumeration en=cm.getContexts(); while( en.hasMoreElements() ) { - Context ctx=(Context)en.nextElement(); + ctx=(Context)en.nextElement(); + // XXX virtual host if( ctxPath.equals( ctx.getPath())) { pageContext.setAttribute("ctx", ctx); break; } } } + if("removeContext".equals( action ) ) + removeContext( cm , ctx); + if("addContext".equals( action ) ) + addContext( cm, host, ctxPath, docBase ); } catch (Exception ex ) { ex.printStackTrace(); } @@ -76,12 +89,51 @@ return cm; } + public void setCtxPath( String ctx ) { + ctxPath=ctx; + } + public void setCtxPathParam( String ctx ) { ctxPathParam=ctx; } + + public void setDocBaseParam( String ctx ) { + docBaseParam=ctx; + } - public void setCtxPath( String ctx ) { - ctxPath=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; } + private void removeContext( ContextManager cm, Context ctx) + throws TomcatException + { + System.out.println("Removing " + ctx ); + cm.removeContext( ctx ); + } + + private void addContext( ContextManager cm, String host, String path, + String docBase) + throws TomcatException + { + if( ! docBase.startsWith("/") ) { + docBase=cm.getHome() + "/" + docBase; + } + System.out.println("Adding " + path + " " + docBase); + Context context = new Context(); + context.setContextManager(cm); + context.setPath(path); + context.setDocBase(docBase); + + cm.addContext(context); + context.init(); + } } 1.2 +11 -3 jakarta-tomcat/src/admin/contextAdmin/contextAdmin.html Index: contextAdmin.html =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/admin/contextAdmin/contextAdmin.html,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- contextAdmin.html 2000/02/18 18:33:03 1.1 +++ contextAdmin.html 2000/12/27 21:41:31 1.2 @@ -10,8 +10,6 @@ <body bgcolor="white"> -<form type=POST action=contextAdmin.jsp> - <table border=0 cellspacing=5> <tr> <td><a href="/"> @@ -31,7 +29,10 @@ <table border=0 cellspacing=5> <tr> - <td><td><INPUT TYPE=submit name="submit" value="View All Contexts"> + <td><td> + <FORM type=POST action="contextList.jsp"> + <INPUT TYPE=submit name="submit" value="View All Contexts"> + </FORM> </tr> <tr> <td><td> @@ -39,17 +40,24 @@ <td><td>Document Base: </tr> <tr> + <form type=POST action=contextAdd.jsp> <td><td><INPUT TYPE=submit name="submit" value="Add Context"> <td><td><INPUT TYPE=text name="addContextPath" size=20> <td><td><INPUT TYPE=text name="addContextDocBase" size=20> + <td><td> + </form> </tr> <tr> <td><td> <td><td>Context Name: + <td><td>Virtual host: </tr> <tr> + <form type=POST action=contextRemove.jsp> <td><td><INPUT TYPE=submit name="submit" value="Remove Context"> + <td><td><INPUT TYPE=text name="virtualHost" size=20> <td><td><INPUT TYPE=text name="removeContextName" size=20> + </form> </tr> </table> 1.2 +1 -21 jakarta-tomcat/src/admin/contextAdmin/contextAdmin.jsp Index: contextAdmin.jsp =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/admin/contextAdmin/contextAdmin.jsp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- contextAdmin.jsp 2000/02/18 18:33:03 1.1 +++ contextAdmin.jsp 2000/12/27 21:41:31 1.2 @@ -27,27 +27,7 @@ contextAdmin.init(request); - if (param.equals("View All Contexts")) { - Enumeration enum = contextAdmin.getContextNames(); - while (enum.hasMoreElements()) { - String name = (String)enum.nextElement(); -%> - <ul> - <li><font color="#CC0000"><h2>CONTEXT NAME: <%= name %> - </h2></font> -<% - String[] contextInfoArray = contextAdmin.getContextInfo(name); - for (int i=0; i<contextInfoArray.length; i++) { -%> - <dd><dt> <%= contextInfoArray[i] %> -<% - } -%> - </ul> -<% - } - } - else if (param.equals("Add Context")) { + if (param.equals("Add Context")) { %> <%= contextAdmin.addContext() %> <% 1.2 +12 -28 jakarta-tomcat/src/admin/contextAdmin/contextList.jsp Index: contextList.jsp =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/admin/contextAdmin/contextList.jsp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- contextList.jsp 2000/07/25 20:13:29 1.1 +++ contextList.jsp 2000/12/27 21:41:31 1.2 @@ -31,38 +31,22 @@ <%= ("".equals( context.getPath() )) ? "ROOT" : context.getPath() %> </a></td> <td> <%= context.getDocBase() %> </td> + <td> + <a href="contextRemove.jsp?removeContextName=<%= context.getPath() %>"> + remove + </a> + </td> + <td> + <form method="POST" action="contextRemove.jsp" > + <INPUT TYPE=hidden name="removeContextName" + value="<%= context.getPath() %>"> + <INPUT TYPE=submit name="submit" value="Remove"> + </form> + </td> </tr> </adm:iterate> </table> - <h3>Request Interceptors</h3> - - <table> - <adm:iterate name="riA" array="<%= cm.getRequestInterceptors() %>" - type="org.apache.tomcat.core.RequestInterceptor" > - <tr> - <td><%= riA.getClass().getName() %> - </td> - </tr> - <td> - </tr> - </adm:iterate> - </table> - - <h3>Context Interceptors</h3> - - <table> - <adm:iterate name="riA" array="<%= cm.getContextInterceptors() %>" - type="org.apache.tomcat.core.ContextInterceptor" > - <tr> - <td><%= riA.getClass().getName() %> - </td> - </tr> - <td> - </tr> - </adm:iterate> - </table> - </body> </html> 1.2 +1 -4 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.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ctxDetail.jsp 2000/07/25 20:13:29 1.1 +++ ctxDetail.jsp 2000/12/27 21:41:31 1.2 @@ -52,15 +52,12 @@ <tr> <th>Index files</th> <td> - <adm:iterate name="wfile" enumeration="<%= ctx.getWelcomeFiles() %>" + <adm:iterate name="wfile" array="<%= ctx.getWelcomeFiles() %>" type="java.lang.String" > <%= wfile %> </adm:iterate> </td> </tr> - <tr bgcolor="#e1e1e1"> - <th>Protection Domain</th><td><pre><%= ctx.getProtectionDomain() %></pre></td> - </tr> <tr> <th>Virtual Hosts</th> <td> <%= ( null == ctx.getHost())? "DEFAULT" : ctx.getHost() %> 1.1 jakarta-tomcat/src/admin/contextAdmin/contextAdd.jsp Index: contextAdd.jsp =================================================================== <html> <%@ taglib uri="http://jakarta.apache.org/taglibs/tomcat_admin-1.0" prefix="adm" %> <!-- Copyright (c) 1999 The Apache Software Foundation. All rights reserved. --> <head> <title>Context remove</title> </head> <body bgcolor="white"> <h3>Adding <%= request.getParameter("addContextPath") %> </h3> <adm:admin ctxPathParam="addContextPath" docBaseParam="addContextDocBase" action="addContext" /> </body> </html> 1.1 jakarta-tomcat/src/admin/contextAdmin/contextRemove.jsp Index: contextRemove.jsp =================================================================== <html> <%@ taglib uri="http://jakarta.apache.org/taglibs/tomcat_admin-1.0" prefix="adm" %> <!-- Copyright (c) 1999 The Apache Software Foundation. All rights reserved. --> <head> <title>Context remove</title> </head> <body bgcolor="white"> <h3>Removing <%= request.getParameter("removeContextName") %> </h3> <%= request.getParameter("removeContextName") %> <adm:admin ctxPathParam="removeContextName" action="removeContext" /> </body> </html> 1.1 jakarta-tomcat/src/admin/contextAdmin/moduleList.jsp Index: moduleList.jsp =================================================================== <html> <%@ taglib uri="http://jakarta.apache.org/taglibs/tomcat_admin-1.0" prefix="adm" %> <!-- Copyright (c) 1999 The Apache Software Foundation. All rights reserved. --> <head> <title>Context list</title> </head> <body bgcolor="white"> <adm:admin/> <h3>Interceptors</h3> <table> <adm:iterate name="riA" array="<%= cm.getContainer().getInterceptors() %>" type="org.apache.tomcat.core.BaseInterceptor" > <tr> <td><%= riA.getClass().getName() %></td> </tr> </adm:iterate> </table> </body> </html>