All Downloads are FREE. Search and download functionalities are using the official Maven repository.

webapp.runner.launch.MemcacheSessionStore Maven / Gradle / Ivy

package webapp.runner.launch;

import de.javakaffee.web.msm.MemcachedBackupSessionManager;
import org.apache.catalina.Context;

public class MemcacheSessionStore extends SessionStore {

  /**
   * Configures Memcache session manager
   *
   * @param commandLineParams Arguments map
   * @param ctx               Tomcat context
   */
  @Override
  public void configureSessionStore(CommandLineParams commandLineParams, Context ctx) {
    MemcachedBackupSessionManager manager = new MemcachedBackupSessionManager();

    if (System.getenv("MEMCACHE_SERVERS") != null) { //Using Memcache
      if (System.getenv("MEMCACHE_USERNAME") == null
          || System.getenv("MEMCACHE_PASSWORD") == null) {
        printNoConfigError();
        return;
      }
      manager.setMemcachedNodes(System.getenv("MEMCACHE_SERVERS") + ":11211");
      manager.setUsername(System.getenv("MEMCACHE_USERNAME"));
      manager.setPassword(System.getenv("MEMCACHE_PASSWORD"));
    } else if (System.getenv("MEMCACHIER_SERVERS") != null) { //Using Memcachier
      if (System.getenv("MEMCACHIER_USERNAME") == null
          || System.getenv("MEMCACHIER_PASSWORD") == null) {
        printNoConfigError();
        return;
      }
      String[] servers = System.getenv("MEMCACHIER_SERVERS").split(",");
      if (servers.length > 1) {
        for (int i = 0; i < servers.length; ++i) {
          servers[i] = "mc" + i + ":" + servers[i];
        }
      }
      String serversStr = servers[0];
      for (int i = 1; i < servers.length; ++i) {
        serversStr += "," + servers[i];
      }
      manager.setMemcachedNodes(serversStr);
      manager.setUsername(System.getenv("MEMCACHIER_USERNAME"));
      manager.setPassword(System.getenv("MEMCACHIER_PASSWORD"));
    } else if (System.getenv("MEMCACHEDCLOUD_SERVERS") != null) { //Using Memcached Cloud
      if (System.getenv("MEMCACHEDCLOUD_USERNAME") == null
          || System.getenv("MEMCACHEDCLOUD_PASSWORD") == null) {
        printNoConfigError();
        return;
      }

      manager.setMemcachedNodes(System.getenv("MEMCACHEDCLOUD_SERVERS"));
      manager.setUsername(System.getenv("MEMCACHEDCLOUD_USERNAME"));
      manager.setPassword(System.getenv("MEMCACHEDCLOUD_PASSWORD"));
    } else {
      printNoConfigError();
      return;
    }

    manager.setMemcachedProtocol("binary");
    manager.setSticky(false);
    manager.setSessionBackupAsync(false);
    manager.setEnabled(true);
    manager.setEnableStatistics(true);
    manager.setOperationTimeout(commandLineParams.sessionStoreOperationTimout);
    manager.setLockingMode(commandLineParams.sessionStoreLockingMode);
    manager.setRequestUriIgnorePattern(commandLineParams.sessionStoreIgnorePattern);

    if (commandLineParams.memcachedTranscoderFactoryClass != null) {
      manager.setTranscoderFactoryClass(commandLineParams.memcachedTranscoderFactoryClass);
    }

    ctx.setManager(manager);
  }

  private void printNoConfigError() {
    System.out.println("WARNING: memcache session store being used, but the required environment variables aren't set.");
    System.out.println("Memcache session store is configured with MEMCACHE_SERVERS, MEMCACHE_USERNAME, MEMCACHE_PASSWORD");
    System.out.println("or MEMCACHIER_SERVERS, MEMCACHIER_USERNAME, MEMCACHIER_PASSWORD");
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy