Author: taylor Date: Sat Jul 12 21:37:17 2014 New Revision: 1610061 URL: http://svn.apache.org/r1610061 Log: JS2-1287: backporting trunk to 2.2.3 release
Added: portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletTrackingInfo.java Modified: portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/components/jetspeed-cm/src/main/java/org/apache/jetspeed/cache/impl/EhCacheElementImpl.java portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletTrackingManagerImpl.java portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/components/jetspeed-portal/src/test/assembly/cache-test.xml portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletTrackingManager.java portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/assembly/aggregation.xml portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/assembly/cache.xml portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/db-ojb/distributed-ehcache.xml portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/db-ojb/ehcache.xml Modified: portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/components/jetspeed-cm/src/main/java/org/apache/jetspeed/cache/impl/EhCacheElementImpl.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/components/jetspeed-cm/src/main/java/org/apache/jetspeed/cache/impl/EhCacheElementImpl.java?rev=1610061&r1=1610060&r2=1610061&view=diff ============================================================================== --- portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/components/jetspeed-cm/src/main/java/org/apache/jetspeed/cache/impl/EhCacheElementImpl.java (original) +++ portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/components/jetspeed-cm/src/main/java/org/apache/jetspeed/cache/impl/EhCacheElementImpl.java Sat Jul 12 21:37:17 2014 @@ -16,12 +16,11 @@ */ package org.apache.jetspeed.cache.impl; -import java.io.Serializable; - import net.sf.ehcache.Element; - import org.apache.jetspeed.cache.CacheElement; +import java.io.Serializable; + public class EhCacheElementImpl implements CacheElement { Element element; Modified: portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletTrackingManagerImpl.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletTrackingManagerImpl.java?rev=1610061&r1=1610060&r2=1610061&view=diff ============================================================================== --- portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletTrackingManagerImpl.java (original) +++ portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletTrackingManagerImpl.java Sat Jul 12 21:37:17 2014 @@ -16,21 +16,23 @@ */ package org.apache.jetspeed.aggregator.impl; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import org.apache.commons.lang.BooleanUtils; import org.apache.jetspeed.PortalReservedParameters; +import org.apache.jetspeed.aggregator.PortletTrackingInfo; import org.apache.jetspeed.aggregator.PortletTrackingManager; import org.apache.jetspeed.aggregator.RenderTrackable; +import org.apache.jetspeed.cache.CacheElement; +import org.apache.jetspeed.cache.JetspeedCache; import org.apache.jetspeed.container.PortletWindow; import org.apache.jetspeed.om.portlet.LocalizedField; import org.apache.jetspeed.om.portlet.PortletDefinition; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * Tracks out of service status for portlets * @@ -39,7 +41,16 @@ import org.apache.jetspeed.om.portlet.Po */ public class PortletTrackingManagerImpl implements PortletTrackingManager { - protected Map outOfService = Collections.synchronizedMap(new HashMap()); + /** + * The out of service cache. This cache is keyed off of full portlet name <tt>portletApp::portletName</tt> which + * holds as its element a list of windows id strings + */ + protected final JetspeedCache trackingCache; + + /** + * Holds failed window ids and their failure counts + */ + protected Map<String,Integer> trackingCounts = new HashMap<String,Integer>(); /** * when rendering a portlet, the default timeout period in milliseconds @@ -54,10 +65,11 @@ public class PortletTrackingManagerImpl */ protected int outOfServiceLimit; - public PortletTrackingManagerImpl(long defaultPortletTimeout, int outOfServiceLimit) + public PortletTrackingManagerImpl(long defaultPortletTimeout, int outOfServiceLimit, JetspeedCache trackingCache) { this.defaultPortletTimeout = defaultPortletTimeout; this.outOfServiceLimit = outOfServiceLimit; + this.trackingCache = trackingCache; } public long getDefaultPortletTimeout() @@ -67,6 +79,10 @@ public class PortletTrackingManagerImpl public boolean exceededTimeout(long renderTime, PortletWindow window) { + if (!isEnabled()) { + return false; + } + RenderTrackable trackInfo = (RenderTrackable)window; long defaultTimeout = this.getDefaultPortletTimeout(); if (trackInfo.getExpiration() > 0) @@ -82,12 +98,29 @@ public class PortletTrackingManagerImpl public boolean isOutOfService(PortletWindow window) { + if (!isEnabled()) { + return false; + } + RenderTrackable trackable = (RenderTrackable)window; - if (trackable.getRenderTimeoutCount() > this.outOfServiceLimit) + if (trackable.getRenderTimeoutCount() >= this.outOfServiceLimit) { return true; } - + + CacheElement element = trackingCache.get(window.getPortletDefinition().getUniqueName()); + if (element != null) { + List<String> windows = (List<String>)element.getContent(); + if (windows.contains(window.getWindowId())) + return true; + } + + Integer count = trackingCounts.get(window.getWindowId()); + if (count != null && count >= this.outOfServiceLimit) { + takeOutOfService(window); + return true; + } + PortletDefinition def = window.getPortletDefinition(); Collection<LocalizedField> fields = def.getMetadata().getFields(PortalReservedParameters.PORTLET_EXTENDED_DESCRIPTOR_OUT_OF_SERVICE); @@ -95,6 +128,7 @@ public class PortletTrackingManagerImpl { if (BooleanUtils.toBoolean(fields.iterator().next().getValue())) { + addToCache(window); return true; } } @@ -109,13 +143,29 @@ public class PortletTrackingManagerImpl public void incrementRenderTimeoutCount(PortletWindow window) { + if (!isEnabled()) { + return; + } RenderTrackable trackable = (RenderTrackable)window; - trackable.incrementRenderTimeoutCount(); + trackable.incrementRenderTimeoutCount(); + Integer count = trackingCounts.get(window.getWindowId()); + if (count == null) { + trackingCounts.put(window.getWindowId(), 1); + } + else { + count = count + 1; + trackingCounts.put(window.getWindowId(), count); + } } public void success(PortletWindow window) { + if (!isEnabled()) { + return ; + } RenderTrackable trackable = (RenderTrackable)window; + removeFromCache(window); + trackingCounts.remove(window.getWindowId()); trackable.success(); } @@ -128,31 +178,90 @@ public class PortletTrackingManagerImpl public void takeOutOfService(PortletWindow window) { RenderTrackable trackable = (RenderTrackable)window; + addToCache(window); + trackingCounts.remove(window.getWindowId()); trackable.setRenderTimeoutCount((int)this.defaultPortletTimeout + 1); } public void putIntoService(PortletWindow window) { RenderTrackable trackable = (RenderTrackable)window; + removeFromCache(window); + trackingCounts.remove(window.getWindowId()); trackable.setRenderTimeoutCount(0); } - public void putIntoService(List fullPortletNames) + public void putIntoService(List<String> fullPortletNames) { - // TODO + for (String fullName : fullPortletNames) { + trackingCache.remove(fullName); + } } - public List getOutOfServiceList(String fullPortletName) + public PortletTrackingInfo getOutOfServiceList(String fullPortletName) { - List outs = new ArrayList(); - // TODO - return outs; + CacheElement element = trackingCache.get(fullPortletName); + if (element != null) { + List<String> windows = (List<String>)element.getContent(); + return new PortletTrackingInfo(fullPortletName, windows); + } + else { + List<String> windows = new ArrayList<String>(); + return new PortletTrackingInfo(fullPortletName, windows); + } } - public List getOutOfServiceList() + public List<PortletTrackingInfo> getOutOfServiceList() { - List outs = new ArrayList(); - // TODO - return outs; + List<PortletTrackingInfo> result = new ArrayList<PortletTrackingInfo>(); + List<String> keys = trackingCache.getKeys(); + for (String fullName : keys) { + CacheElement element = trackingCache.get(fullName); + if (element != null) { + List<String> windows = (List<String>) element.getContent(); + result.add(new PortletTrackingInfo(fullName, windows)); + } + } + return result; + } + + protected boolean addToCache(PortletWindow window) { + String fullName = window.getPortletDefinition().getUniqueName(); + CacheElement cachedElement = trackingCache.get(fullName); + if (cachedElement == null) { + List<String> windowIds = new ArrayList<String>(); + windowIds.add(window.getWindowId()); + cachedElement = trackingCache.createElement(fullName, windowIds); + trackingCache.put(cachedElement); + return true; + } + else { + List<String> windowIds = (List<String>)cachedElement.getContent(); + if (!windowIds.contains(window.getWindowId())) { + windowIds.add(window.getWindowId()); + trackingCache.put(cachedElement); + return true; + } + } + return false; + } + + protected boolean removeFromCache(PortletWindow window) { + String fullName = window.getPortletDefinition().getUniqueName(); + CacheElement cachedElement = trackingCache.get(fullName); + if (cachedElement == null) { + return false; + } + List<String> windowIds = (List<String>)cachedElement.getContent(); + if (!windowIds.contains(window.getWindowId())) { + windowIds.remove(window.getWindowId()); + trackingCache.put(cachedElement); + return true; + } + return false; + } + + public boolean isEnabled() { + return defaultPortletTimeout > 0; } } \ No newline at end of file Modified: portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/components/jetspeed-portal/src/test/assembly/cache-test.xml URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/components/jetspeed-portal/src/test/assembly/cache-test.xml?rev=1610061&r1=1610060&r2=1610061&view=diff ============================================================================== --- portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/components/jetspeed-portal/src/test/assembly/cache-test.xml (original) +++ portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/components/jetspeed-portal/src/test/assembly/cache-test.xml Sat Jul 12 21:37:17 2014 @@ -162,6 +162,8 @@ </property> <property name="cacheName" value="desktopContentCache" /> </bean> + + <bean id="portletApplicationOidCache" class="org.apache.jetspeed.cache.impl.EhCacheImpl"> <meta key="j2:cat" value="default or cache" /> @@ -329,5 +331,35 @@ <meta key="j2:cat" value="default or cache"/> <constructor-arg><ref bean="ehPageManagerPrincipalPropertiesPathCache"/></constructor-arg> </bean> - + + <!-- + Abstract Factory bean used to make a reference to the existing EHCache with the specified name + or instantiate a new EHCache when the cache hasn't been defined in ehcache.xml. + All the properties except of cacheManager are applied only when a new EHCache is instantiated. + --> + <bean id="ehCacheParent" abstract="true" class="org.springframework.cache.ehcache.EhCacheFactoryBean"> + <meta key="j2:cat" value="default or cache" /> + <property name="cacheManager" ref="cacheManager" /> + <property name="maxElementsInMemory" value="500" /> + <property name="maxElementsOnDisk" value="1000" /> + <property name="eternal" value="false" /> + <property name="overflowToDisk" value="false" /> + <property name="timeToLive" value="120" /> + <property name="timeToIdle" value="120" /> + <property name="diskPersistent" value="false" /> + <property name="diskExpiryThreadIntervalSeconds" value="120" /> + </bean> + + <bean id="ehPortletTrackingCache" parent="ehCacheParent"> + <meta key="j2:cat" value="default or cache" /> + <property name="cacheName" value="portletTrackingCache" /> + </bean> + + <bean id="portletTrackingCache" class="org.apache.jetspeed.cache.impl.EhCacheImpl"> + <meta key="j2:cat" value="default or cache" /> + <constructor-arg> + <ref bean="ehPortletTrackingCache" /> + </constructor-arg> + </bean> + </beans> Added: portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletTrackingInfo.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletTrackingInfo.java?rev=1610061&view=auto ============================================================================== --- portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletTrackingInfo.java (added) +++ portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletTrackingInfo.java Sat Jul 12 21:37:17 2014 @@ -0,0 +1,43 @@ +/* + * 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. + */ +package org.apache.jetspeed.aggregator; + +import java.util.List; + +/** + * Portlet Tracking information used in PortletTrackingManager to represent minimal data passed between the tracking + * manager and clients of the API + * + */ +public class PortletTrackingInfo { + + private final List<String> windows; + private final String fullPortletName; + + public PortletTrackingInfo(String fullPortletName, List<String> windows) { + this.windows = windows; + this.fullPortletName = fullPortletName; + } + + public String getFullPortletName() { + return fullPortletName; + } + + public List<String> getWindows() { + return windows; + } +} Modified: portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletTrackingManager.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletTrackingManager.java?rev=1610061&r1=1610060&r2=1610061&view=diff ============================================================================== --- portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletTrackingManager.java (original) +++ portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletTrackingManager.java Sat Jul 12 21:37:17 2014 @@ -16,16 +16,21 @@ */ package org.apache.jetspeed.aggregator; -import java.util.List; - import org.apache.jetspeed.container.PortletWindow; +import java.util.List; + /** - * <h4>PortletRendererService<br /> - * Jetspeed-2 Rendering service.</h4> - * <p>This service process all portlet rendering requests and interfaces with the portlet - * container to generate the resulting markup</p> + * The Portlet Tracking Manager will track portlets rendering statistics, taking portlets out of + * service when their rendering time exceeds a configurable threshold. This threshold has two parameters: + * <tt>defaultPortletTimeout</tt> is a value in milliseconds representing the maximum render time to be considered + * as a timeout for a given portlet window. <tt>outOfServiceLimit</tt> represents the number of times the portlet window + * reaches the timeout threshold before it is taken out of service. + * <p> + * This service is used primarily by the rendering engine to determine whether to take a portlet window out of + * service to avoid long 'timeouts' when rendering a portlet. The service also provides functions to put the + * portlet windows back into service. * * @author <a href="mailto:tay...@apache.org">David Sean Taylor</a> * @version $Id: $ @@ -33,39 +38,101 @@ import org.apache.jetspeed.container.Por public interface PortletTrackingManager { /** - * Get the default timeout for rendering a portlet in milliseconds + * Returns the default timeout threshold for rendering a portlet in milliseconds. This threshold is used to + * determine if the portlet has timed out, and is used in combination with <code>getOutOfServiceLimit</code> * + * @return the default rendering timeout */ long getDefaultPortletTimeout(); /** - * Out of service limit, if a portlet entity times out past its limit (or default limit) n consecutive times, - * it is taken out of service - * - * @return + * The number of times a portlet window can timeout before it is taken out of service + * + * @return the number of times a portlet window can time out before it is considered out of service */ int getOutOfServiceLimit(); - + + /** + * Ask if a given window is out of service or not + * @param window this window will be checked + * @return <tt>true</tt> when the portlet window is determined to be out of service + */ boolean isOutOfService(PortletWindow window); - + + /** + * Given a render time, ask if the given portlet window has exceeded the timeout threshold + * + * @param renderTime the time it took to render a portlet + * @param window this window will be checked + * @return <tt>true</tt> when the render time exceeded the timeout threshold + */ boolean exceededTimeout(long renderTime, PortletWindow window); - + + /** + * Increment the render timeout count for a given portlet window + * @param window the portlet window to be incremented + */ void incrementRenderTimeoutCount(PortletWindow window); + /** + * Set a specific caching expiration timeout for a given portlet window + * + * @param window this window will have a new expiration timeout value + * @param expiration the value of the timeout expiration + */ void setExpiration(PortletWindow window, long expiration); - + + /** + * Reset this portlet window as successfully rendered, clearing all expiration counts + * + * @param window this window will have its expiration status reset + */ void success(PortletWindow window); - + + /** + * Take a given portlet window out of service. This portlet window will no longer be rendered. + * + * @param window this window will be taken out of service + */ void takeOutOfService(PortletWindow window); - + + /** + * Put a given portlet window that is out of service back into service and re-enable rendering of the window + * + * @param window this window will be put back into service + */ void putIntoService(PortletWindow window); + + /** + * Given a list of full portlet names in format of <tt>portletApp::portletName</tt>, put all windows back + * into service for each of the portlet names given. Note that a portlet can have many windows associated with it. + * Each of the windows associated with a given portlet will be put back into service. + * + * @param fullPortletNames a list of strings of full portlet names in format <tt>portletApp::portletName</tt> + */ + void putIntoService(List<String> fullPortletNames); + + /** + * Retrieve the list of out of service portlet windows for a given portlet, or an empty <code>PortletTrackingInfo</code> + * if none are found + * + * @param fullPortletName a full portlet names in format <tt>portletApp::portletName</tt> + * @return a single <code>PortletTrackingInfo</code> which includes a list of window ids + */ + PortletTrackingInfo getOutOfServiceList(String fullPortletName); + + /** + * Retrieve the list of out of service portlet windows for the entire system + * + * @return a list of portlet windows represented by <code>PortletTrackingInfo</code> + */ + List<PortletTrackingInfo> getOutOfServiceList(); + /** - * - * @param fullPortletNames a list of Strings of full portlet names + * Returns <tt>true</tt> if this service is enabled, otherwise <tt>false</tt>. The service is enabled via the + * <tt>jetspeed.properties</tt> property named <tt>portal.core.aggregator.portlet.timeout</tt>. The value + * represents the timeout threshold in milliseconds. A value of zero disables portlet tracking. + * @return <tt>true</tt> if this service is enabled, otherwise <tt>false</tt> */ - void putIntoService(List fullPortletNames); - - List getOutOfServiceList(String fullPortletName); - - List getOutOfServiceList(); + boolean isEnabled(); } \ No newline at end of file Modified: portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/assembly/aggregation.xml URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/assembly/aggregation.xml?rev=1610061&r1=1610060&r2=1610061&view=diff ============================================================================== --- portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/assembly/aggregation.xml (original) +++ portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/assembly/aggregation.xml Sat Jul 12 21:37:17 2014 @@ -31,6 +31,7 @@ <constructor-arg index="1"> <value>${portal.core.aggregator.portlet.service.limit}</value> </constructor-arg> + <constructor-arg index="2"><ref bean="portletTrackingCache"/></constructor-arg> </bean> Modified: portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/assembly/cache.xml URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/assembly/cache.xml?rev=1610061&r1=1610060&r2=1610061&view=diff ============================================================================== --- portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/assembly/cache.xml (original) +++ portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/assembly/cache.xml Sat Jul 12 21:37:17 2014 @@ -317,5 +317,17 @@ <constructor-arg><ref bean="decorationContentCache"/></constructor-arg> <constructor-arg><ref bean="ContentCacheKeyGenerator"/></constructor-arg> </bean> - + + <bean id="ehPortletTrackingCache" parent="ehCacheParent"> + <meta key="j2:cat" value="default or cache" /> + <property name="cacheName" value="portletTrackingCache" /> + </bean> + + <bean id="portletTrackingCache" class="org.apache.jetspeed.cache.impl.EhCacheImpl"> + <meta key="j2:cat" value="default or cache" /> + <constructor-arg> + <ref bean="ehPortletTrackingCache" /> + </constructor-arg> + </bean> + </beans> Modified: portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/db-ojb/distributed-ehcache.xml URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/db-ojb/distributed-ehcache.xml?rev=1610061&r1=1610060&r2=1610061&view=diff ============================================================================== --- portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/db-ojb/distributed-ehcache.xml (original) +++ portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/db-ojb/distributed-ehcache.xml Sat Jul 12 21:37:17 2014 @@ -431,7 +431,21 @@ timeToLiveSeconds="3600" memoryStoreEvictionPolicy="LRU"> </cache> - + + <cache name="portletTrackingCache" + maxElementsInMemory="1000" + eternal="true" + overflowToDisk="false" + timeToIdleSeconds="0" + timeToLiveSeconds="0" + memoryStoreEvictionPolicy="LRU"> + <cacheEventListenerFactory + class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" + properties="replicateAsynchronously=true, replicatePuts=true, + replicateUpdates=true, replicateUpdatesViaCopy=true, + replicateRemovals=true"/> + </cache> + <!-- Sample distributed cache named sampleDistributedCache1. This cache replicates using defaults. Modified: portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/db-ojb/ehcache.xml URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/db-ojb/ehcache.xml?rev=1610061&r1=1610060&r2=1610061&view=diff ============================================================================== --- portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/db-ojb/ehcache.xml (original) +++ portals/jetspeed-2/portal/branches/JETSPEED-BRANCH-2.2.2-POST-RELEASE/jetspeed-portal-resources/src/main/resources/db-ojb/ehcache.xml Sat Jul 12 21:37:17 2014 @@ -408,7 +408,15 @@ timeToLiveSeconds="3600" memoryStoreEvictionPolicy="LRU"> </cache> - + + <cache name="portletTrackingCache" + maxElementsInMemory="1000" + eternal="true" + overflowToDisk="false" + timeToIdleSeconds="0" + timeToLiveSeconds="0" + memoryStoreEvictionPolicy="LRU"/> + <!-- Sample distributed cache named sampleDistributedCache1. This cache replicates using defaults. --------------------------------------------------------------------- To unsubscribe, e-mail: jetspeed-dev-unsubscr...@portals.apache.org For additional commands, e-mail: jetspeed-dev-h...@portals.apache.org