Package com.verisign.epp.pool
Class EPPSessionPool
- java.lang.Object
-
- com.verisign.epp.pool.EPPSessionPool
-
public class EPPSessionPool extends java.lang.ObjectSingleton EPP session pool that will handle creating sessions dynamically, expiring session after an absolute timeout, keeping sessions alive based on an idle timeout, and dynamically grows and shrinks the pool based on configurable settings. One of theinitmethods must be called before useing the pool. Theinit()method uses configuration settings defined in theEnvironmentclass. TheEnvironmentsettings include the following:
- EPP.SessionPool.poolableFactoryClassName - EPPSessionPoolableFactory class used by the pool, with a default of EoT poolable factory of "com.verisign.epp.pool.EPPGenericSessionPoolableFactory".
- EPP.SessionPool.clientId - (required) Login name
- EPP.SessionPool.password - (required) password
- EPP.SessionPool.absoluteTimeout - (optional) Session absolute timeout. Default is 24 hours
EPP.SessionPool.minAbsoluteTimeout- Session minimum absolute timeout. If bothminAbsoluteTimeoutandmaxAbsoluteTimeoutis set, it will overrideabsoluteTimeoutand randomize the session absolute timeout between theminAbsoluteTimeoutandmaxAbsoluteTimeout.EPP.SessionPool.maxAbsoluteTimeout- Session maximum absolute timeout. If bothminAbsoluteTimeoutandmaxAbsoluteTimeoutis set, it will overrideabsoluteTimeoutand randomize the session absolute timeout between theminAbsoluteTimeoutandmaxAbsoluteTimeout.- EPP.SessionPool.idleTimeout - (optional) Session idle timeout used to determine when keep alive messages are sent. Default is 10 minutes.
- EPP.SessionPool.maxIdle - (optional) Maximum number of idle sessions in pool. Default is 10.
- EPP.SessionPool.maxTotal - (optional) Maximum number of active sessions in pool. Default is 10.
- EPP.SessionPool.initMaxTotal - (optional) Boolean value indicating if the
maxTotalsessions should be pre-initialized at initialization in theinit()method. Default isfalse. - EPP.SessionPool.maxWait - (optional) Maximum time in milliseconds for a client to block waiting for a pooled session. Default is 60 seconds.
- EPP.SessionPool.minIdle - (optional) Minimum number of idle sessions in the pool. Default is 0.
- EPP.SessionPool.timeBetweenEvictionRunsMillis - (optional) Frequency in milliseconds of scanning the pool for idle and absolute timeout sessions. Default is 60 seconds.
- EPP.SessionPool.borrowRetries - (optional) Number of retries to
get/create a session when calling
borrowObject(). Default is0.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringDEFAULTName of the default system session pool, which uses theborrowObject(),returnObject(EPPSession), andinvalidateObject(EPPSession).static longDEFAULT_ABSOLUTE_TIMEOUTThe default session absolute timeout.static longDEFAULT_IDLE_TIMEOUTThe default session absolute timeout.static intDEFAULT_MAX_IDLEThe default cap on the number of "sleeping" instances in the pool.static intDEFAULT_MAX_TOTALThe default cap on the total number of instances for the pool.static longDEFAULT_MAX_WAITThe default maximum amount of time (in millis) theborrowObject()method should block before throwing an exception.static intDEFAULT_MIN_IDLEThe default minimum number of "sleeping" instances in the pool before before the evictor thread (if active) spawns new objects.static longDEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLISThe default "time between eviction runs" value.protected static EPPSessionPoolinstanceSingleton instance
-
Constructor Summary
Constructors Modifier Constructor Description protectedEPPSessionPool()Default constructor as part of the Singleton Design Pattern.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description EPPSessionborrowObject()Borrows a session from the pool.EPPSessionborrowObject(java.lang.String aSystem)Borrows a session from the pool.voidclose()Closes the session pool(s) contained inEPPSessionPoolcleanly.longgetAbsoluteTimeout()Gets the session absolute timeout.java.lang.StringgetClientHost()Gets the TCP server IP address or host name to connect from.java.lang.StringgetClientId()Gets the client identifier used to authenticate.org.apache.commons.pool2.impl.GenericObjectPoolConfig<EPPPooledSession>getConfig()Gets the configuration for theGenericObjectPool.EPPSessionPoolableFactorygetFactory()Gets the factory associated with the pool.org.apache.commons.pool2.impl.GenericObjectPool<EPPPooledSession>getGenericObjectPool()Gets the containedGenericObjectPool.org.apache.commons.pool2.impl.GenericObjectPool<EPPPooledSession>getGenericObjectPool(java.lang.String aSystem)Gets the containedGenericObjectPoolfor a system.longgetIdleTimeout()Gets the session idle timeout.static EPPSessionPoolgetInstance()Gets the Singleton Design Pattern instance.longgetMaxAbsoluteTimeout()Gets the maximum session absolute timeout in milliseconds.longgetMinAbsoluteTimeout()Gets the minimum session absolute timeout in milliseconds.java.lang.StringgetPassword()Gets the password used for authentication.java.lang.StringgetServerName()Gets the TCP server IP address or host name, or the URL of the HTTP server.java.lang.IntegergetServerPort()Gets the TCP server port number.EPPSystemSessionPoolgetSystemSessionPool(java.lang.String aSystem)Gets the containedEPPSystemSessionPoolfor a system.booleanhasSystemSessionPool(java.lang.String aSystem)Does the system session pool exist?voidinit()voidinit(EPPSessionPoolableFactory aFactory, org.apache.commons.pool2.impl.GenericObjectPoolConfig<EPPPooledSession> aConfig)Initialize the pool with a specificEPPSessionPoolableFactoryandGenericObjectPoolConfigsetting.voidinvalidateObject(EPPSession aSession)Remove a borrowed session from the pool based on a known issue with it.voidinvalidateObject(java.lang.String aSystem, EPPSession aSession)Remove a borrowed session from the system session pool based on a known issue with it.booleanisInitSessionOnMake()Initialize the session via an EPP login on the call toPooledObjectFactory.makeObject()? The default value istrue.booleanisRandomAbsoluteTimeout()Returns whether the absolute timeout will be randomized between theminAbsoluteTimeoutandmaxAbsoluteTimemout.voidreturnObject(EPPSession aSession)Returned a borrowed session to the pool.voidreturnObject(java.lang.String aSystem, EPPSession aSession)Returned a borrowed session to a system session pool.voidsetClientHost(java.lang.String aClientHost)Sets the TCP server IP address or host name to connect from.voidsetInitSessionOnMake(boolean aInitSessionOnMake)Set whether to initialize the session via an EPP login on the call toPooledObjectFactory.makeObject().voidsetServerName(java.lang.String aServerName)Sets the TCP server IP address or host name or the URL of the HTTP server.voidsetServerPort(java.lang.Integer aServerPort)Sets the TCP server port number.
-
-
-
Field Detail
-
DEFAULT_ABSOLUTE_TIMEOUT
public static final long DEFAULT_ABSOLUTE_TIMEOUT
The default session absolute timeout.- See Also:
- Constant Field Values
-
DEFAULT_IDLE_TIMEOUT
public static final long DEFAULT_IDLE_TIMEOUT
The default session absolute timeout.- See Also:
- Constant Field Values
-
DEFAULT_MAX_WAIT
public static final long DEFAULT_MAX_WAIT
The default maximum amount of time (in millis) theborrowObject()method should block before throwing an exception.- See Also:
- Constant Field Values
-
DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS
public static final long DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS
The default "time between eviction runs" value.- See Also:
- Constant Field Values
-
DEFAULT_MAX_IDLE
public static final int DEFAULT_MAX_IDLE
The default cap on the number of "sleeping" instances in the pool.- See Also:
- Constant Field Values
-
DEFAULT_MAX_TOTAL
public static final int DEFAULT_MAX_TOTAL
The default cap on the total number of instances for the pool.- See Also:
- Constant Field Values
-
DEFAULT_MIN_IDLE
public static final int DEFAULT_MIN_IDLE
The default minimum number of "sleeping" instances in the pool before before the evictor thread (if active) spawns new objects.- See Also:
- Constant Field Values
-
instance
protected static EPPSessionPool instance
Singleton instance
-
DEFAULT
public static final java.lang.String DEFAULT
Name of the default system session pool, which uses theborrowObject(),returnObject(EPPSession), andinvalidateObject(EPPSession).- See Also:
- Constant Field Values
-
-
Method Detail
-
getInstance
public static EPPSessionPool getInstance()
Gets the Singleton Design Pattern instance. Ensure theinit()is called at least once.- Returns:
- Singleton instance of
EPPSessionPool.
-
init
public void init(EPPSessionPoolableFactory aFactory, org.apache.commons.pool2.impl.GenericObjectPoolConfig<EPPPooledSession> aConfig)
Initialize the pool with a specificEPPSessionPoolableFactoryandGenericObjectPoolConfigsetting.- Parameters:
aFactory- EPP session poolable object factoryaConfig- Configuration attributes for pool
-
init
public void init() throws EPPSessionPoolException- Throws:
EPPSessionPoolException
-
close
public void close()
Closes the session pool(s) contained inEPPSessionPoolcleanly. Cleanly closing the session pools means clearing the pools that will execute an EPP logout for each of the idle sessions and close the pool.
-
borrowObject
public EPPSession borrowObject() throws EPPSessionPoolException
Borrows a session from the pool. The session must be returned by either callinginvalidateObject(com.verisign.epp.interfaces.EPPSession)orreturnObject(com.verisign.epp.interfaces.EPPSession). This method will block if there are no idle sessions in the pool formaxWaittime.- Returns:
- Borrowed
EPPSessioninstance. - Throws:
EPPSessionPoolException- On error
-
borrowObject
public EPPSession borrowObject(java.lang.String aSystem) throws EPPSessionPoolException
Borrows a session from the pool. The session must be returned by either callinginvalidateObject(com.verisign.epp.interfaces.EPPSession)orreturnObject(com.verisign.epp.interfaces.EPPSession). This method will block if there are no idle sessions in the pool formaxWaittime.- Parameters:
aSystem- the system name- Returns:
- Borrowed
EPPSessioninstance. - Throws:
EPPSessionPoolException- On error
-
invalidateObject
public void invalidateObject(EPPSession aSession) throws EPPSessionPoolException
Remove a borrowed session from the pool based on a known issue with it. The should be done if an unexpected exception occurs with the session which might be due to the server being down or the session being expired.- Parameters:
aSession- Session that is invalid- Throws:
EPPSessionPoolException- On error
-
invalidateObject
public void invalidateObject(java.lang.String aSystem, EPPSession aSession) throws EPPSessionPoolExceptionRemove a borrowed session from the system session pool based on a known issue with it. The should be done if an unexpected exception occurs with the session which might be due to the server being down or the session being expired.- Parameters:
aSystem- the system nameaSession- Session that is invalid- Throws:
EPPSessionPoolException- On error
-
returnObject
public void returnObject(EPPSession aSession) throws EPPSessionPoolException
Returned a borrowed session to the pool. This session must have been returned from a call toborrowObject().- Parameters:
aSession- Session to return- Throws:
EPPSessionPoolException- On error
-
returnObject
public void returnObject(java.lang.String aSystem, EPPSession aSession) throws EPPSessionPoolExceptionReturned a borrowed session to a system session pool. This session must have been returned from a call toborrowObject(String).- Parameters:
aSystem- the system nameaSession- Session to return- Throws:
EPPSessionPoolException- On error
-
getGenericObjectPool
public org.apache.commons.pool2.impl.GenericObjectPool<EPPPooledSession> getGenericObjectPool()
Gets the containedGenericObjectPool.- Returns:
- Contained
GenericObjectPoolif defined;nullotherwise.
-
hasSystemSessionPool
public boolean hasSystemSessionPool(java.lang.String aSystem)
Does the system session pool exist?- Parameters:
aSystem- System session pool name to find- Returns:
trueif the system session pool exists;falseotherwise.
-
getSystemSessionPool
public EPPSystemSessionPool getSystemSessionPool(java.lang.String aSystem) throws EPPSessionPoolException
Gets the containedEPPSystemSessionPoolfor a system.- Parameters:
aSystem- System name for pool- Returns:
- Contained
EPPSystemSessionPool. - Throws:
EPPSessionPoolException- When system pool can not be found
-
getGenericObjectPool
public org.apache.commons.pool2.impl.GenericObjectPool<EPPPooledSession> getGenericObjectPool(java.lang.String aSystem) throws EPPSessionPoolException
Gets the containedGenericObjectPoolfor a system.- Parameters:
aSystem- System name for pool- Returns:
- Contained
GenericObjectPool. - Throws:
EPPSessionPoolException- When system pool can not be found
-
getAbsoluteTimeout
public long getAbsoluteTimeout()
Gets the session absolute timeout.- Returns:
- Returns the absolute timeout in milliseconds.
-
getMinAbsoluteTimeout
public long getMinAbsoluteTimeout()
Gets the minimum session absolute timeout in milliseconds. If bothminAbsoluteTimeoutandmaxAbsoluteTimemoutare set, they will override the setting ofabsoluteTimeout.- Returns:
- Minimum absolute timeout in milliseconds
-
getMaxAbsoluteTimeout
public long getMaxAbsoluteTimeout()
Gets the maximum session absolute timeout in milliseconds. If bothminAbsoluteTimeoutandmaxAbsoluteTimemoutare set, they will override the setting ofabsoluteTimeout.- Returns:
- Maximum absolute timeout in milliseconds
-
isRandomAbsoluteTimeout
public boolean isRandomAbsoluteTimeout()
Returns whether the absolute timeout will be randomized between theminAbsoluteTimeoutandmaxAbsoluteTimemout.- Returns:
trueif the absolute timeout will be randomized;falseotherwise.
-
getClientId
public java.lang.String getClientId()
Gets the client identifier used to authenticate.- Returns:
- Returns the client identifier.
-
getConfig
public org.apache.commons.pool2.impl.GenericObjectPoolConfig<EPPPooledSession> getConfig()
Gets the configuration for theGenericObjectPool.- Returns:
- Returns the config.
-
getFactory
public EPPSessionPoolableFactory getFactory()
Gets the factory associated with the pool.- Returns:
- Returns the factory.
-
getIdleTimeout
public long getIdleTimeout()
Gets the session idle timeout.- Returns:
- Returns the idle timeout in milliseconds.
-
getPassword
public java.lang.String getPassword()
Gets the password used for authentication.- Returns:
- Returns the password.
-
getServerName
public java.lang.String getServerName()
Gets the TCP server IP address or host name, or the URL of the HTTP server.- Returns:
- Server host name, IP address, or URL
-
setServerName
public void setServerName(java.lang.String aServerName)
Sets the TCP server IP address or host name or the URL of the HTTP server.- Parameters:
aServerName- Server host name, IP address, or URL
-
getServerPort
public java.lang.Integer getServerPort()
Gets the TCP server port number. This will benullif connecting to a HTTP server.- Returns:
- TCP server port number if defined;
nullotherwise.
-
setServerPort
public void setServerPort(java.lang.Integer aServerPort)
Sets the TCP server port number.- Parameters:
aServerPort- TCP server port number
-
getClientHost
public java.lang.String getClientHost()
Gets the TCP server IP address or host name to connect from. Anullvalue will use the loop back.- Returns:
- Client host name or IP address if defined;
nullotherwise.
-
setClientHost
public void setClientHost(java.lang.String aClientHost)
Sets the TCP server IP address or host name to connect from. Anullvalue will use the loop back.- Parameters:
aClientHost- Client host name or IP address
-
isInitSessionOnMake
public boolean isInitSessionOnMake()
Initialize the session via an EPP login on the call toPooledObjectFactory.makeObject()? The default value istrue. This also impacts executing end session via the EPP logout on the call toPooledObjectFactory.destroyObject(PooledObject).- Returns:
truethe session will be initialized via an EPP login on the call toPooledObjectFactory.makeObject();falseotherwise
-
setInitSessionOnMake
public void setInitSessionOnMake(boolean aInitSessionOnMake)
Set whether to initialize the session via an EPP login on the call toPooledObjectFactory.makeObject(). The default value istrue. This also impacts executing end session via the EPP logout on the call toPooledObjectFactory.destroyObject(PooledObject).- Parameters:
aInitSessionOnMake-truethe session will be initialized via an EPP login on the call toPooledObjectFactory.makeObject();falseotherwise
-
-