Advertisement
Guest User

Untitled

a guest
Jan 29th, 2013
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.82 KB | None | 0 0
  1. import java.util.Hashtable;
  2.  
  3. import javax.naming.Context;
  4. import javax.naming.Name;
  5. import javax.naming.RefAddr;
  6. import javax.naming.Reference;
  7. import javax.naming.event.EventContext;
  8. import javax.naming.event.NamespaceChangeListener;
  9. import javax.naming.event.NamingEvent;
  10. import javax.naming.event.NamingExceptionEvent;
  11. import javax.naming.spi.ObjectFactory;
  12.  
  13. import net.sf.ehcache.CacheManager;
  14.  
  15. public class CacheManagerFactory implements ObjectFactory {
  16.  
  17.     private static final String CONFIGURATION_FILE = "configurationFile";
  18.  
  19.     private static final NamespaceChangeListener SHUTDOWN_LISTENER = new NamespaceChangeListener() {
  20.  
  21.         @Override
  22.         public void namingExceptionThrown(NamingExceptionEvent event) {}
  23.  
  24.         @Override
  25.         public void objectAdded(NamingEvent event) {}
  26.  
  27.         @Override
  28.         public void objectRemoved(NamingEvent event) {
  29.             Object object = event.getOldBinding().getObject();
  30.             if (object instanceof CacheManager) {
  31.                 CacheManager cacheManager = (CacheManager) object;
  32.                 cacheManager.shutdown();
  33.             }
  34.         }
  35.  
  36.         @Override
  37.         public void objectRenamed(NamingEvent event) {}
  38.     };
  39.  
  40.     @Override
  41.     public CacheManager getObjectInstance(Object object, Name jndiName, Context context, Hashtable<?, ?> environment) throws Exception {
  42.         String configurationFile = null;
  43.         if (object instanceof Reference) {
  44.             Reference reference = (Reference) object;
  45.             RefAddr refAddr = reference.get(CONFIGURATION_FILE);
  46.             if (refAddr != null) {
  47.                 configurationFile = (String) refAddr.getContent();
  48.             }
  49.         }
  50.         if (context instanceof EventContext) {
  51.             EventContext eventContext = (EventContext) context;
  52.             eventContext.addNamingListener(jndiName, EventContext.OBJECT_SCOPE, SHUTDOWN_LISTENER);
  53.         }
  54.         return configurationFile == null ? CacheManager.newInstance() : CacheManager.newInstance(configurationFile);
  55.     }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement