Class CachingSessionFactory<F>

java.lang.Object
org.springframework.integration.file.remote.session.CachingSessionFactory<F>
Type Parameters:
F - the target system file type.
All Implemented Interfaces:
DisposableBean, SessionFactory<F>

public class CachingSessionFactory<F>
extends Object
implements SessionFactory<F>, DisposableBean
A SessionFactory implementation that caches Sessions for reuse without requiring reconnection each time the Session is retrieved from the factory. This implementation wraps and delegates to a target SessionFactory instance.
Since:
2.0
Author:
Josh Long, Oleg Zhurakousky, Mark Fisher, Gary Russell, Alen Turkovic, Artem Bilan
  • Nested Class Summary

    Nested Classes 
    Modifier and Type Class Description
    class  CachingSessionFactory.CachedSession  
  • Constructor Summary

    Constructors 
    Constructor Description
    CachingSessionFactory​(SessionFactory<F> sessionFactory)
    Create a CachingSessionFactory with an unlimited number of sessions.
    CachingSessionFactory​(SessionFactory<F> sessionFactory, int sessionCacheSize)
    Create a CachingSessionFactory with the specified session limit.
  • Method Summary

    Modifier and Type Method Description
    void destroy()
    Remove (close) any unused sessions in the pool.
    Session<F> getSession()
    Get a session from the pool (or block if none available).
    void resetCache()
    Clear the cache of sessions; also any in-use sessions will be closed when returned to the cache.
    void setPoolSize​(int poolSize)
    Modify the target session pool size; the actual pool size will adjust up/down to this size as and when sessions are requested or retrieved.
    void setSessionWaitTimeout​(long sessionWaitTimeout)
    Sets the limit of how long to wait for a session to become available.
    void setTestSession​(boolean testSession)
    Set to true to test the session when checking one out from the cache.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • CachingSessionFactory

      public CachingSessionFactory​(SessionFactory<F> sessionFactory)
      Create a CachingSessionFactory with an unlimited number of sessions.
      Parameters:
      sessionFactory - the underlying session factory.
    • CachingSessionFactory

      public CachingSessionFactory​(SessionFactory<F> sessionFactory, int sessionCacheSize)
      Create a CachingSessionFactory with the specified session limit. By default, if no sessions are available in the cache, and the size limit has been reached, calling threads will block until a session is available.

      Do not cache a DelegatingSessionFactory, cache each delegate therein instead.

      Parameters:
      sessionFactory - The underlying session factory.
      sessionCacheSize - The maximum cache size.
      See Also:
      setSessionWaitTimeout(long), setPoolSize(int)
  • Method Details

    • setSessionWaitTimeout

      public void setSessionWaitTimeout​(long sessionWaitTimeout)
      Sets the limit of how long to wait for a session to become available.
      Parameters:
      sessionWaitTimeout - the session wait timeout.
      Throws:
      IllegalStateException - if the wait expires prior to a Session becoming available.
    • setPoolSize

      public void setPoolSize​(int poolSize)
      Modify the target session pool size; the actual pool size will adjust up/down to this size as and when sessions are requested or retrieved.
      Parameters:
      poolSize - The pool size.
    • setTestSession

      public void setTestSession​(boolean testSession)
      Set to true to test the session when checking one out from the cache.
      Parameters:
      testSession - true to test.
      Since:
      5.1
    • getSession

      public Session<F> getSession()
      Get a session from the pool (or block if none available).
      Specified by:
      getSession in interface SessionFactory<F>
    • destroy

      public void destroy()
      Remove (close) any unused sessions in the pool.
      Specified by:
      destroy in interface DisposableBean
    • resetCache

      public void resetCache()
      Clear the cache of sessions; also any in-use sessions will be closed when returned to the cache.