Package org.h2.jdbcx

Class JdbcDataSource

  • All Implemented Interfaces:
    java.io.Serializable, java.sql.Wrapper, javax.naming.Referenceable, javax.sql.CommonDataSource, javax.sql.ConnectionPoolDataSource, javax.sql.DataSource, javax.sql.XADataSource, JdbcDataSourceBackwardsCompat

    public final class JdbcDataSource
    extends TraceObject
    implements javax.sql.XADataSource, javax.sql.DataSource, javax.sql.ConnectionPoolDataSource, java.io.Serializable, javax.naming.Referenceable, JdbcDataSourceBackwardsCompat
    A data source for H2 database connections. It is a factory for XAConnection and Connection objects. This class is usually registered in a JNDI naming service. To create a data source object and register it with a JNDI service, use the following code:
     import org.h2.jdbcx.JdbcDataSource;
     import javax.naming.Context;
     import javax.naming.InitialContext;
     JdbcDataSource ds = new JdbcDataSource();
     ds.setURL("jdbc:h2:˜/test");
     ds.setUser("sa");
     ds.setPassword("sa");
     Context ctx = new InitialContext();
     ctx.bind("jdbc/dsName", ds);
     
    To use a data source that is already registered, use the following code:
     import java.sql.Connection;
     import javax.sql.DataSource;
     import javax.naming.Context;
     import javax.naming.InitialContext;
     Context ctx = new InitialContext();
     DataSource ds = (DataSource) ctx.lookup("jdbc/dsName");
     Connection conn = ds.getConnection();
     
    In this example the user name and password are serialized as well; this may be a security problem in some cases.
    See Also:
    Serialized Form
    • Field Detail

      • logWriter

        private transient java.io.PrintWriter logWriter
      • loginTimeout

        private int loginTimeout
      • userName

        private java.lang.String userName
      • passwordChars

        private char[] passwordChars
      • url

        private java.lang.String url
      • description

        private java.lang.String description
    • Constructor Detail

      • JdbcDataSource

        public JdbcDataSource()
        The public constructor.
    • Method Detail

      • readObject

        private void readObject​(java.io.ObjectInputStream in)
                         throws java.io.IOException,
                                java.lang.ClassNotFoundException
        Called when de-serializing the object.
        Parameters:
        in - the input stream
        Throws:
        java.io.IOException - on failure
        java.lang.ClassNotFoundException - on failure
      • initFactory

        private void initFactory()
      • getLoginTimeout

        public int getLoginTimeout()
        Get the login timeout in seconds, 0 meaning no timeout.
        Specified by:
        getLoginTimeout in interface javax.sql.CommonDataSource
        Specified by:
        getLoginTimeout in interface javax.sql.ConnectionPoolDataSource
        Specified by:
        getLoginTimeout in interface javax.sql.DataSource
        Specified by:
        getLoginTimeout in interface javax.sql.XADataSource
        Returns:
        the timeout in seconds
      • setLoginTimeout

        public void setLoginTimeout​(int timeout)
        Set the login timeout in seconds, 0 meaning no timeout. The default value is 0. This value is ignored by this database.
        Specified by:
        setLoginTimeout in interface javax.sql.CommonDataSource
        Specified by:
        setLoginTimeout in interface javax.sql.ConnectionPoolDataSource
        Specified by:
        setLoginTimeout in interface javax.sql.DataSource
        Specified by:
        setLoginTimeout in interface javax.sql.XADataSource
        Parameters:
        timeout - the timeout in seconds
      • getLogWriter

        public java.io.PrintWriter getLogWriter()
        Get the current log writer for this object.
        Specified by:
        getLogWriter in interface javax.sql.CommonDataSource
        Specified by:
        getLogWriter in interface javax.sql.ConnectionPoolDataSource
        Specified by:
        getLogWriter in interface javax.sql.DataSource
        Specified by:
        getLogWriter in interface javax.sql.XADataSource
        Returns:
        the log writer
      • setLogWriter

        public void setLogWriter​(java.io.PrintWriter out)
        Set the current log writer for this object. This value is ignored by this database.
        Specified by:
        setLogWriter in interface javax.sql.CommonDataSource
        Specified by:
        setLogWriter in interface javax.sql.ConnectionPoolDataSource
        Specified by:
        setLogWriter in interface javax.sql.DataSource
        Specified by:
        setLogWriter in interface javax.sql.XADataSource
        Parameters:
        out - the log writer
      • getConnection

        public java.sql.Connection getConnection()
                                          throws java.sql.SQLException
        Open a new connection using the current URL, user name and password.
        Specified by:
        getConnection in interface javax.sql.DataSource
        Returns:
        the connection
        Throws:
        java.sql.SQLException
      • getConnection

        public java.sql.Connection getConnection​(java.lang.String user,
                                                 java.lang.String password)
                                          throws java.sql.SQLException
        Open a new connection using the current URL and the specified user name and password.
        Specified by:
        getConnection in interface javax.sql.DataSource
        Parameters:
        user - the user name
        password - the password
        Returns:
        the connection
        Throws:
        java.sql.SQLException
      • getURL

        public java.lang.String getURL()
        Get the current URL.
        Returns:
        the URL
      • setURL

        public void setURL​(java.lang.String url)
        Set the current URL.
        Parameters:
        url - the new URL
      • getUrl

        public java.lang.String getUrl()
        Get the current URL. This method does the same as getURL, but this methods signature conforms the JavaBean naming convention.
        Returns:
        the URL
      • setUrl

        public void setUrl​(java.lang.String url)
        Set the current URL. This method does the same as setURL, but this methods signature conforms the JavaBean naming convention.
        Parameters:
        url - the new URL
      • setPassword

        public void setPassword​(java.lang.String password)
        Set the current password.
        Parameters:
        password - the new password.
      • setPasswordChars

        public void setPasswordChars​(char[] password)
        Set the current password in the form of a char array.
        Parameters:
        password - the new password in the form of a char array.
      • convertToString

        private static java.lang.String convertToString​(char[] a)
      • getPassword

        public java.lang.String getPassword()
        Get the current password.
        Returns:
        the password
      • getUser

        public java.lang.String getUser()
        Get the current user name.
        Returns:
        the user name
      • setUser

        public void setUser​(java.lang.String user)
        Set the current user name.
        Parameters:
        user - the new user name
      • getDescription

        public java.lang.String getDescription()
        Get the current description.
        Returns:
        the description
      • setDescription

        public void setDescription​(java.lang.String description)
        Set the description.
        Parameters:
        description - the new description
      • getReference

        public javax.naming.Reference getReference()
        Get a new reference for this object, using the current settings.
        Specified by:
        getReference in interface javax.naming.Referenceable
        Returns:
        the new reference
      • getXAConnection

        public javax.sql.XAConnection getXAConnection()
                                               throws java.sql.SQLException
        Open a new XA connection using the current URL, user name and password.
        Specified by:
        getXAConnection in interface javax.sql.XADataSource
        Returns:
        the connection
        Throws:
        java.sql.SQLException
      • getXAConnection

        public javax.sql.XAConnection getXAConnection​(java.lang.String user,
                                                      java.lang.String password)
                                               throws java.sql.SQLException
        Open a new XA connection using the current URL and the specified user name and password.
        Specified by:
        getXAConnection in interface javax.sql.XADataSource
        Parameters:
        user - the user name
        password - the password
        Returns:
        the connection
        Throws:
        java.sql.SQLException
      • getPooledConnection

        public javax.sql.PooledConnection getPooledConnection()
                                                       throws java.sql.SQLException
        Open a new pooled connection using the current URL, user name and password.
        Specified by:
        getPooledConnection in interface javax.sql.ConnectionPoolDataSource
        Returns:
        the connection
        Throws:
        java.sql.SQLException
      • getPooledConnection

        public javax.sql.PooledConnection getPooledConnection​(java.lang.String user,
                                                              java.lang.String password)
                                                       throws java.sql.SQLException
        Open a new pooled connection using the current URL and the specified user name and password.
        Specified by:
        getPooledConnection in interface javax.sql.ConnectionPoolDataSource
        Parameters:
        user - the user name
        password - the password
        Returns:
        the connection
        Throws:
        java.sql.SQLException
      • unwrap

        public <T> T unwrap​(java.lang.Class<T> iface)
                     throws java.sql.SQLException
        Return an object of this class if possible.
        Specified by:
        unwrap in interface java.sql.Wrapper
        Parameters:
        iface - the class
        Returns:
        this
        Throws:
        java.sql.SQLException
      • isWrapperFor

        public boolean isWrapperFor​(java.lang.Class<?> iface)
                             throws java.sql.SQLException
        Checks if unwrap can return an object of this class.
        Specified by:
        isWrapperFor in interface java.sql.Wrapper
        Parameters:
        iface - the class
        Returns:
        whether or not the interface is assignable from this class
        Throws:
        java.sql.SQLException
      • getParentLogger

        public java.util.logging.Logger getParentLogger()
        [Not supported]
        Specified by:
        getParentLogger in interface javax.sql.CommonDataSource
      • toString

        public java.lang.String toString()
        INTERNAL
        Overrides:
        toString in class java.lang.Object