类 ExtendedConnectionDataSourceProxy

  • 所有已实现的接口:
    java.sql.Wrapper, javax.sql.CommonDataSource, javax.sql.DataSource, org.springframework.beans.factory.InitializingBean, org.springframework.jdbc.datasource.SmartDataSource

    public class ExtendedConnectionDataSourceProxy
    extends java.lang.Object
    implements org.springframework.jdbc.datasource.SmartDataSource, org.springframework.beans.factory.InitializingBean
    Implementation of SmartDataSource that is capable of keeping a single JDBC Connection which is NOT closed after each use even if Connection.close() is called. The connection can be kept open over multiple transactions when used together with any of Spring's PlatformTransactionManager implementations.

    Loosely based on the SingleConnectionDataSource implementation in Spring Core. Intended to be used with the JdbcCursorItemReader to provide a connection that remains open across transaction boundaries, It remains open for the life of the cursor, and can be shared with the main transaction of the rest of the step processing.

    Once close suppression has been turned on for a connection, it will be returned for the first getConnection() call. Any subsequent calls to getConnection() will retrieve a new connection from the wrapped DataSource until the DataSourceUtils queries whether the connection should be closed or not by calling shouldClose(Connection) for the close-suppressed Connection. At that point the cycle starts over again, and the next getConnection() call will have the Connection that is being close-suppressed returned. This allows the use of the close-suppressed Connection to be the main Connection for an extended data access process. The close suppression is turned off by calling stopCloseSuppression(Connection).

    This class is not multi-threading capable.

    The connection returned will be a close-suppressing proxy instead of the physical Connection. Be aware that you will not be able to cast this to a native OracleConnection or the like anymore; you'd be required to use Wrapper.unwrap(Class).

    从以下版本开始:
    2.0
    作者:
    Thomas Risberg
    另请参阅:
    getConnection(), Connection.close(), DataSourceUtils.releaseConnection(java.sql.Connection, javax.sql.DataSource), Wrapper.unwrap(Class)
    • 方法概要

      所有方法 实例方法 具体方法 
      修饰符和类型方法说明
      voidafterPropertiesSet() 
      protected java.sql.ConnectiongetCloseSuppressingConnectionProxy​(java.sql.Connection target)
      Wrap the given Connection with a proxy that delegates every method call to it but suppresses close calls.
      java.sql.ConnectiongetConnection() 
      java.sql.ConnectiongetConnection​(java.lang.String username, java.lang.String password) 
      intgetLoginTimeout() 
      java.io.PrintWritergetLogWriter() 
      java.util.logging.LoggergetParentLogger()
      Added due to JDK 7 compatibility.
      booleanisCloseSuppressionActive​(java.sql.Connection connection)
      Return the status of close suppression being activated for a given Connection
      booleanisWrapperFor​(java.lang.Class<?> iface)
      Performs only a 'shallow' non-recursive check of self's and delegate's class to retain Java 5 compatibility.
      voidsetDataSource​(javax.sql.DataSource dataSource)
      Setter for the DataSource that is to be wrapped.
      voidsetLoginTimeout​(int seconds) 
      voidsetLogWriter​(java.io.PrintWriter out) 
      booleanshouldClose​(java.sql.Connection connection) 
      voidstartCloseSuppression​(java.sql.Connection connection) 
      voidstopCloseSuppression​(java.sql.Connection connection) 
      <T> Tunwrap​(java.lang.Class<T> iface)
      Returns either self or delegate (in this order) if one of them can be cast to supplied parameter class.
      • 从类继承的方法 java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • 从接口继承的方法 javax.sql.CommonDataSource

        createShardingKeyBuilder
      • 从接口继承的方法 javax.sql.DataSource

        createConnectionBuilder
    • 构造器详细资料

      • ExtendedConnectionDataSourceProxy

        public ExtendedConnectionDataSourceProxy​(javax.sql.DataSource dataSource)
        Constructor that takes as a parameter with the DataSource to be wrapped.
        参数:
        dataSource - DataSource to be used
    • 方法详细资料

      • setDataSource

        public void setDataSource​(javax.sql.DataSource dataSource)
        Setter for the DataSource that is to be wrapped.
        参数:
        dataSource - the DataSource
      • shouldClose

        public boolean shouldClose​(java.sql.Connection connection)
        指定者:
        shouldClose 在接口中 org.springframework.jdbc.datasource.SmartDataSource
        另请参阅:
        SmartDataSource
      • isCloseSuppressionActive

        public boolean isCloseSuppressionActive​(java.sql.Connection connection)
        Return the status of close suppression being activated for a given Connection
        参数:
        connection - the Connection that the close suppression status is requested for
        返回:
        true or false
      • startCloseSuppression

        public void startCloseSuppression​(java.sql.Connection connection)
        参数:
        connection - the Connection that close suppression is requested for
      • stopCloseSuppression

        public void stopCloseSuppression​(java.sql.Connection connection)
        参数:
        connection - the Connection that close suppression should be turned off for
      • getConnection

        public java.sql.Connection getConnection()
                                          throws java.sql.SQLException
        指定者:
        getConnection 在接口中 javax.sql.DataSource
        抛出:
        java.sql.SQLException
      • getConnection

        public java.sql.Connection getConnection​(java.lang.String username,
                                                 java.lang.String password)
                                          throws java.sql.SQLException
        指定者:
        getConnection 在接口中 javax.sql.DataSource
        抛出:
        java.sql.SQLException
      • getLogWriter

        public java.io.PrintWriter getLogWriter()
                                         throws java.sql.SQLException
        指定者:
        getLogWriter 在接口中 javax.sql.CommonDataSource
        指定者:
        getLogWriter 在接口中 javax.sql.DataSource
        抛出:
        java.sql.SQLException
      • getLoginTimeout

        public int getLoginTimeout()
                            throws java.sql.SQLException
        指定者:
        getLoginTimeout 在接口中 javax.sql.CommonDataSource
        指定者:
        getLoginTimeout 在接口中 javax.sql.DataSource
        抛出:
        java.sql.SQLException
      • setLogWriter

        public void setLogWriter​(java.io.PrintWriter out)
                          throws java.sql.SQLException
        指定者:
        setLogWriter 在接口中 javax.sql.CommonDataSource
        指定者:
        setLogWriter 在接口中 javax.sql.DataSource
        抛出:
        java.sql.SQLException
      • setLoginTimeout

        public void setLoginTimeout​(int seconds)
                             throws java.sql.SQLException
        指定者:
        setLoginTimeout 在接口中 javax.sql.CommonDataSource
        指定者:
        setLoginTimeout 在接口中 javax.sql.DataSource
        抛出:
        java.sql.SQLException
      • getCloseSuppressingConnectionProxy

        protected java.sql.Connection getCloseSuppressingConnectionProxy​(java.sql.Connection target)
        Wrap the given Connection with a proxy that delegates every method call to it but suppresses close calls.
        参数:
        target - the original Connection to wrap
        返回:
        the wrapped Connection
      • isWrapperFor

        public boolean isWrapperFor​(java.lang.Class<?> iface)
                             throws java.sql.SQLException
        Performs only a 'shallow' non-recursive check of self's and delegate's class to retain Java 5 compatibility.
        指定者:
        isWrapperFor 在接口中 java.sql.Wrapper
        抛出:
        java.sql.SQLException
      • unwrap

        public <T> T unwrap​(java.lang.Class<T> iface)
                     throws java.sql.SQLException
        Returns either self or delegate (in this order) if one of them can be cast to supplied parameter class. Does *not* support recursive unwrapping of the delegate to retain Java 5 compatibility.
        指定者:
        unwrap 在接口中 java.sql.Wrapper
        抛出:
        java.sql.SQLException
      • afterPropertiesSet

        public void afterPropertiesSet()
                                throws java.lang.Exception
        指定者:
        afterPropertiesSet 在接口中 org.springframework.beans.factory.InitializingBean
        抛出:
        java.lang.Exception
      • getParentLogger

        public java.util.logging.Logger getParentLogger()
                                                 throws java.sql.SQLFeatureNotSupportedException
        Added due to JDK 7 compatibility.
        指定者:
        getParentLogger 在接口中 javax.sql.CommonDataSource
        抛出:
        java.sql.SQLFeatureNotSupportedException