320 lines
8.8 KiB
Plaintext
320 lines
8.8 KiB
Plaintext
|
<%--
|
||
|
Licensed to the Apache Software Foundation (ASF) under one
|
||
|
or more contributor license agreements. See the NOTICE file
|
||
|
distributed with this work for additional information
|
||
|
regarding copyright ownership. The ASF licenses this file
|
||
|
to you under the Apache License, Version 2.0 (the
|
||
|
"License"); you may not use this file except in compliance
|
||
|
with the License. You may obtain a copy of the License at
|
||
|
|
||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
||
|
Unless required by applicable law or agreed to in writing,
|
||
|
software distributed under the License is distributed on an
|
||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||
|
KIND, either express or implied. See the License for the
|
||
|
specific language governing permissions and limitations
|
||
|
under the License.
|
||
|
--%>
|
||
|
<%@ 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.*" %>
|
||
|
|
||
|
<jsp:useBean id="jcsBean" scope="request" class="org.apache.jcs.admin.JCSAdminBean" />
|
||
|
|
||
|
<html>
|
||
|
|
||
|
<head>
|
||
|
|
||
|
<SCRIPT LANGUAGE="Javascript">
|
||
|
function decision( message, url )
|
||
|
{
|
||
|
if( confirm(message) )
|
||
|
{
|
||
|
location.href = url;
|
||
|
}
|
||
|
}
|
||
|
</SCRIPT>
|
||
|
|
||
|
<title> JCS Admin Servlet </title>
|
||
|
|
||
|
</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 REGION_SUMMARY_ACTION = "regionSummary";
|
||
|
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 REGION_SUMMARY_TEMPLATE_NAME = "SUMMARY";
|
||
|
|
||
|
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;
|
||
|
}
|
||
|
else if ( action.equals( REGION_SUMMARY_ACTION ) )
|
||
|
{
|
||
|
templateName = REGION_SUMMARY_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_SUMMARY_TEMPLATE_NAME )
|
||
|
{
|
||
|
%>
|
||
|
|
||
|
<h1> Summary for region [<%=cacheName%>] </h1>
|
||
|
|
||
|
<a href="JCSAdmin.jsp">All Regions</a>
|
||
|
|
||
|
<%
|
||
|
JCS cache = JCS.getInstance( cacheName );
|
||
|
String stats = cache.getStats();
|
||
|
%>
|
||
|
|
||
|
<br>
|
||
|
<b> Stats for region [<%=cacheName%>] </b>
|
||
|
|
||
|
<pre>
|
||
|
<%=stats%>
|
||
|
</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=regionSummary&cacheName=<%=record.getCache().getCacheName()%>"> Summary </a>
|
||
|
| <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()%>')"> Clear </a>
|
||
|
</td>
|
||
|
</tr>
|
||
|
<%
|
||
|
}
|
||
|
%>
|
||
|
</table>
|
||
|
<%
|
||
|
}
|
||
|
%>
|
||
|
|
||
|
|
||
|
</body>
|
||
|
|
||
|
</html>
|