| Title: Configuring DataSources in Tests |
| <a name="ConfiguringDataSourcesinTests-InitialContextproperties"></a> |
| # 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. |
| |
| <a name="ConfiguringDataSourcesinTests-Noteon<jta-data-source>and<non-jta-data-source>"></a> |
| ## Note on <jta-data-source> and <non-jta-data-source> |
| |
| When configuring DataSources to be used by persistence.xml files, the |
| DataSource supplied for `<jta-data-source>` is typically identical to the |
| `<non-jta-data-source>`, 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. |