Create an Expirable Token Using Java
On this article, im trying to create a simple java app that will hold a value that have an expiration time. I usually use this for handling request session or to hold a value that have a time limitation. Btw, i’m using EhCache for handling expiration time.
First is a simple pom.xml,
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.edw</groupId> <artifactId>ExpirableToken</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>ExpirableToken</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>2.7.4</version> </dependency> </dependencies> </project>
And a simple xml file to hold ehcache configurations,
<ehcache updateCheck="false" monitoring="off" dynamicConfig="false"> <diskStore path="java.io.tmpdir" /> <defaultCache maxEntriesLocalHeap="0" eternal="false" timeToIdleSeconds="1200" timeToLiveSeconds="1200"> </defaultCache> <!-- a 3 seconds --> <cache name="token" maxElementsInMemory="1000" eternal="false" overflowToDisk="true" diskPersistent="false" timeToIdleSeconds="3" timeToLiveSeconds="3" memoryStoreEvictionPolicy="LFU" statistics="false" transactionalMode="off"> </cache> <!-- a 10 seconds --> <cache name="action" maxElementsInMemory="1000" eternal="false" overflowToDisk="true" diskPersistent="false" timeToIdleSeconds="10" timeToLiveSeconds="10" memoryStoreEvictionPolicy="LFU" statistics="false" transactionalMode="off"> </cache> </ehcache>
And this is my java class that i use for testing,
package com.edw.expirabletoken; import java.util.Date; import net.sf.ehcache.Cache; import net.sf.ehcache.CacheManager; import net.sf.ehcache.Element; public class App { private CacheManager cacheManager= CacheManager.create(); private Cache tokenCache = cacheManager.getCache("token"); // a 3 seconds cache private Cache actionCache = cacheManager.getCache("action"); // a 10 seconds cache public App() { } private void action() throws Exception { // add into a 3 seconds cache Element regElement = new Element("name", "edwin 3 seconds"); tokenCache.put(regElement); // add into a 10 seconds cache Element regElement2 = new Element("name", "edwin 10 seconds"); actionCache.put(regElement2); // 2 seconds sleep Thread.sleep(2000); getCacheContent(); // 5 seconds sleep Thread.sleep(5000); getCacheContent(); // 10 seconds sleep Thread.sleep(10000); getCacheContent(); } private void getCacheContent() { Element element3 = tokenCache.get("name"); // get value from a 3 seconds cache if (element3 != null) { String value = (String) element3.getObjectValue(); System.out.println(new Date()+" -- "+value); } else { System.out.println(new Date()+" -- Empty Cache"); } Element element10 = actionCache.get("name"); // get value from a 10 seconds cache if (element10 != null) { String value = (String) element10.getObjectValue(); System.out.println(new Date()+" -- "+value); } else { System.out.println(new Date()+" -- Empty Cache"); } } public static void main(String[] args) throws Exception { App app = new App(); app.action(); } }
This is what the result on my Netbeans’ console,
This is my Netbeans’ project structure,
Well i hope this helped others, have fun using ehcache.
No Comments