Update of /var/cvs/html/mmbase/components/core/cache
In directory james.mmbase.org:/tmp/cvs-serv14585/components/core/cache
Modified Files:
index.jspx
Added Files:
style.css
Log Message:
new component jspx's for cache
See also: http://cvs.mmbase.org/viewcvs/html/mmbase/components/core/cache
style.css is new
Index: index.jspx
===================================================================
RCS file: /var/cvs/html/mmbase/components/core/cache/index.jspx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- index.jspx 22 Feb 2008 13:32:10 -0000 1.1
+++ index.jspx 23 Feb 2008 16:48:57 -0000 1.2
@@ -2,310 +2,175 @@
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:mm="http://www.mmbase.org/mmbase-taglib-2.0"
xmlns:jsp="http://java.sun.com/JSP/Page"
+ xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
class="component ${requestScope.componentClassName}"
id="${requestScope.componentId}">
- <jsp:directive.page import="org.mmbase.cache.*" />
- <mm:cloud rank="administrator" jspvar="cloud">
- <mm:import externid="rs_show">-</mm:import>
- <mm:import externid="rs_action">-</mm:import>
- <mm:import externid="rs_name">-</mm:import>
- <h3>Cache Monitor</h3>
- <style type="text/css">
- .label{
- background-color: #cccccc;
- width: 50%;
- float: left;
- }
- .data{
- float: left;
- }
- .row{
- border-bottom: 1px solid black;
- overflow: auto;
- }
- a:visited{
- color: blue;
- }
- hr{
- color: #333333;
- }
- </style>
+ <jsp:directive.page
import="java.util.*,org.mmbase.bridge.*,org.mmbase.cache.*" />
+ <jsp:output omit-xml-declaration="true" />
+ <mm:cloud rank="administrator">
+
+
+<mm:import externid="active" from="request" />
+<mm:import externid="clear" from="request" />
+
+<div
+ class="component mm_c ${requestScope.componentClassName}"
+ id="${requestScope.componentId}">
- <!-- foei -->
- <table summary="cache manager" width="100%" cellspacing="0" cellpadding="3"
border="0">
+ <h3>Cache Monitor</h3>
- <mm:import externid="active" from="request" />
- <mm:import externid="clear" from="request" />
+ <table summary="cache manager" cellspacing="0" cellpadding="3" border="0">
+ <caption>
+ This tools hows the performance of the various MMBase caches. You can
also (temporary) turn
+ on/off the cache here. For a persistant change you should change
caches.xml.
+ </caption>
+ <!-- activate or deactivate cache -->
<mm:present referid="active">
- <mm:import externid="cache" from="request" required="true" />
- <mm:write referid="active" jspvar="active" vartype="String">
- <mm:write referid="cache" jspvar="cache" vartype="String">
-
<jsp:scriptlet>CacheManager.getCache(cache).setActive(active.equals("on") ?
true : false);</jsp:scriptlet>
+ <mm:import externid="cache" />
+ <mm:write referid="active" jspvar="active" vartype="String"
write="false">
+ <mm:write referid="cache" jspvar="cache" vartype="String"
write="false">
+ <jsp:scriptlet>
CacheManager.getCache(cache).setActive(active.equals("on") ? true : false);
</jsp:scriptlet>
</mm:write>
</mm:write>
+ <div class="msg">The cache ${cache} is turned ${active}.</div>
</mm:present>
+ <!-- clear cache -->
<mm:present referid="clear">
- <mm:import externid="cache" from="request" required="true" />
- <mm:write referid="cache" jspvar="cache" vartype="String">
- <jsp:scriptlet>CacheManager.getCache(cache).clear();</jsp:scriptlet>
+ <mm:import externid="cache" />
+ <mm:write referid="cache" jspvar="cache" vartype="String" write="false">
+ <jsp:scriptlet> CacheManager.getCache(cache).clear(); </jsp:scriptlet>
</mm:write>
+ <div class="msg">The cache ${cache} is turned cleared.</div>
</mm:present>
- <caption>
- This tool shows the performance of the various MMBase caches. You can
also (temporary) turn
- on/off the cache here. For a persistant change you should change
caches.xml.
- </caption>
-
- <jsp:scriptlet>
- List<Cache> caches = new ArrayList<Cache>();
- List<QueryResultCache> queryCaches = new
ArrayList<QueryResultCache>();
- //first sort the caches
-
- for (String cacheName : CacheManager.getCaches()) {
- Cache cache = CacheManager.getCache(cachename);
- if(cache instanceof QueryResultCache){
- queryCaches.add((QueryResultCache) cache);
- }else{
- caches.add(cache);
- }
- }
- Collections.sort(queryCaches, new Comparator(){
- public int compare(Object o1, Object o2){
- Cache c1 = (Cache)o1;
- Cache c2 = (Cache)o2;
- return
c1.getName().toLowerCase().compareTo(c2.getName().toLowerCase());
- }
- });
- </jsp:scriptlet>
- <tr><th colspan="6">Query Caches</th></tr>
- <tr><td colspan="6"><p>Query caches are used to cache the result of
different types of
+ <tr>
+ <th colspan="8">Query Caches</th>
+ </tr><tr>
+ <td colspan="8">
+ <p>Query caches are used to cache the result of different types of
queries. These caches have a plugin like system of for (sets of) rules
that will decide if
- a certain change in the cloud should invalidate a query from the cache.
</p></td></tr>
+ a certain change in the cloud should invalidate a query from the
cache.</p>
+ </td>
+ </tr>
- <jsp:scriplet>
- for (QueryResultCache cache : queryCaches) {
- pageContext.setAttribute("cache", cache);
- </jsp:scriplet>
+ <mm:functioncontainer>
+ <mm:param name="type">org.mmbase.cache.QueryResultCache</mm:param>
+ <mm:listfunction set="caches" name="list" id="qc">
+ <mm:first>
<tr>
- <td colspan="6"><a name="${cache.name}" /></td>
+ <th>Cache</th>
+ <th class="center">Requests</th>
+ <th class="center">Hits</th>
+ <th class="center">Misses</th>
+ <th class="center">Puts</th>
+ <th class="center">Size</th>
+ <th class="center">Performance</th>
+ <th class="view">Action</th>
</tr>
- <!--
- include file="cache/cache_detail.jsp"
- -->
-
-
- <!-- Handle the possible action of globally switching strategies on or off
-->
- <mm:import id="globalStrategyEnabled" reset="true">
- <jsp:expression>cache.getReleaseStrategy().isEnabled() ? "enabled" :
"disabled"</jsp:expression>
- </mm:import>
- <mm:present referid="rs_name">
- <mm:compare referid="rs_name" referid2="cacheName">
- <mm:present referid="rs_action">
- <mm:compare referid="rs_action" referid2="globalStrategyEnabled"
inverse="true">
- <jsp:scriptlet>cache.getReleaseStrategy().setEnabled(
request.getParameter("rs_action").equals("enabled") ? true : false
);</jsp:scriptlet>
- </mm:compare>
- </mm:present>
- </mm:compare>
- </mm:present>
-
- <!-- determin the colors for the global strategy line-->
- <mm:import id="globalStrategyEnabled"
reset="true"><jsp:expression>cache.getReleaseStrategy().isEnabled() ? "enabled"
: "disabled"</jsp:expression></mm:import>
- <mm:compare referid="globalStrategyEnabled" value="enabled">
- <mm:import id="textStyle" reset="true">color: green;</mm:import>
- <mm:import id="linkStyle" reset="true">color: green;</mm:import>
- </mm:compare>
- <mm:compare referid="globalStrategyEnabled" value="enabled" inverse="true">
- <mm:import id="textStyle" reset="true">color: red;</mm:import>
- <mm:import id="linkStyle" reset="true">color: red;</mm:import>
- </mm:compare>
-
- <!-- Create the url to toggle global strategy active/inactive for this
cache -->
- <mm:import reset="true" id="url">
- <mm:url>
- <mm:param name="rs_name"><mm:write referid="cacheName"/></mm:param>
- <mm:compare referid="globalStrategyEnabled" value="disabled">
<mm:param name="rs_action">enabled</mm:param> </mm:compare>
- <mm:compare referid="globalStrategyEnabled" value="disabled"
inverse="true"> <mm:param name="rs_action">disabled</mm:param> </mm:compare>
- </mm:url>#<mm:write referid="cacheName"/>
- </mm:import>
-
+ </mm:first>
<tr>
- <td colspan="5" style="<mm:write referid="textStyle"/>">Events Analyzed
: <%= cache.getReleaseStrategy().getTotalEvaluated()%>, Queries preserved : <%=
cache.getReleaseStrategy().getTotalPreserved() %>, Queries flushed : <%=
cache.getReleaseStrategy().getTotalEvaluated() -
cache.getReleaseStrategy().getTotalPreserved()%></td>
- <td ><a href="<mm:write referid="url" escape="none"/>"><b><%=
cache.getReleaseStrategy().isEnabled() ? "disable" : "enable"%></b></a> </td>
+ <td> ${c.name} </td>
+ <td class="center"> ${qc.hits + qc.misses} </td>
+ <td class="center"> ${qc.hits} </td>
+ <td class="center"> ${qc.misses} </td>
+ <td class="center"> ${qc.puts} </td>
+ <td class="center"> ${qc.size} / ${qc.maxSize} </td>
+ <td class="center"> <fmt:formatNumber value="${qc.ratio}"
maxFractionDigits="2" type="percent" /> </td>
+ <td class="view">
+ <c:choose>
+ <c:when test="${qc.active}">
+ <mm:link>
+ <mm:param name="cache">${qc.name}</mm:param>
+ <mm:param name="active">off</mm:param>
+ <a href="${_}">turn off</a>
+ </mm:link>
+ </c:when>
+ <c:otherwise>
+ <mm:link>
+ <mm:param name="cache">${qc.name}</mm:param>
+ <mm:param name="active">on</mm:param>
+ <a href="${_}">turn on</a>
+ </mm:link>
+ </c:otherwise>
+ </c:choose> |
+ <mm:link>
+ <mm:param name="cache">${qc.name}</mm:param>
+ <mm:param name="clear">clear</mm:param>
+ <a href="${_}">clear</a>
+ </mm:link> |
+ <mm:link page="showcache">
+ <mm:param name="cache">${qc.name}</mm:param>
+ <a href="${_}">show</a>
+ </mm:link>
+ </td>
+ </tr><tr>
+ <td colspan="8">
+ Events Analyzed: ${qc.releaseStrategy.totalEvaluated}
+ Queries preserved: ${qc.releaseStrategy.totalPreserved}
+ Queries flushed: ${qc.releaseStrategy.totalEvaluated -
qc.releaseStrategy.totalPreserved}
+ </td>
</tr>
+ </mm:listfunction>
+ </mm:functioncontainer>
- <!-- create the toggle link for showing / hiding strategy details -->
- <mm:import reset="true" id="url">
- <mm:url>
- <mm:compare referid="rs_show" referid2="cacheName" inverse="true">
<mm:param name="rs_show"><mm:write referid="cacheName"/></mm:param>
</mm:compare>
- </mm:url>#<mm:write referid="cacheName"/>
- </mm:import>
-
+ <!-- other caches -->
+ <mm:functioncontainer>
+ <mm:listfunction set="caches" name="list" remove="qc" id="c">
+ <mm:first>
<tr>
- <td colspan="5">Switch cache release strategy statistics view</td>
- <td><a href="<mm:write referid="url"/>"><b>Toggle</b></a> </td>
+ <th>Cache</th>
+ <th class="center">Requests</th>
+ <th class="center">Hits</th>
+ <th class="center">Misses</th>
+ <th class="center">Puts</th>
+ <th class="center">Size</th>
+ <th class="center">Performance</th>
+ <th class="view">Action</th>
</tr>
- <!--
- Release Strategy bit
- -->
-
- <mm:compare referid="rs_show" referid2="cacheName">
-
- <!-- show the statistics -->
- <tr><td colspan="6">
- <table border="0" >
- <%
- ChainedReleaseStrategy base = cache.getReleaseStrategy();
- for(Iterator ii = base.iterator(); ii.hasNext(); ){
- ReleaseStrategy strategy = (ReleaseStrategy) ii.next();
- %>
- <mm:import id="strategyName"
reset="true"><%=saveName(strategy.getName())%></mm:import>
-
- <%-- handel actions for this strategy --%>
- <mm:compare referid="rs_name" referid2="strategyName">
- <mm:compare referid="rs_action" value="setActive">
- <% strategy.setEnabled(true); %>
- </mm:compare>
- <mm:compare referid="rs_action" value="setInactive">
- <% strategy.setEnabled(false); %>
- </mm:compare>
- </mm:compare>
-
-
- <%-- create some action urls --%>
- <mm:remove referid="toggleActiveUrl"/>
- <mm:import id="toggleActiveUrl" reset="true">
- <mm:url id="toggleActiveUrl">
- <mm:param name="rs_show"><mm:write referid="cacheName"/></mm:param>
- <mm:param name="rs_action"><%=strategy.isEnabled() ? "setInactive"
: "setActive"%></mm:param>
- <mm:param
name="rs_name"><%=saveName(strategy.getName())%></mm:param>
- </mm:url>#<mm:write referid="cacheName"/>
- </mm:import>
-
- <%-- define the text style --%>
- <mm:import id="strategyEnabled" reset="true"><%= strategy.isEnabled() ?
"enabled" : "disabled" %></mm:import>
- <mm:compare referid="strategyEnabled" value="enabled">
- <mm:import id="textStyle" reset="true">color: black;</mm:import>
- <mm:import id="linkStyle" reset="true">color: green;</mm:import>
- </mm:compare>
- <mm:compare referid="strategyEnabled" value="enabled" inverse="true">
- <mm:import id="textStyle" reset="true">color: #666666;</mm:import>
- <mm:import id="linkStyle" reset="true">color: red;</mm:import>
- </mm:compare>
-
- <%-- show the values --%>
- <tr >
- <td align="left" valign="top" style="width: 50%;">
- <p><b><%=strategy.getName()%></b><p>
- <p><%=strategy.getDescription()%></p>
- </td>
- <td style="padding: 0px;">
- <div class="row">
- <div class="label" style="<mm:write
referid="textStyle"/>">enabled:</div>
- <div class="data" ><a href="<mm:write escape="none"
referid="toggleActiveUrl"/>">
- <span style="<mm:write referid="linkStyle"/>"><%=
strategy.isEnabled() ? "enabled" : "disabled"%>(press to toggle)</a> </span>
- </div>
- </div>
- <div class="row">
- <div class="label" style="<mm:write
referid="textStyle"/>">total queries evaluated:</div>
- <div class="data" style="<mm:write
referid="textStyle"/>"><%=""+strategy.getTotalEvaluated()%></div>
- </div>
- <div class="row">
- <div class="label" style="<mm:write
referid="textStyle"/>">total queries preserved:</div>
- <div class="data" style="<mm:write
referid="textStyle"/>"><%=""+strategy.getTotalPreserved()%></div>
- </div>
- <div class="row">
- <div class="label" style="<mm:write
referid="textStyle"/>">total evaluation time (millis):</div>
- <div class="data" style="<mm:write
referid="textStyle"/>"><%=""+strategy.getTotalEvaluationTimeMillis()%></div>
- </div>
- <div class="row">
- <div class="label" style="<mm:write
referid="textStyle"/>">avarage evaluation time (millis):</div>
- <div class="data" style="<mm:write
referid="textStyle"/>"><%="" +
saveDevide(strategy.getTotalEvaluationTimeMillis(),
strategy.getTotalEvaluated())%></div>
- </div>
- <div class="row">
- <div class="label" style="<mm:write
referid="textStyle"/>">relative performance:</div>
- <div class="data" style="<mm:write
referid="textStyle"/>"><%="" + savePercentage(strategy.getTotalEvaluated(),
strategy.getTotalPreserved())%> %</div>
- </div>
+ </mm:first>
+ <tr>
+ <td> ${c.name} </td>
+ <td class="center"> ${c.hits + c.misses} </td>
+ <td class="center"> ${c.hits} </td>
+ <td class="center"> ${c.misses} </td>
+ <td class="center"> ${c.puts} </td>
+ <td class="center"> ${c.size} / ${c.maxSize} </td>
+ <td class="center"> <fmt:formatNumber value="${c.ratio}"
maxFractionDigits="2" type="percent" /> </td>
+ <td class="view">
+ <c:choose>
+ <c:when test="${c.active}">
+ <mm:link>
+ <mm:param name="cache">${c.name}</mm:param>
+ <mm:param name="active">off</mm:param>
+ <a href="${_}">turn off</a>
+ </mm:link>
+ </c:when>
+ <c:otherwise>
+ <mm:link>
+ <mm:param name="cache">${c.name}</mm:param>
+ <mm:param name="active">on</mm:param>
+ <a href="${_}">turn on</a>
+ </mm:link>
+ </c:otherwise>
+ </c:choose> |
+ <mm:link>
+ <mm:param name="cache">${c.name}</mm:param>
+ <mm:param name="clear">clear</mm:param>
+ <a href="${_}">clear</a>
+ </mm:link> |
+ <mm:link page="showcache">
+ <mm:param name="cache">${c.name}</mm:param>
+ <a href="${_}">show</a>
+ </mm:link>
</td>
</tr>
- <tr><td colspan="2"><hr/></td> </tr>
- <%}%>
+ </mm:listfunction>
+ </mm:functioncontainer>
</table>
- <div id="st_<%=cache.getName()%>" >
- <table>
-
- </table>
- </td>
- </td></tr>
- </mm:compare>
-<%--
- End of release Strategy bit
---%>
-<% } %>
-<tr><td colspan="6"><h3>Other Caches </h3></td></tr>
-<%
- //first sort the caches
- Collections.sort(caches, new Comparator(){
- public int compare(Object o1, Object o2){
- Cache c1 = (Cache)o1;
- Cache c2 = (Cache)o2;
- return
c1.getName().toLowerCase().compareTo(c2.getName().toLowerCase());
- }
- });
- for( Iterator i = caches.iterator(); i.hasNext(); ){
- Cache cache = (Cache) i.next();
-%>
-
- <[EMAIL PROTECTED] file="cache/cache_detail.jsp"%>
-<%
- }
-
- Module mmAdmin=ContextProvider.getDefaultCloudContext().getModule("mmadmin");
-
-%>
-
-
-<tr><td> </td></tr>
-<tr align="left">
- <th class="header">Relation Cache Property</th>
- <th class="header">Value</th>
-</tr>
-<tr>
- <td class="data">Requests</td>
- <td
class="data"><%=mmAdmin.getInfo("RELATIONCACHEREQUESTS",request,response)%></td>
-</tr>
-<tr>
- <td class="data">Hits</td>
- <td
class="data"><%=mmAdmin.getInfo("RELATIONCACHEHITS",request,response)%></td>
-</tr>
-<tr>
- <td class="data">Misses</td>
- <td
class="data"><%=mmAdmin.getInfo("RELATIONCACHEMISSES",request,response)%></td>
-</tr>
-<tr>
- <td class="data">Performance</td>
- <td
class="data"><%=mmAdmin.getInfo("RELATIONCACHEPERFORMANCE",request,response)%></td>
-</tr>
-
-<tr><td> </td></tr>
-<tr align="left">
- <th class="header">Temporary Node Cache Property</th>
- <th class="header">Value</th>
-</tr>
-<tr>
- <td class="data">Size</td>
- <td
class="data"><%=mmAdmin.getInfo("TEMPORARYNODECACHESIZE",request,response)%></td>
-</tr>
-
-<tr><td> </td></tr>
-
-<tr>
-<td class="navigate"><a href="<mm:url page="../default.jsp" />"
target="_top"><img src="<mm:url page="/mmbase/style/images/back.gif" />"
alt="back" border="0" align="left" /></a></td>
-<td class="data">Return to home page</td>
-</tr>
-</table>
</div>
</mm:cloud>
+</div>
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs