Class EPPSystemSessionPool

java.lang.Object
com.verisign.epp.pool.EPPSystemSessionPool

public class EPPSystemSessionPool extends Object
EPP session pool for a specific system name 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 the init methods must be called before useing the pool. The init() method uses configuration settings defined in the Environment class. The Environment settings include the following based on the system name defined by <system>:

  • EPP.SessionPool.<system>.poolableFactoryClassName - EPPSessionPoolableFactory class used by the pool, with a default of EoT poolable factory of "com.verisign.epp.pool.EPPGenericSessionPoolableFactory".
  • EPP.SessionPool<system>.clientId - (required) Login name
  • EPP.SessionPool<system>.password - (required) password
  • EPP.SessionPool<system>.serverName - Name or IP address of TCP server or URL of HTTP server
  • EPP.SessionPool<system>.serverPort - (optional) TCP server port number. This is not used for a HTTP server connection
  • EPP.SessionPool<system>.absoluteTimeout - (optional) Session absolute timeout. Default is 24 hours.
  • EPP.SessionPool<system>.minAbsoluteTimeout - Session minimum absolute timeout. If both minAbsoluteTimeout and maxAbsoluteTimeout is set, it will override absoluteTimeout and randomize the session absolute timeout between the minAbsoluteTimeout and maxAbsoluteTimeout.
  • EPP.SessionPool<system>.maxAbsoluteTimeout - Session maximum absolute timeout. If both minAbsoluteTimeout and maxAbsoluteTimeout is set, it will override absoluteTimeout and randomize the session absolute timeout between the minAbsoluteTimeout and maxAbsoluteTimeout.
  • EPP.SessionPool<system>.idleTimeout - (optional) Session idle timeout used to determine when keep alive messages are sent. Default is 10 minutes.
  • EPP.SessionPool<system>.maxIdle - (optional) Maximum number of idle sessions in pool. Default is 10.
  • EPP.SessionPool<system>.initMaxTotal - (optional) Boolean value indicating if the maxTotal sessions should be pre-initialized at initialization in the init() method. Default is false.
  • EPP.SessionPool<system>.maxTotal - (optional) Maximum number of active sessions in pool. Default is 10.
  • EPP.SessionPool<system>.maxWait - (optional) Maximum time in milliseconds for a client to block waiting for a pooled session. Default is 60 seconds.
  • EPP.SessionPool<system>.minIdle - (optional) Minimum number of idle sessions in the pool. Default is 0.
  • EPP.SessionPool<system>.timeBetweenEvictionRunsMillis - (optional) Frequency in milliseconds of scanning the pool for idle and absolute timeout sessions. Default is 60 seconds.
  • EPP.SessionPool<system>.borrowRetries - (optional) Number of retries to get/create a session when calling borrowObject(). Default is 0.
  • EPP.SessionPool<system>.SSLProtocol - (optional) SSL protocol to use. If defined the pool will have its own SSL configuration. The required SSL properties include SSLKeyStore, SSLKeyFileName, and SSLKeyPassPhrase
  • EPP.SessionPool<system>.SSLKeyStore - (optional) Type of identity KeyStore. Required if SSLProtocol is defined for pool.
  • EPP.SessionPool<system>.SSLKeyFileName - (optional) Name of the identity KeyStore file. Required if SSLProtocol is defined for pool.
  • EPP.SessionPool<system>.SSLPassPhrase - (optional) The passphrase/password to access the identity KeyStore file defined by SSLKeyFileName. Required if SSLProtocol is defined for pool.
  • EPP.SessionPool<system>.SSLKeyPassPhrase - (optional) the passphrase/password for the private key stored in the identity KeyStore.
  • EPP.SessionPool<system>.SSLTrustStore - (optional) KeyStore type of the Trust Store
  • EPP.SessionPool<system>.SSLTrustStoreFileName - (optional) The name of the Trust Store file. If not defined for the pool, the default JDK Trust Store will be used that is located at the path $JAVA_HOME/lib/security/cacerts.
  • EPP.SessionPool<system>.SSLTrustStorePassPhrase - (optional) The passphrase/password to access the Trust Store file defined by the pool SSLTrustStoreFileName property.
  • EPP.SessionPool<system>.SSLEnabledProtocols - (optional) The space delimited list of enabled SSL protocols.
  • EPP.SessionPool<system>.SSLEnabledCipherSuites - (optional) The space delimited list of SSL cipher suites.
  • EPP.SessionPool<system>.SSLDebug - (optional) Defines the SSL debug Java system property javax.net.debug value.
  • Field Details

    • DEFAULT_ABSOLUTE_TIMEOUT

      public static final long DEFAULT_ABSOLUTE_TIMEOUT
      The default session absolute timeout.
      See Also:
    • DEFAULT_IDLE_TIMEOUT

      public static final long DEFAULT_IDLE_TIMEOUT
      The default session absolute timeout.
      See Also:
    • DEFAULT_MAX_WAIT

      public static final long DEFAULT_MAX_WAIT
      The default maximum amount of time (in millis) the borrowObject() method should block before throwing an exception.
      See Also:
    • 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:
    • DEFAULT_MAX_IDLE

      public static final int DEFAULT_MAX_IDLE
      The default cap on the number of "sleeping" instances in the pool.
      See Also:
    • DEFAULT_MAX_TOTAL

      public static final int DEFAULT_MAX_TOTAL
      The default cap on the total number of instances for the pool.
      See Also:
    • 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:
  • Method Details

    • init

      public void init(EPPSessionPoolableFactory aFactory, org.apache.commons.pool2.impl.GenericObjectPoolConfig<EPPPooledSession> aConfig)
      Initialize the pool with a specific EPPSessionPoolableFactory and GenericObjectPoolConfig<EPPPooledSession> setting.
      Parameters:
      aFactory - EPP session poolable object factory
      aConfig - Configuration attributes for pool
    • init

      public void init() throws EPPSessionPoolException
      Initialize the pool using configuration values defined by Environment class. The Environment class and logging must be initialized before calling this method.
      Throws:
      EPPSessionPoolException - On error
    • close

      public void close()
      Closes the session pool contained in EPPSystemSessionPool cleanly. Cleanly closing the pool means clearing the pool 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 calling invalidateObject(com.verisign.epp.interfaces.EPPSession) or returnObject(com.verisign.epp.interfaces.EPPSession). This method will block if there are no idle sessions in the pool for maxWait time.
      Returns:
      Borrowed EPPSession instance.
      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
    • returnObject

      public void returnObject(EPPSession aSession) throws EPPSessionPoolException
      Returned a borrowed session to the pool. This session must have been returned from a call to borrowObject().
      Parameters:
      aSession - Session to return
      Throws:
      EPPSessionPoolException - On error
    • getGenericObjectPool

      public org.apache.commons.pool2.impl.GenericObjectPool<EPPPooledSession> getGenericObjectPool()
      Gets the contained GenericObjectPool<EPPPooledSession>.
      Returns:
      Contained GenericObjectPool<EPPPooledSession>
    • getAbsoluteTimeout

      public long getAbsoluteTimeout()
      Gets the session absolute timeout.
      Returns:
      Returns the absolute timeout in milliseconds.
    • getClientId

      public 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 the GenericObjectPool<EPPPooledSession>.
      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 String getPassword()
      Gets the password used for authentication.
      Returns:
      Returns the password.
    • getSystem

      public String getSystem()
      Gets the system name associated with this pool.
      Returns:
      Pool system name
    • getServerName

      public 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(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 Integer getServerPort()
      Gets the TCP server port number. This will be null if connecting to a HTTP server.
      Returns:
      TCP server port number if defined; null otherwise.
    • setServerPort

      public void setServerPort(Integer aServerPort)
      Sets the TCP server port number.
      Parameters:
      aServerPort - TCP server port number
    • getClientHost

      public String getClientHost()
      Gets the TCP server IP address or host name to connect from. A null value will use the loop back.
      Returns:
      Client host name or IP address if defined;null otherwise.
    • setClientHost

      public void setClientHost(String aClientHost)
      Sets the TCP server IP address or host name to connect from. A null value 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 to EPPGenericSessionPoolableFactory.makeObject()? The default value is true. This also impacts executing end session via the EPP logout on the call to EPPGenericSessionPoolableFactory.destroyObject(PooledObject).
      Returns:
      true the session will be initialized via an EPP login on the call to EPPGenericSessionPoolableFactory.makeObject(); false otherwise
    • setInitSessionOnMake

      public void setInitSessionOnMake(boolean aInitSessionOnMake)
      Set whether to initialize the session via an EPP login on the call to EPPGenericSessionPoolableFactory.makeObject(). The default value is true. This also impacts executing end session via the EPP logout on the call to EPPGenericSessionPoolableFactory.destroyObject(PooledObject).
      Parameters:
      aInitSessionOnMake - true the session will be initialized via an EPP login on the call to EPPGenericSessionPoolableFactory.makeObject(); false otherwise