Quantcast
Channel: Yet Another Tridion Blog
Viewing all articles
Browse latest Browse all 215

Usage and Configuration of the .NET Cache Invalidation Callback

$
0
0
In the previous post, I described a way to intercept in .NET cache invalidate events generated in Java. This post presents the way to configure, use and write your own code that handles the Java generated invalidate events.

The entire code presented here is available on this blog's GIT repository. Link here.

Java Stuff

Modify your cd_storage_conf.xml (located in your .net website /bin/conf folder), and reference class com.tridion.cache.DD4TDependencyTracker as the Feature inside node ObjectCache:

<ConfigurationVersion="7.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="schemas/cd_storage_conf.xsd">
<Global>
<ObjectCacheEnabled="true">
<PolicyType="LRU"Class="com.tridion.cache.LRUPolicy">
<ParamName="MemSize"Value="512mb"/>
</Policy>

<Features>
<!--
<Feature Type="DependencyTracker" Class="com.tridion.cache.DependencyTracker"/>
-->
<FeatureType="DependencyTracker"Class="com.tridion.cache.DD4TDependencyTracker"/>
</Features>
...

Copy file cache-notifier.jar to your website's /bin/lib folder.

.NET Stuff

In your .NET project, copy DLL Com.MihaiConsulting.CacheNotifier.dll and reference it from your project.

Create a class that implements Com.MihaiConsulting.Cache.ICacheInvalidator interface:

usingCom.MihaiConsulting.Cache;

namespaceMyCacheInvalidator.Example
{
publicclassMyCacheInvalidator : ICacheInvalidator
{
publicMyCacheInvalidator()
{
CacheNotifier.Instance.Invalidator = this;
}

publicvoidInvalidate(string key)
{
//perform your own cache removal here
//cache.Remove(key);
}
}
}

This class must be set as the 'Invalidator' to call when a message comes from the CacheNotifier on the Java side. The simplest way to achieve this is to use some Dependency Injection framework and set this instance as the Invalidator for the .NET proxy Com.MihaiConsulting.Cache.CacheNotifier. In the absence of such a DI framework, the simplest solution is to set 'this' as the Invalidator at the moment of constructing the instance:

            CacheNotifier.Instance.Invalidator = this;

At this point, the method Invalidate of class MyCacheInvalidator will be called when a message is sent to the DD4TDependencyTracker in Java for method processRemove().




Viewing all articles
Browse latest Browse all 215

Trending Articles