Datasourcedefinition applicationxml pu

Run
How to run the sample
The source code for this sample can be found in the javaee7-samples GitHub repository. The first thing we need to do is to get the source by downloading the repository and then go into the samples folder:
git clone git://github.com/javaee-samples/javaee7-samples.git
cd javaee7-samples/jpa/datasourcedefinition-applicationxml-pu/
Now we are ready to start testing. You can run all the tests in this sample by executing:
mvn test
Or you can run individual tests by executing one of the following:
mvn test -Dtest=DataSourceDefinitionApplicationXMLPuWebTestmvn test -Dtest=DataSourceDefinitionApplicationXMLPuEJBTest

DataSourceDefinitionApplicationXMLPuWebTest

This tests that a data source defined via the data-source element in an EAR’s application.xml can be used by JPA. <p> In this test the persistence unit is defined inside a web module (.war)

<p> The actual JPA code being run is not specifically relevant; any kind of JPA operation that uses the data source is okay here.

Missing a description for the deployment. Add some javadoc to the @Deployment method. Show me how!
@Deployment
public static Archive<?> deploy() {
    return
        // EAR archive
        create(EnterpriseArchive.class, "test.ear")

            // Data-source is defined here
            .setApplicationXML("application-web.xml")

            // JDBC driver for data source
            .addAsLibraries(Maven.resolver()
                .loadPomFromFile("pom.xml")
                .resolve("com.h2database:h2")
                .withoutTransitivity()
                .asSingleFile())

            // WAR module
            .addAsModule(
                create(WebArchive.class, "test.war")

                    // Persistence unit is defined here, references data source
                    .addAsResource("META-INF/persistence.xml")

                    // Service class that uses persistence unit
                    .addPackages(true, DataSourceDefinitionApplicationXMLPuWebTest.class.getPackage())
        );
}
Missing a description for the test scenario. Add some javadoc to the @Test method. Show me how!
@Test
public void insertAndQueryEntity() throws Exception {

    testService.saveNewEntity();

    List<TestEntity> testEntities = testService.getAllEntities();

    assertTrue(testEntities.size() == 1);
    assertTrue(testEntities.get(0).getValue().equals("mytest"));
}

DataSourceDefinitionApplicationXMLPuEJBTest

This tests that a data source defined via the data-source element in an EAR’s application.xml can be used by JPA. <p> In this test the persistence unit is defined inside an EJB module (.jar)

<p> The actual JPA code being run is not specifically relevant; any kind of JPA operation that uses the data source is okay here.

Missing a description for the deployment. Add some javadoc to the @Deployment method. Show me how!
@Deployment
public static Archive<?> deploy() {
    return
        // EAR archive
        create(EnterpriseArchive.class, "test.ear")

            // Data-source is defined here
            .setApplicationXML("application-ejb.xml")

            // JDBC driver for data source
            .addAsLibraries(Maven.resolver()
                .loadPomFromFile("pom.xml")
                .resolve("com.h2database:h2")
                .withoutTransitivity()
                .asSingleFile())

            // EJB module
            .addAsModule(
                create(JavaArchive.class, "test.jar")

                    // Persistence unit is defined here, references data source
                    .addAsResource("META-INF/persistence.xml")

                    // Service class that uses persistence unit
                    .addClasses(TestEntity.class, TestService.class)
            )

            // Web module
            // This is needed to prevent Arquillian generating an illegal application.xml
            .addAsModule(
                create(WebArchive.class, "test.war")
                    // This class containing the test
                    .addClass(DataSourceDefinitionApplicationXMLPuEJBTest.class)

            );
}
Missing a description for the test scenario. Add some javadoc to the @Test method. Show me how!
@Test
public void insertAndQueryEntity() throws Exception {

    testService.saveNewEntity();

    List<TestEntity> testEntities = testService.getAllEntities();

    assertTrue(testEntities.size() == 1);
    assertTrue(testEntities.get(0).getValue().equals("mytest"));
}

Share the Knowledge

Find this sample useful? Share on

There's a lot more about JavaEE to cover. If you're ready to learn more, check out the other available samples.

Help Improve

Find a bug in the sample? Something missing? You can fix it by editing the source, making the correction and sending a pull request. Or report the problem to the issue tracker

Recent Changelog

  • Jun 10, 2014: Workaround for arquillian creating an illegal application.xml by arjantijms
  • Jun 10, 2014: Test that data-source can be defined in application.xml and used in by arjan tijms
How to help improve this sample
The source code for this sample can be found in the javaee7-samples GitHub repository. The first thing you need to do is to get the source by downloading the repository and then go into the samples folder:
git clone git://github.com/javaee-samples/javaee7-samples.git
cd javaee7-samples/jpa/datasourcedefinition-applicationxml-pu/

Do the changes as you see fit and send a pull request!

Good Luck!