com.pivotal.gemfirexd.internal.jdbc

## Class ClientDataSource

- java.lang.Object
- - com.pivotal.gemfirexd.internal.jdbc.ClientBaseDataSource
  - - com.pivotal.gemfirexd.internal.jdbc.ClientDataSource

All Implemented Interfaces:
  Serializable, Wrapper, Referenceable, CommonDataSource, DataSource

Direct Known Subclasses:
  ClientConnectionPoolDataSource, ClientDataSource40, ClientXADataSource

    public class ClientDataSource
    extends ClientBaseDataSource
    implements DataSource

ClientDataSource is a simple data source implementation that can be used for establishing connections in a non-pooling, non-distributed environment. The class ClientConnectionPoolDataSource can be used in a connection pooling environment, and the class ClientXADataSource can be used in a distributed, and pooling environment. Use these DataSources if your application runs under JDBC3.0 or JDBC2.0, that is, on the following Java Virtual Machines:

- JDBC 3.0 - Java 2 - JDK 1.4, J2SE 5.0
- JDBC 2.0 - Java 2 - JDK 1.2,1.3

The example below registers a DNC data source object with a JNDI naming service.

     com.pivotal.gemfirexd.internal.client.ClientDataSource dataSource = new com.pivotal.gemfirexd.internal.client.ClientDataSource ();
     dataSource.setServerName ("my_derby_database_server");
     dataSource.setDatabaseName ("my_derby_database_name");
     javax.naming.Context context = new javax.naming.InitialContext();
     context.bind ("jdbc/my_datasource_name", dataSource);

The first line of code in the example creates a data source object. The next two lines initialize the data source's properties. Then a Java object that references the initial JNDI naming context is created by calling the InitialContext() constructor, which is provided by JNDI. System properties (not shown) are used to tell JNDI the service provider to use. The JNDI name space is hierarchical, similar to the directory structure of many file systems. The data source object is bound to a logical JNDI name by calling Context.bind(). In this case the JNDI name identifies a subcontext, "jdbc", of the root naming context and a logical name, "my_datasource_name", within the jdbc subcontext. This is all of the code required to deploy a data source object within JNDI. This example is provided mainly for illustrative purposes. We expect that developers or system administrators will normally use a GUI tool to deploy a data source object.

Once a data source has been registered with JNDI, it can then be used by a JDBC application, as is shown in the following example.

     javax.naming.Context context = new javax.naming.InitialContext ();
     javax.sql.DataSource dataSource = (javax.sql.DataSource) context.lookup ("jdbc/my_datasource_name");
     java.sql.Connection connection = dataSource.getConnection ("user", "password");

The first line in the example creates a Java object that references the initial JNDI naming context. Next, the initial naming context is used to do a lookup operation using the logical name of the data source. The Context.lookup() method returns a reference to a Java Object, which is narrowed to a javax.sql.DataSource object. In the last line, the DataSource.getConnection() method is called to produce a database connection.

This simple data source subclass of ClientBaseDataSource maintains it's own private `password` property.

The specified password, along with the user, is validated by DERBY. This property can be overwritten by specifing the password parameter on the DataSource.getConnection() method call.

This password property is not declared transient, and therefore may be serialized to a file in clear-text, or stored to a JNDI server in clear-text when the data source is saved. Care must taken by the user to prevent security breaches.

See Also:
  Serialized Form

### Field Summary

Fields
`static String` `className__`

### Fields inherited from class com.pivotal.gemfirexd.internal.jdbc.ClientBaseDataSource

`CLEAR_TEXT_PASSWORD_SECURITY, connectionAttributes, ENCRYPTED_PASSWORD_SECURITY, ENCRYPTED_USER_AND_PASSWORD_SECURITY, propertyDefault_portNumber, propertyDefault_retrieveMessageText, propertyDefault_securityMechanism, propertyDefault_serverName, propertyDefault_traceFileAppend, propertyDefault_traceLevel, propertyDefault_user, securityMechanism, SSL_BASIC, SSL_OFF, SSL_PEER_AUTHENTICATION, STRONG_PASSWORD_SUBSTITUTE_SECURITY, TRACE_ALL, TRACE_CONNECTION_CALLS, TRACE_CONNECTS, TRACE_DIAGNOSTICS, TRACE_DRIVER_CONFIGURATION, TRACE_NONE, TRACE_PARAMETER_META_DATA, TRACE_PROTOCOL_FLOWS, TRACE_RESULT_SET_CALLS, TRACE_RESULT_SET_META_DATA, TRACE_STATEMENT_CALLS, TRACE_XA_CALLS, traceLevel, USER_ONLY_SECURITY`

