org.apache.derby.jdbc
Class ClientDataSource40

java.lang.Object
  extended by org.apache.derby.jdbc.ClientBaseDataSource
      extended by org.apache.derby.jdbc.ClientDataSource
          extended by org.apache.derby.jdbc.ClientDataSource40
All Implemented Interfaces:
java.io.Serializable, java.sql.Wrapper, javax.naming.Referenceable, javax.sql.CommonDataSource, javax.sql.DataSource

public class ClientDataSource40
extends org.apache.derby.jdbc.ClientDataSource

ClientDataSource40 is a simple data source implementation that can be used for establishing connections in a non-pooling, non-distributed environment. The class ClientConnectionPoolDataSource40 can be used in a connection pooling environment, and the class ClientXADataSource40 can be used in a distributed, and pooling environment. Use these DataSources if your application runs under JDBC4.0. Use the corresponding ClientDataSource, ClientConnectionPoolDataSource, and ClientXADataSource classes if your application runs in the following environments:

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

 org.apache.derby.client.ClientDataSource40 dataSource = new org.apache.derby.client.ClientDataSource40 ();
 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 inherited from class org.apache.derby.jdbc.ClientDataSource
className__
 
Fields inherited from class org.apache.derby.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
ClientDataSource40()
           
 
Method Summary
 boolean isWrapperFor(java.lang.Class<?> interfaces)
          Returns false unless interfaces is implemented
<T> T
unwrap(java.lang.Class<T> interfaces)
          Returns this if this class implements the interface
 
Methods inherited from class org.apache.derby.jdbc.ClientDataSource
getConnection, getConnection
 
Methods inherited from class org.apache.derby.jdbc.ClientBaseDataSource
computeDncLogWriter, getClientSSLMode, getConnectionAttributes, getCreateDatabase, getDatabaseName, getDataSourceName, getDescription, 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, setConnectionAttributes, setCreateDatabase, setDatabaseName, setDataSourceName, setDescription, setLoginTimeout, setLogWriter, setPassword, setPortNumber, setRetrieveMessageText, setSecurityMechanism, setServerName, setShutdownDatabase, setSsl, setSsl, setTraceDirectory, setTraceFile, setTraceFileAppend, setTraceLevel, setUser
 
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
 

Constructor Detail

ClientDataSource40

public ClientDataSource40()
Method Detail

isWrapperFor

public boolean isWrapperFor(java.lang.Class<?> interfaces)
                     throws java.sql.SQLException
Returns false unless interfaces is implemented

Parameters:
interfaces - a Class defining an interface.
Returns:
true if this implements the interface or directly or indirectly wraps an object that does.
Throws:
java.sql.SQLException - if an error occurs while determining whether this is a wrapper for an object with the given interface.

unwrap

public <T> T unwrap(java.lang.Class<T> interfaces)
         throws java.sql.SQLException
Returns this if this class implements the interface

Parameters:
interfaces - a Class defining an interface
Returns:
an object that implements the interface
Throws:
java.sql.SQLExption - if no object if found that implements the interface
java.sql.SQLException

Built on Wed 2007-08-01 06:53:39-0700, from revision 561794

Apache Derby 10.3 API Documentation - Copyright © 2004,2007 The Apache Software Foundation. All Rights Reserved.