org.apache.derby.jdbc
Class EmbeddedDataSource

java.lang.Object
  extended byorg.apache.derby.jdbc.ReferenceableDataSource
      extended byorg.apache.derby.jdbc.EmbeddedDataSource
All Implemented Interfaces:
javax.sql.DataSource, javax.naming.spi.ObjectFactory, javax.naming.Referenceable, java.io.Serializable
Direct Known Subclasses:
EmbeddedConnectionPoolDataSource, EmbeddedXADataSource

public class EmbeddedDataSource
extends ReferenceableDataSource
implements javax.sql.DataSource

EmbeddedDataSource is Derby's DataSource implementation.

A DataSource is a factory for Connection objects. An object that implements the DataSource interface will typically be registered with a JNDI service provider.

EmbeddedDataSource automatically supports the correct JDBC specification version for the Java Virtual Machine's environment.

The following is a list of properties that can be set on a Derby DataSource object:

Standard DataSource properties (from JDBC 3.0 specification).


Derby specific DataSource properties.

Examples.

This is an example of setting a property directly using Derby's EmbeddedDataSource object. This code is typically written by a system integrator :

 

 import org.apache.derby.jdbc.*;

 // dbname is the database name
 // if create is true, create the database if necessary
 javax.sql.DataSource makeDataSource (String dbname, boolean create)
	throws Throwable 
 { 
	EmbeddedDataSource ds = new EmbeddedDataSource(); 
	ds.setDatabaseName(dbname);

	if (create)
		ds.setCreateDatabase("create");
   
	return ds;
 }
        

Example of setting properties thru reflection. This code is typically generated by tools or written by a system integrator:

	
 javax.sql.DataSource makeDataSource(String dbname) 
	throws Throwable 
 {
	Class[] parameter = new Class[1];
	parameter[0] = dbname.getClass();
	DataSource ds =  new EmbeddedDataSource();
	Class cl = ds.getClass();

	Method setName = cl.getMethod("setDatabaseName", parameter);
	Object[] arg = new Object[1];
	arg[0] = dbname;
	setName.invoke(ds, arg);

	return ds;
 }
        

Example on how to register a data source object with a JNDI naming service.

 DataSource ds = makeDataSource("mydb");
 Context ctx = new InitialContext();
 ctx.bind("jdbc/MyDB", ds);
        

Example on how to retrieve a data source object from a JNDI naming service.

 Context ctx = new InitialContext();
 DataSource ds = (DataSource)ctx.lookup("jdbc/MyDB");
        

See Also:
Serialized Form

Field Summary
private  boolean attributesAsPassword
          Set password to be a set of connection attributes.
private  java.lang.String connectionAttributes
          Derby specific connection attributes.
private  java.lang.String createDatabase
          Set to "create" if the database should be created.
private  java.lang.String databaseName
          The database name.
private  java.lang.String dataSourceName
          The data source name.
private  java.lang.String description
          Description of the database.
protected  InternalDriver driver
           
private  java.lang.String jdbcurl
           
private  int loginTimeout
           
private  java.io.PrintWriter printer
          instance variables that will not be serialized
private static long serialVersionUID
           
private  java.lang.String shutdownDatabase
          Set to "shutdown" if the database should be shutdown.
 
Fields inherited from class org.apache.derby.jdbc.ReferenceableDataSource
 
Constructor Summary
EmbeddedDataSource()
          No-arg constructor.
 
Method Summary
 boolean equals(java.lang.Object p0)
           
(package private)  InternalDriver findDriver()
           
 boolean getAttributesAsPassword()
          Return the value of the attributesAsPassword property.
 java.sql.Connection getConnection()
          Attempt to establish a database connection.
 java.sql.Connection getConnection(java.lang.String username, java.lang.String password)
          Attempt to establish a database connection with the given username and password.
(package private)  java.sql.Connection getConnection(java.lang.String username, java.lang.String password, boolean requestPassword)
          Return a connection for the Cloudscape family of data source implementations.
 java.lang.String getConnectionAttributes()
           
 java.lang.String getCreateDatabase()
           
 java.lang.String getShutdownDatabase()
           
 void setAttributesAsPassword(boolean attributesAsPassword)
          Set attributeAsPassword property to enable passing connection request attributes in the password argument of getConnection.
 void setConnectionAttributes(java.lang.String prop)
          Set this property to pass in more Derby specific connection URL attributes.
 void setCreateDatabase(java.lang.String create)
          Set this property to create a new database.
 void setShutdownDatabase(java.lang.String shutdown)
          Set this property if one wishes to shutdown the database identified by databaseName.
(package private)  void update()
           
 
Methods inherited from class org.apache.derby.jdbc.ReferenceableDataSource
getDatabaseName, getDataSourceName, getDescription, getLoginTimeout, getLogWriter, getObjectInstance, getPassword, getReference, getUser, setDatabaseName, setDataSourceName, setDescription, setLoginTimeout, setLogWriter, setPassword, setUser
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.sql.DataSource
getLoginTimeout, getLogWriter, setLoginTimeout, setLogWriter
 

Field Detail

serialVersionUID

private static final long serialVersionUID
See Also:
Constant Field Values

databaseName

private java.lang.String databaseName
The database name.


dataSourceName

private java.lang.String dataSourceName
The data source name.


description

private java.lang.String description
Description of the database.


createDatabase

private java.lang.String createDatabase
Set to "create" if the database should be created.


shutdownDatabase

private java.lang.String shutdownDatabase
Set to "shutdown" if the database should be shutdown.


connectionAttributes

private java.lang.String connectionAttributes
Derby specific connection attributes.


attributesAsPassword

private boolean attributesAsPassword
Set password to be a set of connection attributes.


printer

private transient java.io.PrintWriter printer
instance variables that will not be serialized


loginTimeout

private transient int loginTimeout

driver

protected transient InternalDriver driver

jdbcurl

private transient java.lang.String jdbcurl
Constructor Detail

EmbeddedDataSource

public EmbeddedDataSource()
No-arg constructor.

Method Detail

equals

public boolean equals(java.lang.Object p0)

setCreateDatabase

public final void setCreateDatabase(java.lang.String create)
Set this property to create a new database. If this property is not set, the database (identified by databaseName) is assumed to be already existing.

Parameters:
create - if set to the string "create", this data source will try to create a new database of databaseName, or boot the database if one by that name already exists.

getCreateDatabase

public final java.lang.String getCreateDatabase()
Returns:
"create" if create is set, or null if not

setShutdownDatabase

public final void setShutdownDatabase(java.lang.String shutdown)
Set this property if one wishes to shutdown the database identified by databaseName.

Parameters:
shutdown - if set to the string "shutdown", this data source will shutdown the database if it is running.

getShutdownDatabase

public final java.lang.String getShutdownDatabase()
Returns:
"shutdown" if shutdown is set, or null if not

setConnectionAttributes

public final void setConnectionAttributes(java.lang.String prop)
Set this property to pass in more Derby specific connection URL attributes.

Parameters:
prop - set to the list of Derby connection attributes separated by semi-colons. E.g., to specify an encryption bootPassword of "x8hhk2adf", and set upgrade to true, do the following:
                        ds.setConnectionAttributes("bootPassword=x8hhk2adf;upgrade=true");
                
See the Derby documentation for complete list.

getConnectionAttributes

public final java.lang.String getConnectionAttributes()
Returns:
Derby specific connection URL attributes

setAttributesAsPassword

public final void setAttributesAsPassword(boolean attributesAsPassword)
Set attributeAsPassword property to enable passing connection request attributes in the password argument of getConnection. If the property is set to true then the password argument of the DataSource.getConnection(String user, String password) method call is taken to be a list of connection attributes with the same format as the connectionAttributes property.

Parameters:
attributesAsPassword - true to encode password argument as a set of connection attributes in a connection request.

getAttributesAsPassword

public final boolean getAttributesAsPassword()
Return the value of the attributesAsPassword property.


getConnection

public final java.sql.Connection getConnection()
                                        throws java.sql.SQLException
Attempt to establish a database connection.

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

getConnection

public final java.sql.Connection getConnection(java.lang.String username,
                                               java.lang.String password)
                                        throws java.sql.SQLException
Attempt to establish a database connection with the given username and password. If the attributeAsPassword property is set to true then the password argument is taken to be a list of connection attributes with the same format as the connectionAttributes property.

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

getConnection

final java.sql.Connection getConnection(java.lang.String username,
                                        java.lang.String password,
                                        boolean requestPassword)
                                 throws java.sql.SQLException
Description copied from class: ReferenceableDataSource
Return a connection for the Cloudscape family of data source implementations.

Overrides:
getConnection in class ReferenceableDataSource
Parameters:
requestPassword - true if the password came from the getConnection() call.
Throws:
java.sql.SQLException

findDriver

InternalDriver findDriver()
                    throws java.sql.SQLException
Throws:
java.sql.SQLException

update

void update()
Overrides:
update in class ReferenceableDataSource

Built on Mon 2007-06-04 09:58:47+0400, from revision ???

Apache Derby V10.1 Engine Documentation - Copyright © 1997,2005 The Apache Software Foundation or its licensors, as applicable.