### Constructor Summary

Constructors
Constructor and Description
`ClientDataSource()` Creates a simple DERBY data source with default property values for a non-pooling, non-distributed environment.

### Method Summary

Methods
`Connection` `getConnection()` Attempt to establish a database connection in a non-pooling, non-distributed environment.
`Connection` `getConnection(String user, String password)` Attempt to establish a database connection in a non-pooling, non-distributed environment.
`Logger` `getParentLogger()`
`boolean` `isWrapperFor(Class interfaces)`
`Object` `unwrap(Class interfaces)`

### Methods inherited from class com.pivotal.gemfirexd.internal.jdbc.ClientBaseDataSource

`computeDncLogWriter, computeDncLogWriterForNewConnection, getClientSSLMode, getConnectionAttributes, getCreateDatabase, getDatabaseName, getDataSourceName, getDescription, getIsODBCDriver, getLoginTimeout, getLogWriter, getPassword, getPassword, getPortNumber, getReference, getRetrieveMessageText, getRetrieveMessageText, getSecurityMechanism, getSecurityMechanism, getSecurityMechanism, getServerName, getShutdownDatabase, getSsl, getSSLModeFromString, getTraceDirectory, getTraceDirectory, getTraceFile, getTraceFile, getTraceFileAppend, getTraceFileAppend, getTraceLevel, getTraceLevel, getUpgradedSecurityMechanism, getUser, getUser, maxStatementsToPool, readSystemProperty, setConnectionAttributes, setCreateDatabase, setDatabaseName, setDataSourceName, setDescription, setLoginTimeout, setLogWriter, setPassword, setPassword, setPortNumber, setRetrieveMessageText, setSecurityMechanism, setSecurityMechanism, setServerName, setShutdownDatabase, setSsl, setSsl, setTraceDirectory, setTraceFile, setTraceFileAppend, setTraceLevel, setUser, tokenizeAttributes`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface javax.sql.CommonDataSource

`getLoginTimeout, getLogWriter, setLoginTimeout, setLogWriter`

### Field Detail

#### className__

    public static final String className__

See Also:
  Constant Field Values

### Constructor Detail

#### ClientDataSource

    public ClientDataSource()

Creates a simple DERBY data source with default property values for a non-pooling, non-distributed environment. No particular DatabaseName or other properties are associated with the data source.

Every Java Bean should provide a constructor with no arguments since many beanboxes attempt to instantiate a bean by invoking its no-argument constructor.

### Method Detail

#### getConnection

    public Connection getConnection()
                             throws SQLException

Attempt to establish a database connection in a non-pooling, non-distributed environment.

Specified by:
  `getConnection` in interface `DataSource`
Returns:
  a Connection to the database
Throws:
  `SQLException` - if a database-access error occurs.

#### getConnection

    public Connection getConnection(String user,
                           String password)
                             throws SQLException

Attempt to establish a database connection in a non-pooling, non-distributed environment.

Specified by:
  `getConnection` in interface `DataSource`
Parameters:
  `user` - the database user on whose behalf the Connection is being made
  `password` - the user's password
Returns:
  a Connection to the database
Throws:
  `SQLException` - if a database-access error occurs.

#### isWrapperFor

    public boolean isWrapperFor(Class interfaces)
                         throws SQLException

Specified by:
  `isWrapperFor` in interface `Wrapper`
Throws:
  `SQLException`

#### unwrap

    public Object unwrap(Class interfaces)
                  throws SQLException

Specified by:
  `unwrap` in interface `Wrapper`
Throws:
  `SQLException`

#### getParentLogger

    public Logger getParentLogger()

Specified by:
  `getParentLogger` in interface `CommonDataSource`