Spring Integration

org.springframework.integration.file.remote.session
Class CachingSessionFactory<F>

java.lang.Object
  extended by org.springframework.integration.file.remote.session.CachingSessionFactory<F>
All Implemented Interfaces:
org.springframework.beans.factory.DisposableBean, SessionFactory<F>

public class CachingSessionFactory<F>
extends java.lang.Object
implements SessionFactory<F>, org.springframework.beans.factory.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

Constructor Summary
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
 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 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

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.

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

setSessionWaitTimeout

public void setSessionWaitTimeout(long sessionWaitTimeout)
Sets the limit of how long to wait for a session to become available.

Throws:
java.lang.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.


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 org.springframework.beans.factory.DisposableBean

Spring Integration