if (null == listenerConfig.getFullyQualifiedClassPath()) { continue; if (!listenerConfig.getFullyQualifiedClassPath().startsWith("net.sf.ehcache.") && LOG.isWarnEnabled()) { LOG.warn("The non-standard CacheEventListenerFactory '" + listenerConfig.getFullyQualifiedClassPath() + "' is used with a clustered Terracotta cache, " + "if the purpose of this listener is replication it is not supported in a clustered context");
/** * Tries to load the class specified otherwise defaults to null. * * @param factoryConfiguration * @param loader */ private static CacheEventListener createCacheEventListener( CacheConfiguration.CacheEventListenerFactoryConfiguration factoryConfiguration, ClassLoader loader) { String className = null; CacheEventListener cacheEventListener = null; if (factoryConfiguration != null) { className = factoryConfiguration.getFullyQualifiedClassPath(); } if (className == null) { LOG.debug("CacheEventListener factory not configured. Skipping..."); } else { CacheEventListenerFactory factory = (CacheEventListenerFactory) ClassLoaderUtil.createNewInstance(loader, className); Properties properties = PropertyUtil.parseProperties(factoryConfiguration.getProperties(), factoryConfiguration.getPropertySeparator()); cacheEventListener = factory.createCacheEventListener(properties); } return cacheEventListener; }
private void cloneCacheEventListenerConfigurations(CacheConfiguration config) { List<CacheEventListenerFactoryConfiguration> copy = new ArrayList<CacheEventListenerFactoryConfiguration>(); for (CacheEventListenerFactoryConfiguration item : cacheEventListenerConfigurations) { copy.add(item.clone()); } config.cacheEventListenerConfigurations = copy; }
if (null == listenerConfig.getFullyQualifiedClassPath()) { continue; if (!listenerConfig.getFullyQualifiedClassPath().startsWith("net.sf.ehcache.") && LOG.isWarnEnabled()) { LOG.warn("The non-standard CacheEventListenerFactory '" + listenerConfig.getFullyQualifiedClassPath() + "' is used with a clustered Terracotta cache, " + "if the purpose of this listener is replication it is not supported in a clustered context");
if (null == listenerConfig.getFullyQualifiedClassPath()) { continue; if (!listenerConfig.getFullyQualifiedClassPath().startsWith("net.sf.ehcache.") && LOG.isWarnEnabled()) { LOG.warn("The non-standard CacheEventListenerFactory '" + listenerConfig.getFullyQualifiedClassPath() + "' is used with a clustered Terracotta cache, " + "if the purpose of this listener is replication it is not supported in a clustered context");
if (null == listenerConfig.getFullyQualifiedClassPath()) { continue; if (!listenerConfig.getFullyQualifiedClassPath().startsWith("net.sf.ehcache.") && LOG.isWarnEnabled()) { LOG.warn("The non-standard CacheEventListenerFactory '" + listenerConfig.getFullyQualifiedClassPath() + "' is used with a clustered Terracotta cache, " + "if the purpose of this listener is replication it is not supported in a clustered context");
/** * Adds all common child elements with the "defaultCache" element in ehcache.xsd * * @param element * @param cacheConfiguration */ public static void addCommonChildElementsWithDefaultCache(NodeElement element, CacheConfiguration cacheConfiguration) { for (FactoryConfigurationElement child : getAllFactoryElements(element, "cacheEventListenerFactory", cacheConfiguration .getCacheEventListenerConfigurations())) { CacheEventListenerFactoryConfiguration factoryConfiguration = (CacheEventListenerFactoryConfiguration) child .getFactoryConfiguration(); child.addAttribute(new SimpleNodeAttribute("listenFor", factoryConfiguration.getListenFor())); element.addChildElement(child); } addAllFactoryConfigsAsChildElements(element, "cacheExtensionFactory", cacheConfiguration.getCacheExtensionConfigurations()); addAllFactoryConfigsAsChildElements(element, "cacheLoaderFactory", cacheConfiguration.getCacheLoaderConfigurations()); addBootstrapCacheLoaderFactoryConfigurationElement(element, cacheConfiguration); addCacheExceptionHandlerFactoryConfigurationElement(element, cacheConfiguration); addSizeOfPolicyConfigurationElement(element, cacheConfiguration); if (!cacheConfiguration.isOverflowToDisk() || !cacheConfiguration.isDiskPersistent()) { addPersistenceConfigurationElement(element, cacheConfiguration); } addCopyStrategyConfigurationElement(element, cacheConfiguration); addElementValueComparatorConfigurationElement(element, cacheConfiguration); addCacheWriterConfigurationElement(element, cacheConfiguration); addAllFactoryConfigsAsChildElements(element, "cacheDecoratorFactory", cacheConfiguration.getCacheDecoratorConfigurations()); addTerracottaConfigurationElement(element, cacheConfiguration); addPinningElement(element, cacheConfiguration); addSearchElement(element, cacheConfiguration); }
/** * Adds all common child elements with the "defaultCache" element in ehcache.xsd * * @param element * @param cacheConfiguration */ public static void addCommonChildElementsWithDefaultCache(NodeElement element, CacheConfiguration cacheConfiguration) { for (FactoryConfigurationElement child : getAllFactoryElements(element, "cacheEventListenerFactory", cacheConfiguration .getCacheEventListenerConfigurations())) { CacheEventListenerFactoryConfiguration factoryConfiguration = (CacheEventListenerFactoryConfiguration) child .getFactoryConfiguration(); child.addAttribute(new SimpleNodeAttribute("listenFor", factoryConfiguration.getListenFor())); element.addChildElement(child); } addAllFactoryConfigsAsChildElements(element, "cacheExtensionFactory", cacheConfiguration.getCacheExtensionConfigurations()); addAllFactoryConfigsAsChildElements(element, "cacheLoaderFactory", cacheConfiguration.getCacheLoaderConfigurations()); addBootstrapCacheLoaderFactoryConfigurationElement(element, cacheConfiguration); addCacheExceptionHandlerFactoryConfigurationElement(element, cacheConfiguration); addSizeOfPolicyConfigurationElement(element, cacheConfiguration); if (!cacheConfiguration.isOverflowToDisk() || !cacheConfiguration.isDiskPersistent()) { addPersistenceConfigurationElement(element, cacheConfiguration); } addCopyStrategyConfigurationElement(element, cacheConfiguration); addElementValueComparatorConfigurationElement(element, cacheConfiguration); addCacheWriterConfigurationElement(element, cacheConfiguration); addAllFactoryConfigsAsChildElements(element, "cacheDecoratorFactory", cacheConfiguration.getCacheDecoratorConfigurations()); addTerracottaConfigurationElement(element, cacheConfiguration); addPinningElement(element, cacheConfiguration); addSearchElement(element, cacheConfiguration); }
/** * Adds all common child elements with the "defaultCache" element in ehcache.xsd * * @param element * @param cacheConfiguration */ public static void addCommonChildElementsWithDefaultCache(NodeElement element, CacheConfiguration cacheConfiguration) { for (FactoryConfigurationElement child : getAllFactoryElements(element, "cacheEventListenerFactory", cacheConfiguration .getCacheEventListenerConfigurations())) { CacheEventListenerFactoryConfiguration factoryConfiguration = (CacheEventListenerFactoryConfiguration) child .getFactoryConfiguration(); child.addAttribute(new SimpleNodeAttribute("listenFor", factoryConfiguration.getListenFor())); element.addChildElement(child); } addAllFactoryConfigsAsChildElements(element, "cacheExtensionFactory", cacheConfiguration.getCacheExtensionConfigurations()); addAllFactoryConfigsAsChildElements(element, "cacheLoaderFactory", cacheConfiguration.getCacheLoaderConfigurations()); addBootstrapCacheLoaderFactoryConfigurationElement(element, cacheConfiguration); addCacheExceptionHandlerFactoryConfigurationElement(element, cacheConfiguration); addSizeOfPolicyConfigurationElement(element, cacheConfiguration); if (!cacheConfiguration.isOverflowToDisk() || !cacheConfiguration.isDiskPersistent()) { addPersistenceConfigurationElement(element, cacheConfiguration); } addCopyStrategyConfigurationElement(element, cacheConfiguration); addElementValueComparatorConfigurationElement(element, cacheConfiguration); addCacheWriterConfigurationElement(element, cacheConfiguration); addAllFactoryConfigsAsChildElements(element, "cacheDecoratorFactory", cacheConfiguration.getCacheDecoratorConfigurations()); addTerracottaConfigurationElement(element, cacheConfiguration); addPinningElement(element, cacheConfiguration); addSearchElement(element, cacheConfiguration); }
/** * Tries to load the class specified otherwise defaults to null. * * @param factoryConfiguration */ private static CacheEventListener createCacheEventListener( CacheConfiguration.CacheEventListenerFactoryConfiguration factoryConfiguration) { String className = null; CacheEventListener cacheEventListener = null; if (factoryConfiguration != null) { className = factoryConfiguration.getFullyQualifiedClassPath(); } if (className == null) { LOG.debug("CacheEventListener factory not configured. Skipping..."); } else { CacheEventListenerFactory factory = (CacheEventListenerFactory) ClassLoaderUtil.createNewInstance(className); Properties properties = PropertyUtil.parseProperties(factoryConfiguration.getProperties(), factoryConfiguration.getPropertySeparator()); cacheEventListener = factory.createCacheEventListener(properties); } return cacheEventListener; }
/** * Tries to load the class specified otherwise defaults to null. * * @param factoryConfiguration * @param loader */ private static CacheEventListener createCacheEventListener( CacheConfiguration.CacheEventListenerFactoryConfiguration factoryConfiguration, ClassLoader loader) { String className = null; CacheEventListener cacheEventListener = null; if (factoryConfiguration != null) { className = factoryConfiguration.getFullyQualifiedClassPath(); } if (className == null) { LOG.debug("CacheEventListener factory not configured. Skipping..."); } else { CacheEventListenerFactory factory = (CacheEventListenerFactory) ClassLoaderUtil.createNewInstance(loader, className); Properties properties = PropertyUtil.parseProperties(factoryConfiguration.getProperties(), factoryConfiguration.getPropertySeparator()); cacheEventListener = factory.createCacheEventListener(properties); } return cacheEventListener; }
/** * Tries to load the class specified otherwise defaults to null. * * @param factoryConfiguration * @param loader */ private static CacheEventListener createCacheEventListener( CacheConfiguration.CacheEventListenerFactoryConfiguration factoryConfiguration, ClassLoader loader) { String className = null; CacheEventListener cacheEventListener = null; if (factoryConfiguration != null) { className = factoryConfiguration.getFullyQualifiedClassPath(); } if (className == null) { LOG.debug("CacheEventListener factory not configured. Skipping..."); } else { CacheEventListenerFactory factory = (CacheEventListenerFactory) ClassLoaderUtil.createNewInstance(loader, className); Properties properties = PropertyUtil.parseProperties(factoryConfiguration.getProperties(), factoryConfiguration.getPropertySeparator()); cacheEventListener = factory.createCacheEventListener(properties); } return cacheEventListener; }
/** * Tries to load the class specified otherwise defaults to null. * * @param factoryConfiguration */ private static CacheEventListener createCacheEventListener( CacheConfiguration.CacheEventListenerFactoryConfiguration factoryConfiguration) { String className = null; CacheEventListener cacheEventListener = null; if (factoryConfiguration != null) { className = factoryConfiguration.getFullyQualifiedClassPath(); } if (className == null) { LOG.debug("CacheEventListener factory not configured. Skipping..."); } else { CacheEventListenerFactory factory = (CacheEventListenerFactory) ClassLoaderUtil.createNewInstance(className); Properties properties = PropertyUtil.parseProperties(factoryConfiguration.getProperties(), factoryConfiguration.getPropertySeparator()); cacheEventListener = factory.createCacheEventListener(properties); } return cacheEventListener; }
/** * Tries to load the class specified otherwise defaults to null. * * @param factoryConfiguration */ private static CacheEventListener createCacheEventListener( CacheConfiguration.CacheEventListenerFactoryConfiguration factoryConfiguration) { String className = null; CacheEventListener cacheEventListener = null; if (factoryConfiguration != null) { className = factoryConfiguration.getFullyQualifiedClassPath(); } if (className == null) { LOG.debug("CacheEventListener factory not configured. Skipping..."); } else { CacheEventListenerFactory factory = (CacheEventListenerFactory) ClassLoaderUtil.createNewInstance(className); Properties properties = PropertyUtil.parseProperties(factoryConfiguration.getProperties(), factoryConfiguration.getPropertySeparator()); cacheEventListener = factory.createCacheEventListener(properties); } return cacheEventListener; }
@Override @Nonnull public CacheConfiguration.CacheEventListenerFactoryConfiguration createCacheReplicatorConfiguration(final CacheSettings settings, final boolean selfLoadingCache) { final boolean replicateAsynchronously = settings.getReplicateAsynchronously(false); final boolean replicateViaCopy = settings.getReplicateViaCopy(false); // If the cache is self loading there is no need to replicate puts or updates as the loader takes care of // populating the cache as needed. // Else if the cache is replicating via copy then puts and updates should be replicated. // Else replicating puts is dangerous as it may lead to invalidations ping ponging between nodes. Whether to // replicate updates is ambiguous, but setting it may help to prevent stale caches while being less vulnerable // to the invalidation storm that comes with simply replicating puts. final boolean replicatePuts = !selfLoadingCache && replicateViaCopy; final boolean replicateUpdates = !selfLoadingCache; final String cacheProperties = String.format(CACHE_PROPERTIES, replicateAsynchronously, replicatePuts, replicateViaCopy, replicateUpdates, replicateViaCopy); return new CacheConfiguration.CacheEventListenerFactoryConfiguration() .className(RMICacheReplicatorFactory.class.getName()) .properties(cacheProperties); } }
static CacheManager workAroundCache95(CacheManager ehCacheManager) { final CacheConfiguration defaultConfig = ehCacheManager.getConfiguration().getDefaultCacheConfiguration(); final CacheConfiguration.CacheEventListenerFactoryConfiguration listenerConfig = new CacheConfiguration.CacheEventListenerFactoryConfiguration() .className(NoopCacheEventListenerFactory.class.getName()); defaultConfig.clone().addCacheEventListenerFactory(listenerConfig); if (defaultConfig.getCacheEventListenerConfigurations().isEmpty()) { LOG.warn("It looks like CACHE-95 has been fixed. This workaround should be removed."); } else { LOG.debug("Working around CACHE-95"); } return ehCacheManager; }
/** * A factory method to create a RegisteredEventListeners * @param loader */ private static void registerCacheListeners(CacheConfiguration cacheConfiguration, RegisteredEventListeners registeredEventListeners, ClassLoader loader) { List cacheEventListenerConfigurations = cacheConfiguration.getCacheEventListenerConfigurations(); for (Object cacheEventListenerConfiguration : cacheEventListenerConfigurations) { CacheConfiguration.CacheEventListenerFactoryConfiguration factoryConfiguration = (CacheConfiguration.CacheEventListenerFactoryConfiguration) cacheEventListenerConfiguration; CacheEventListener cacheEventListener = createCacheEventListener(factoryConfiguration, loader); registeredEventListeners.registerListener(cacheEventListener, factoryConfiguration.getListenFor()); } }
/** * A factory method to create a RegisteredEventListeners * @param loader */ private static void registerCacheListeners(CacheConfiguration cacheConfiguration, RegisteredEventListeners registeredEventListeners, ClassLoader loader) { List cacheEventListenerConfigurations = cacheConfiguration.getCacheEventListenerConfigurations(); for (Object cacheEventListenerConfiguration : cacheEventListenerConfigurations) { CacheConfiguration.CacheEventListenerFactoryConfiguration factoryConfiguration = (CacheConfiguration.CacheEventListenerFactoryConfiguration) cacheEventListenerConfiguration; CacheEventListener cacheEventListener = createCacheEventListener(factoryConfiguration, loader); registeredEventListeners.registerListener(cacheEventListener, factoryConfiguration.getListenFor()); } }
/** * A factory method to create a RegisteredEventListeners */ private static void registerCacheListeners(CacheConfiguration cacheConfiguration, RegisteredEventListeners registeredEventListeners) { List cacheEventListenerConfigurations = cacheConfiguration.getCacheEventListenerConfigurations(); for (Object cacheEventListenerConfiguration : cacheEventListenerConfigurations) { CacheConfiguration.CacheEventListenerFactoryConfiguration factoryConfiguration = (CacheConfiguration.CacheEventListenerFactoryConfiguration) cacheEventListenerConfiguration; CacheEventListener cacheEventListener = createCacheEventListener(factoryConfiguration); registeredEventListeners.registerListener(cacheEventListener, factoryConfiguration.getListenFor()); } }
/** * @return this factory configuration instance * @see #setListenFor(String) */ public final CacheEventListenerFactoryConfiguration listenFor(String listenFor) { setListenFor(listenFor); return this; }