= Arquillian Persistence Extension
:index-group: Unrevised
:jbake-type: page
:jbake-status: published

A sample showing how to use TomEE, Arquillian and its Persistence Extension.

Note that it doesn't work with embedded containers (openejb, tomee-embedded)
if you don't use workarounds like https://github.com/rmannibucau/persistence-with-openejb-and-arquillian
(see src/test/resources folder).

# Running (output)
```
    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Running org.superbiz.arquillian.test.persistence.PersistenceTest
    oct. 01, 2014 6:30:23 PM org.apache.openejb.arquillian.common.Setup findHome
    INFOS: Unable to find home in: /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/apache-tomee-remote
    oct. 01, 2014 6:30:23 PM org.apache.openejb.arquillian.common.MavenCache getArtifact
    INFOS: Downloading org.apache.openejb:apache-tomee:7.0.0-SNAPSHOT:zip:webprofile please wait...
    oct. 01, 2014 6:30:23 PM org.apache.openejb.arquillian.common.Zips unzip
    INFOS: Extracting '/home/rmannibucau/.m2/repository/org/apache/openejb/apache-tomee/7.0.0-SNAPSHOT/apache-tomee-7.0.0-SNAPSHOT-webprofile.zip' to '/home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/apache-tomee-remote'
    oct. 01, 2014 6:30:24 PM org.apache.tomee.arquillian.remote.RemoteTomEEContainer configure
    INFOS: Downloaded container to: /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/apache-tomee-remote/apache-tomee-webprofile-7.0.0-SNAPSHOT
    INFOS - Server version: Apache Tomcat/8.0.14
    INFOS - Server built:   Sep 24 2014 09:01:51
    INFOS - Server number:  8.0.14.0
    INFOS - OS Name:        Linux
    INFOS - OS Version:     3.13.0-35-generic
    INFOS - Architecture:   amd64
    INFOS - JVM Version:    1.7.0_67-b01
    INFOS - JVM Vendor:     Oracle Corporation
    INFOS - The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
    INFOS - Initializing ProtocolHandler ["http-nio-52256"]
    INFOS - Using a shared selector for servlet write/read
    INFOS - Initializing ProtocolHandler ["ajp-nio-40071"]
    INFOS - Using a shared selector for servlet write/read
    INFOS - Using 'openejb.jdbc.datasource-creator=org.apache.tomee.jdbc.TomEEDataSourceCreator'
    INFOS - ********************************************************************************
    INFOS - OpenEJB http://tomee.apache.org/
    INFOS - Startup: Wed Oct 01 18:30:26 CEST 2014
    INFOS - Copyright 1999-2013 (C) Apache OpenEJB Project, All Rights Reserved.
    INFOS - Version: 7.0.0-SNAPSHOT
    INFOS - Build date: 20141001
    INFOS - Build time: 04:53
    INFOS - ********************************************************************************
    INFOS - openejb.home = /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/apache-tomee-remote/apache-tomee-webprofile-7.0.0-SNAPSHOT
    INFOS - openejb.base = /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/apache-tomee-remote/apache-tomee-webprofile-7.0.0-SNAPSHOT
    INFOS - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@13158bbd
    INFOS - Succeeded in installing singleton service
    INFOS - openejb configuration file is '/home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/apache-tomee-remote/apache-tomee-webprofile-7.0.0-SNAPSHOT/conf/tomee.xml'
    INFOS - Configuring Service(id=Tomcat Security Service, type=SecurityService, provider-id=Tomcat Security Service)
    INFOS - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
    INFOS - Configuring Service(id=demoDataSource, type=Resource, provider-id=Default JDBC Database)
    INFOS - Using 'openejb.system.apps=true'
    INFOS - Configuring enterprise application: openejb
    INFOS - Using openejb.deploymentId.format '{ejbName}'
    INFOS - Auto-deploying ejb openejb/Deployer: EjbDeployment(deployment-id=openejb/Deployer)
    INFOS - Auto-deploying ejb openejb/ConfigurationInfo: EjbDeployment(deployment-id=openejb/ConfigurationInfo)
    INFOS - Auto-deploying ejb MEJB: EjbDeployment(deployment-id=MEJB)
    INFOS - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
    INFOS - Auto-creating a container for bean openejb/Deployer: Container(type=STATELESS, id=Default Stateless Container)
    INFOS - Enterprise application "openejb" loaded.
    INFOS - Creating TransactionManager(id=Default Transaction Manager)
    INFOS - Creating SecurityService(id=Tomcat Security Service)
    INFOS - Creating Resource(id=demoDataSource)
    INFOS - Disabling testOnBorrow since no validation query is provided
    INFOS - Creating Container(id=Default Stateless Container)
    INFOS - Not creating another application classloader for openejb
    INFOS - Assembling app: openejb
    INFOS - Using 'openejb.jndiname.format={deploymentId}{interfaceType.openejbLegacyName}'
    INFOS - Jndi(name=openejb/DeployerBusinessRemote) --> Ejb(deployment-id=openejb/Deployer)
    INFOS - Jndi(name=global/openejb/openejb/Deployer!org.apache.openejb.assembler.Deployer) --> Ejb(deployment-id=openejb/Deployer)
    INFOS - Jndi(name=global/openejb/openejb/Deployer) --> Ejb(deployment-id=openejb/Deployer)
    INFOS - Jndi(name=openejb/ConfigurationInfoBusinessRemote) --> Ejb(deployment-id=openejb/ConfigurationInfo)
    INFOS - Jndi(name=global/openejb/openejb/ConfigurationInfo!org.apache.openejb.assembler.classic.cmd.ConfigurationInfo) --> Ejb(deployment-id=openejb/ConfigurationInfo)
    INFOS - Jndi(name=global/openejb/openejb/ConfigurationInfo) --> Ejb(deployment-id=openejb/ConfigurationInfo)
    INFOS - Jndi(name=MEJB) --> Ejb(deployment-id=MEJB)
    INFOS - Jndi(name=global/openejb/MEJB!javax.management.j2ee.ManagementHome) --> Ejb(deployment-id=MEJB)
    INFOS - Jndi(name=global/openejb/MEJB) --> Ejb(deployment-id=MEJB)
    INFOS - Created Ejb(deployment-id=openejb/Deployer, ejb-name=openejb/Deployer, container=Default Stateless Container)
    INFOS - Created Ejb(deployment-id=MEJB, ejb-name=MEJB, container=Default Stateless Container)
    INFOS - Created Ejb(deployment-id=openejb/ConfigurationInfo, ejb-name=openejb/ConfigurationInfo, container=Default Stateless Container)
    INFOS - Started Ejb(deployment-id=openejb/Deployer, ejb-name=openejb/Deployer, container=Default Stateless Container)
    INFOS - Started Ejb(deployment-id=MEJB, ejb-name=MEJB, container=Default Stateless Container)
    INFOS - Started Ejb(deployment-id=openejb/ConfigurationInfo, ejb-name=openejb/ConfigurationInfo, container=Default Stateless Container)
    INFOS - Deployed MBean(openejb.user.mbeans:application=openejb,group=org.apache.openejb.assembler.monitoring,name=JMXDeployer)
    INFOS - Deployed Application(path=openejb)
    INFOS - Creating ServerService(id=cxf-rs)
    INFOS -   ** Bound Services **
    INFOS -   NAME                 IP              PORT  
    INFOS - -------
    INFOS - Ready!
    INFOS - Initialization processed in 2589 ms
    INFOS - Importing a Tomcat Resource with id 'UserDatabase' of type 'org.apache.catalina.UserDatabase'.
    INFOS - Creating Resource(id=UserDatabase)
    INFOS - Démarrage du service Catalina
    INFOS - Starting Servlet Engine: Apache Tomcat (TomEE)/8.0.14 (7.0.0-SNAPSHOT)
    INFOS - Starting ProtocolHandler ["http-nio-52256"]
    INFOS - Starting ProtocolHandler ["ajp-nio-40071"]
    INFOS - Server startup in 140 ms
    oct. 01, 2014 6:30:30 PM org.apache.openejb.client.EventLogger log
    INFOS: RemoteInitialContextCreated{providerUri=http://localhost:52256/tomee/ejb}
    INFOS - Extracting jar: /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/arquillian-test-working-dir/0/UserPersistenceTest.war
    INFOS - Extracted path: /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/arquillian-test-working-dir/0/UserPersistenceTest
    INFOS - using default host: localhost
    INFOS - ------------------------- localhost -> /UserPersistenceTest
    INFOS - Using 'openejb.session.manager=org.apache.tomee.catalina.session.QuickSessionManager'
    INFOS - Configuring enterprise application: /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/arquillian-test-working-dir/0/UserPersistenceTest
    INFOS - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
    INFOS - Auto-creating a container for bean UserPersistenceTest_org.superbiz.arquillian.test.persistence.PersistenceTest: Container(type=MANAGED, id=Default Managed Container)
    INFOS - Creating Container(id=Default Managed Container)
    INFOS - Using directory /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/apache-tomee-remote/apache-tomee-webprofile-7.0.0-SNAPSHOT/temp for stateful session passivation
    INFOS - Configuring PersistenceUnit(name=demoApplicationPU)
    INFOS - Auto-creating a Resource with id 'demoDataSourceNonJta' of type 'DataSource for 'demoApplicationPU'.
    INFOS - Configuring Service(id=demoDataSourceNonJta, type=Resource, provider-id=demoDataSource)
    INFOS - Creating Resource(id=demoDataSourceNonJta)
    INFOS - Disabling testOnBorrow since no validation query is provided
    INFOS - Adjusting PersistenceUnit demoApplicationPU <non-jta-data-source> to Resource ID 'demoDataSourceNonJta' from 'null'
    INFOS - Enterprise application "/home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/arquillian-test-working-dir/0/UserPersistenceTest" loaded.
    INFOS - Assembling app: /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/arquillian-test-working-dir/0/UserPersistenceTest
    INFOS - OpenJPA dynamically loaded a validation provider.
    INFOS - Starting OpenJPA 2.4.0-nonfinal-1598334
    INFOS - Using dictionary class "org.apache.openjpa.jdbc.sql.HSQLDictionary" (HSQL Database Engine 2.3.2 ,HSQL Database Engine Driver 2.3.2).
    INFOS - Connected to HSQL Database Engine version 2.2 using JDBC driver HSQL Database Engine Driver version 2.3.2. 
    INFOS - SELECT SEQUENCE_SCHEMA, SEQUENCE_NAME FROM INFORMATION_SCHEMA.SYSTEM_SEQUENCES --> 0ms
    INFOS - CREATE TABLE User (id BIGINT NOT NULL, name VARCHAR(255), PRIMARY KEY (id)) --> 0ms
    INFOS - PersistenceUnit(name=demoApplicationPU, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 1075ms
    INFOS - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@13158bbd
    INFOS - OpenWebBeans Container is starting...
    INFOS - Adding OpenWebBeansPlugin : [CdiPlugin]
    INFOS - All injection points were validated successfully.
    INFOS - OpenWebBeans Container has started, it took 224 ms.
    INFOS - Deployed Application(path=/home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/arquillian-test-working-dir/0/UserPersistenceTest)
    INFOS - At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
    AVERTISSEMENT - Potential problem found: The configured data type factory 'class org.dbunit.dataset.datatype.DefaultDataTypeFactory' might cause problems with the current database 'HSQL Database Engine' (e.g. some datatypes may not be supported properly). In rare cases you might see this message because the list of supported database products is incomplete (list=[derby]). If so please request a java-class update via the forums.If you are using your own IDataTypeFactory extending DefaultDataTypeFactory, ensure that you override getValidDbProducts() to specify the supported database products.
    INFOS - insert into USER (ID, NAME) values (1, TomEE) --> 1ms
    INFOS - insert into USER (ID, NAME) values (1, 2)TomEE,Old) --> 0ms
    INFOS - SELECT COUNT(t0.id) FROM User t0 --> 0ms
    INFOS - SELECT t0.name FROM User t0 WHERE t0.id = 2 --> 0ms
    INFOS - UPDATE User SET name = OpenEJB WHERE id = 2 --> 1ms
    INFOS - select ID, NAME from USER order by ID --> 0ms
    INFOS - select ID, NAME from USER order by ID --> 0ms
    INFOS - select ID, NAME from USER order by ID --> 0ms
    INFOS - select ID, NAME from USER order by ID --> 0ms
    INFOS - delete from USER --> 0ms
    oct. 01, 2014 6:30:34 PM org.apache.openejb.client.EventLogger log
    INFOS: RemoteInitialContextCreated{providerUri=http://localhost:52256/tomee/ejb}
    INFOS - Undeploying app: /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/arquillian-test-working-dir/0/UserPersistenceTest
    oct. 01, 2014 6:30:34 PM org.apache.openejb.arquillian.common.TomEEContainer undeploy
    INFOS: cleaning /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/arquillian-test-working-dir/0
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.242 sec
    INFOS - A valid shutdown command was received via the shutdown port. Stopping the Server instance.
    INFOS - Pausing ProtocolHandler ["http-nio-52256"]
    INFOS - Pausing ProtocolHandler ["ajp-nio-40071"]
    INFOS - Arrêt du service Catalina
    INFOS - Stopping ProtocolHandler ["http-nio-52256"]
    INFOS - Stopping ProtocolHandler ["ajp-nio-40071"]
    INFOS - Stopping server services
    INFOS - Undeploying app: openejb
    INFOS - Closing DataSource: demoDataSource
    INFOS - Closing DataSource: demoDataSourceNonJta
    INFOS - Destroying ProtocolHandler ["http-nio-52256"]
    INFOS - Destroying ProtocolHandler ["ajp-nio-40071"]
    
    Results :
    
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
```
