Title: Configuring DataSources in Tests # InitialContext properties You can configure data sources from within your test case (avoiding the need for an `openejb.xml` entirely) like so: Properties p = new Properties(); p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory"); p.put("myDataSource", "new://Resource?type=DataSource"); p.put("myDataSource.JdbcDriver", "org.apache.derby.jdbc.EmbeddedDriver"); p.put("myDataSource.JdbcUrl", "jdbc:derby:derbyDB;create=true"); p.put("myDataSource.JtaManaged", "true"); Context context = new InitialContext(p); Under certain circumstances it may be necessary to load two versions of the same driver. This is possible by definition of a classpath for the resource which points to the specific driver files required for the DataSource: p.put("myDataSourceOne", "new://Resource?type=DataSource&classpath=/path/to/driverVersionOne.jar"); p.put("myDataSourceOne.JdbcDriver", "org.apache.derby.jdbc.EmbeddedDriver"); p.put("myDataSource.JdbcUrl", "jdbc:derby:myDatabaseOne;create=true"); .... p.put("myDataSourceTwo", "new://Resource?type=DataSource&classpath=/path/to/driverVersionTwo.jar"); p.put("myDataSourceTwo.JdbcDriver", "org.apache.derby.jdbc.EmbeddedDriver"); p.put("myDataSource.JdbcUrl", "jdbc:derby:myDatabaseTwo;create=true"); This will allow an application to communicate through legacy drivers to the same JDBC provider. See [Embedded Configuration](embedded-configuration.html) for further details on properties and overrides. See [Containers and Resources](containers-and-resources.html) for a full list of supported Resource types and their properties. ## Note on <jta-data-source> and <non-jta-data-source> When configuring DataSources to be used by persistence.xml files, the DataSource supplied for `` is typically identical to the ``, but with the `JtaManaged` property set differently. Keeping with our philosophy to free you up from redundant configuration, we will happily auto-create a missing jta-data-source or non-jta-data-source based upon the supplied DataSource. In the example above, a new DataSource would be generated as an exact copy but with the name "myDataSourceUnmanaged" and its `JtaManaged` flag set to `false`. If the supplied DataSource was not `JtaManaged`, then the generated DataSource would be called "myDataSourceJta" and have its `JtaManaged` flag set to `true`. When relying on this functionality it is not necessary to specify the name of the generated DataSource in the `persistence.xml` file.