Author: asmuts
Date: Wed Apr 12 09:40:20 2006
New Revision: 393501
URL: http://svn.apache.org/viewcvs?rev=393501&view=rev
Log:
Improved the jcs admin jsp:
added stats details, better navigation, item lookup, and remove confirmation.
Modified:
jakarta/jcs/trunk/src/java/org/apache/jcs/admin/JCSAdmin.jsp
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/admin/JCSAdmin.jsp
URL:
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/admin/JCSAdmin.jsp?rev=393501&r1=393500&r2=393501&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/admin/JCSAdmin.jsp (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/admin/JCSAdmin.jsp Wed Apr 12
09:40:20 2006
@@ -1,193 +1,271 @@
-<%@ page import="java.util.HashMap"%>
-<%@ page import="java.util.List"%>
-<%@ page import="java.util.LinkedList"%>
-<%@ page import="java.util.Iterator"%>
+<%@ page import="java.util.HashMap" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.apache.jcs.admin.*" %>
+<%@ page import="org.apache.jcs.*" %>
-<%@ page import="org.apache.jcs.admin.*"%>
-
-
-<jsp:useBean id="jcsBean" scope="request"
- class="org.apache.jcs.admin.JCSAdminBean" />
+<jsp:useBean id="jcsBean" scope="request"
class="org.apache.jcs.admin.JCSAdminBean" />
<html>
<head>
-<title>JCS Admin Servlet</title>
-</head>
-<body>
+<SCRIPT LANGUAGE="Javascript">
+ function decision( message, url )
+ {
+ if( confirm(message) )
+ {
+ location.href = url;
+ }
+ }
+</SCRIPT>
+<title> JCS Admin Servlet </title>
-<%String CACHE_NAME_PARAM = "cacheName";
- String ACTION_PARAM = "action";
- String CLEAR_ALL_REGIONS_ACTION = "clearAllRegions";
- String CLEAR_REGION_ACTION = "clearRegion";
- String REMOVE_ACTION = "remove";
- String DETAIL_ACTION = "detail";
- String KEY_PARAM = "key";
- String SILENT_PARAM = "silent";
-
- String DEFAULT_TEMPLATE_NAME = "DEFAULT";
- String REGION_DETAIL_TEMPLATE_NAME = "DETAIL";
-
- String templateName = DEFAULT_TEMPLATE_NAME;
-
- HashMap context = new HashMap();
-
- // Get cacheName for actions from request (might be null)
- String cacheName = request.getParameter( CACHE_NAME_PARAM );
-
- // If an action was provided, handle it
- String action = request.getParameter( ACTION_PARAM );
-
- if ( action != null )
- {
- if ( action.equals( CLEAR_ALL_REGIONS_ACTION ) )
- {
- jcsBean.clearAllRegions();
- }
- else if ( action.equals( CLEAR_REGION_ACTION ) )
- {
- if ( cacheName == null )
- {
- // Not Allowed
- }
- else
- {
- jcsBean.clearRegion( cacheName );
- }
- }
- else if ( action.equals( REMOVE_ACTION ) )
- {
- String[] keys = request.getParameterValues( KEY_PARAM );
-
- for ( int i = 0; i < keys.length; i++ )
- {
- jcsBean.removeItem( cacheName, keys[i] );
- }
-
- templateName = REGION_DETAIL_TEMPLATE_NAME;
- }
- else if ( action.equals( DETAIL_ACTION ) )
- {
- templateName = REGION_DETAIL_TEMPLATE_NAME;
- }
- }
-
- if ( request.getParameter( SILENT_PARAM ) != null )
- {
- // If silent parameter was passed, no output should be
produced.
-
- //return null;
- }
- else
- {
- // Populate the context based on the template
-
- if ( templateName == REGION_DETAIL_TEMPLATE_NAME )
- {
- //context.put( "cacheName", cacheName );
- context.put( "elementInfoRecords",
jcsBean.buildElementInfo( cacheName ) );
- }
- else if ( templateName == DEFAULT_TEMPLATE_NAME )
- {
- context.put( "cacheInfoRecords", jcsBean.buildCacheInfo()
);
- }
-
- }
-
- //handle display
- if ( templateName == REGION_DETAIL_TEMPLATE_NAME )
- {
-
- %>
-
-<h1>Keys for region: $cacheName</h1>
-
-<table border="1" cellpadding="5">
- <tr>
- <th>Key</th>
- <th>Eternal?</th>
- <th>Create time</th>
- <th>Max Life (s)</th>
- <th>Till Expiration (s)</th>
- </tr>
- <%List list = (List) context.get( "elementInfoRecords" );
- Iterator it = list.iterator();
- while ( it.hasNext() )
- {
- CacheElementInfo element = (CacheElementInfo) it.next();
-
- %>
- <tr>
- <td><%=element.getKey()%></td>
- <td><%=element.isEternal()%></td>
- <td><%=element.getCreateTime()%></td>
- <td><%=element.getMaxLifeSeconds()%></td>
- <td><%=element.getExpiresInSeconds()%></td>
- <td><a
-
href="?action=remove&cacheName=<%=cacheName%>&key=<%=element.getKey()%>">
- Remove </a></td>
- </tr>
-
- <%}
-
- }
- else
- {
-
- %>
-
- <h1>Cache Regions</h1>
-
- <p>These are the regions which are currently defined in the cache.
- 'Items' and 'Bytes' refer to the elements currently in memory (not
- spooled). You can clear all items for a region by selecting 'Remove
- all' next to the desired region below. You can also <a
- href="?action=clearAllRegions">Clear all regions</a> which
empties the
- entire cache.</p>
-
- <table border="1" cellpadding="5">
- <tr>
- <th>Cache Name</th>
- <th>Items</th>
- <th>Bytes</th>
- <th>Status</th>
- <th>Memory Hits</th>
- <th>Aux Hits</th>
- <th>Not Found Misses</th>
- <th>Expired Misses</th>
- </tr>
-
- <%List list = (List) context.get( "cacheInfoRecords" );
- Iterator it = list.iterator();
- while ( it.hasNext() )
- {
- CacheRegionInfo record = (CacheRegionInfo) it.next();
-
- %>
- <tr>
- <td><%=record.getCache().getCacheName()%></td>
- <td><%=record.getCache().getSize()%></td>
- <td><%=record.getByteCount()%></td>
- <td><%=record.getStatus()%></td>
- <td><%=record.getCache().getHitCountRam()%></td>
- <td><%=record.getCache().getHitCountAux()%></td>
- <td><%=record.getCache().getMissCountNotFound()%></td>
- <td><%=record.getCache().getMissCountExpired()%></td>
- <td><a
-
href="?action=detail&cacheName=<%=record.getCache().getCacheName()%>">
- Detail </a> | <a
-
href="?action=clearRegion&cacheName=<%=record.getCache().getCacheName()%>">
- Remove all </a></td>
- </tr>
- <%}
+</head>
+
+<body>
- }
+<%
+ String CACHE_NAME_PARAM = "cacheName";
+ String ACTION_PARAM = "action";
+ String CLEAR_ALL_REGIONS_ACTION = "clearAllRegions";
+ String CLEAR_REGION_ACTION = "clearRegion";
+ String REMOVE_ACTION = "remove";
+ String DETAIL_ACTION = "detail";
+ String ITEM_ACTION = "item";
+ String KEY_PARAM = "key";
+ String SILENT_PARAM = "silent";
+
+ String DEFAULT_TEMPLATE_NAME = "DEFAULT";
+ String REGION_DETAIL_TEMPLATE_NAME = "DETAIL";
+ String ITEM_TEMPLATE_NAME = "ITEM";
+
+ String templateName = DEFAULT_TEMPLATE_NAME;
+
+ HashMap context = new HashMap();
+
+ // Get cacheName for actions from request (might be
null)
+ String cacheName = request.getParameter(
CACHE_NAME_PARAM );
+
+ if ( cacheName != null )
+ {
+ cacheName = cacheName.trim();
+ }
+
+ // If an action was provided, handle it
+ String action = request.getParameter( ACTION_PARAM );
+
+ if ( action != null )
+ {
+ if ( action.equals( CLEAR_ALL_REGIONS_ACTION ) )
+ {
+ jcsBean.clearAllRegions();
+ }
+ else if ( action.equals( CLEAR_REGION_ACTION ) )
+ {
+ if ( cacheName == null )
+ {
+ // Not Allowed
+ }
+ else
+ {
+ jcsBean.clearRegion( cacheName
);
+ }
+ }
+ else if ( action.equals( REMOVE_ACTION ) )
+ {
+ String[] keys =
request.getParameterValues( KEY_PARAM );
+
+ for ( int i = 0; i < keys.length; i++ )
+ {
+ jcsBean.removeItem( cacheName,
keys[ i ] );
+ }
+
+ templateName =
REGION_DETAIL_TEMPLATE_NAME;
+ }
+ else if ( action.equals( DETAIL_ACTION ) )
+ {
+ templateName =
REGION_DETAIL_TEMPLATE_NAME;
+ }
+ else if ( action.equals( ITEM_ACTION ) )
+ {
+ templateName = ITEM_TEMPLATE_NAME;
+ }
+ }
+
+ if ( request.getParameter( SILENT_PARAM ) != null )
+ {
+ // If silent parameter was passed, no output
should be produced.
+ //return null;
+ }
+ else
+ {
+ // Populate the context based on the template
+ if ( templateName ==
REGION_DETAIL_TEMPLATE_NAME )
+ {
+ //context.put( "cacheName", cacheName );
+ context.put( "elementInfoRecords",
jcsBean.buildElementInfo( cacheName ) );
+ }
+ else if ( templateName == DEFAULT_TEMPLATE_NAME
)
+ {
+ context.put( "cacheInfoRecords",
jcsBean.buildCacheInfo() );
+ }
+ }
+
+///////////////////////////////////////////////////////////////////////////////////
+ //handle display
+
+ if ( templateName == ITEM_TEMPLATE_NAME )
+ {
+ String key = request.getParameter( KEY_PARAM );
+
+ if ( key != null )
+ {
+ key = key.trim();
+ }
+
+ JCS cache = JCS.getInstance( cacheName );
+
+ org.apache.jcs.engine.behavior.ICacheElement
element = cache.getCacheElement( key );
+%>
+<h1> Item for key [<%=key%>] in region [<%=cacheName%>] </h1>
+
+<a href="JCSAdmin.jsp?action=detail&cacheName=<%=cacheName%>">Region
Detail</a>
+| <a href="JCSAdmin.jsp">All Regions</a>
+
+ <pre>
+ <%=element%>
+ </pre>
+<%
+ }
+ else
+ if ( templateName == REGION_DETAIL_TEMPLATE_NAME )
+ {
+%>
+
+<h1> Detail for region [<%=cacheName%>] </h1>
+
+<a href="JCSAdmin.jsp">All Regions</a>
+
+<table border="1" cellpadding="5" >
+ <tr>
+ <th> Key </th>
+ <th> Eternal? </th>
+ <th> Create time </th>
+ <th> Max Life (s) </th>
+ <th> Till Expiration (s) </th>
+ </tr>
+<%
+ List list = (List)context.get( "elementInfoRecords" );
+ Iterator it = list.iterator();
+ while ( it.hasNext() ) {
+ CacheElementInfo element = (CacheElementInfo)it.next();
+%>
+ <tr>
+ <td> <%=element.getKey()%> </td>
+ <td> <%=element.isEternal()%> </td>
+ <td> <%=element.getCreateTime()%> </td>
+ <td> <%=element.getMaxLifeSeconds()%> </td>
+ <td> <%=element.getExpiresInSeconds()%> </td>
+ <td>
+ <a
href="JCSAdmin.jsp?action=item&cacheName=<%=cacheName%>&key=<%=element.getKey()%>">
View </a>
+ | <a
href="JCSAdmin.jsp?action=remove&cacheName=<%=cacheName%>&key=<%=element.getKey()%>">
Remove </a>
+ </td>
+ </tr>
+<%
+ }
+
+ JCS cache = JCS.getInstance( cacheName );
+ String stats = cache.getStats();
+%>
+ </table>
+
+ <br>
+<b> Stats for region [<%=cacheName%>] </b>
+
+ <pre>
+ <%=stats%>
+ </pre>
+<%
+ }
+ else
+ {
+%>
+
+<h1> Cache Regions </h1>
+
+<p>
+These are the regions which are currently defined in the cache. 'Items' and
+'Bytes' refer to the elements currently in memory (not spooled). You can clear
+all items for a region by selecting 'Remove all' next to the desired region
+below. You can also <a href="javascript:decision('Clicking OK will clear all
the data from all regions!','JCSAdmin.jsp?action=clearAllRegions')">Clear all
regions</a>
+which empties the entire cache.
+</p>
+<p>
+ <form action="JCSAdmin.jsp">
+ <input type="hidden" name="action" value="item">
+ Retrieve (key) <input type="text" name="key">
+ (region) <select name="cacheName">
+<%
+ List listSelect = (List)context.get( "cacheInfoRecords" );
+ Iterator itSelect = listSelect.iterator();
+ while ( itSelect.hasNext() )
+ {
+ CacheRegionInfo record = (CacheRegionInfo)itSelect.next();
+ %>
+ <option
value="<%=record.getCache().getCacheName()%>"><%=record.getCache().getCacheName()%></option>
+ <%
+ }
+%>
+ </select>
+ <input type="submit">
+ </form>
+</p>
+
+<table border="1" cellpadding="5" >
+ <tr>
+ <th> Cache Name </th>
+ <th> Items </th>
+ <th> Bytes </th>
+ <th> Status </th>
+ <th> Memory Hits </th>
+ <th> Aux Hits </th>
+ <th> Not Found Misses </th>
+ <th> Expired Misses </th>
+ </tr>
+
+<%
+ List list = (List)context.get( "cacheInfoRecords" );
+ Iterator it = list.iterator();
+ while (it.hasNext() )
+ {
+ CacheRegionInfo record = (CacheRegionInfo)it.next();
+
+%>
+ <tr>
+ <td> <%=record.getCache().getCacheName()%> </td>
+ <td> <%=record.getCache().getSize()%> </td>
+ <td> <%=record.getByteCount()%> </td>
+ <td> <%=record.getStatus()%> </td>
+ <td> <%=record.getCache().getHitCountRam()%> </td>
+ <td> <%=record.getCache().getHitCountAux()%> </td>
+ <td> <%=record.getCache().getMissCountNotFound()%> </td>
+ <td> <%=record.getCache().getMissCountExpired()%> </td>
+ <td>
+ <a
href="JCSAdmin.jsp?action=detail&cacheName=<%=record.getCache().getCacheName()%>">
Detail </a>
+ | <a href="javascript:decision('Clicking OK will remove all
the data from the region
[<%=record.getCache().getCacheName()%>]!','JCSAdmin.jsp?action=clearRegion&cacheName=<%=record.getCache().getCacheName()%>')">
Remove all </a>
+ </td>
+ </tr>
+<%
+ }
+%>
+ </table>
+<%
+ }
+%>
- %>
- </table>
</body>
</html>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]