Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Hashtable;
- import javax.naming.Context;
- import javax.naming.Name;
- import javax.naming.RefAddr;
- import javax.naming.Reference;
- import javax.naming.event.EventContext;
- import javax.naming.event.NamespaceChangeListener;
- import javax.naming.event.NamingEvent;
- import javax.naming.event.NamingExceptionEvent;
- import javax.naming.spi.ObjectFactory;
- import net.sf.ehcache.CacheManager;
- public class CacheManagerFactory implements ObjectFactory {
- private static final String CONFIGURATION_FILE = "configurationFile";
- private static final NamespaceChangeListener SHUTDOWN_LISTENER = new NamespaceChangeListener() {
- @Override
- public void namingExceptionThrown(NamingExceptionEvent event) {}
- @Override
- public void objectAdded(NamingEvent event) {}
- @Override
- public void objectRemoved(NamingEvent event) {
- Object object = event.getOldBinding().getObject();
- if (object instanceof CacheManager) {
- CacheManager cacheManager = (CacheManager) object;
- cacheManager.shutdown();
- }
- }
- @Override
- public void objectRenamed(NamingEvent event) {}
- };
- @Override
- public CacheManager getObjectInstance(Object object, Name jndiName, Context context, Hashtable<?, ?> environment) throws Exception {
- String configurationFile = null;
- if (object instanceof Reference) {
- Reference reference = (Reference) object;
- RefAddr refAddr = reference.get(CONFIGURATION_FILE);
- if (refAddr != null) {
- configurationFile = (String) refAddr.getContent();
- }
- }
- if (context instanceof EventContext) {
- EventContext eventContext = (EventContext) context;
- eventContext.addNamingListener(jndiName, EventContext.OBJECT_SCOPE, SHUTDOWN_LISTENER);
- }
- return configurationFile == null ? CacheManager.newInstance() : CacheManager.newInstance(configurationFile);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement