public class EmbeddedDataSource
extends org.apache.derby.jdbc.ReferenceableDataSource
implements javax.naming.Referenceable
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).
databaseName
(String): Mandatory
setDatabaseName("g:/db/wombat")
on the data source object.dataSourceName
(String): Optional
description
(String): Optional
password
(String): Optional
DataSource.getConnection()
,
ConnectionPoolDataSource.getPooledConnection()
and XADataSource.getXAConnection()
methods.
user
(String): Optional
DataSource.getConnection()
,
ConnectionPoolDataSource.getPooledConnection()
and XADataSource.getXAConnection()
methods.
attributesAsPassword
(Boolean): Optional
DataSource.getConnection(String user, String password)
,
ConnectionPoolDataSource.getPooledConnection(String user, String password)
or XADataSource.getXAConnection(String user, String password)
as a set
of connection attributes. The format of the attributes is the same as the format
of the attributes in the property connectionAttributes. If false the password value
is treated normally as the password for the given user.
Setting this property to true allows a connection request from an application to
provide more authentication information that just a password, for example the request
can include the user's password and an encrypted database's boot password.connectionAttributes
(String): Optional
attribute=value
, each separated by semi-colon (';').
E.g. setConnectionAttributes("bootPassword=erd3234dggd3kazkj3000");
.
databaseName
and not by setting the databaseName
connection attribute in the connectionAttributes
property.
createDatabase
(String): Optional
databaseName
if that database does not already
exist. The database is created when a connection object is obtained from
the data source. shutdownDatabase
(String): Optional
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");
Constructor and Description |
---|
EmbeddedDataSource()
No-arg constructor.
|
Modifier and Type | Method and Description |
---|---|
javax.naming.Reference |
getReference()
This method creates a new
Reference object to represent this
data source. |
equals, getAttributesAsPassword, getConnection, getConnection, getConnectionAttributes, getCreateDatabase, getDatabaseName, getDataSourceName, getDescription, getLoginTimeout, getLogWriter, getPassword, getShortDatabaseName, getShutdownDatabase, getUser, isWrapperFor, setAttributesAsPassword, setConnectionAttributes, setCreateDatabase, setDatabaseName, setDataSourceName, setDescription, setLoginTimeout, setLogWriter, setPassword, setShutdownDatabase, setupResourceAdapter, setUser, unwrap, update
public final javax.naming.Reference getReference() throws javax.naming.NamingException
Reference
object to represent this
data source. The class name of the data source object is saved
in the Reference
, so that an object factory will know that it
should create an instance of that class when a lookup operation
is performed. The class is also stored in the reference. This
is not required by JNDI, but is recommend in practice. JNDI
will always use the object factory class specified in the
reference when reconstructing an object, if a class name has
been specified. See the JNDI SPI documentation for further
details on this topic, and for a complete description of the
Reference
and StringRefAddr
classes.
Derby data source classes class provides several standard JDBC
properties. The names and values of the data source properties
are also stored in the reference using the StringRefAddr
class.
This is all the information needed to reconstruct an embedded
data source object.getReference
in interface javax.naming.Referenceable
javax.naming.NamingException
- cannot find named objectApache Derby 10.10 API Documentation - Copyright © 2004,2014 The Apache Software Foundation. All Rights Reserved.