This is an automated email from the ASF dual-hosted git repository.

rzo1 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomee.git

commit 5b79c0f8e2517779a0058b3f0c4f584e35575431
Author: Richard Zowalla <[email protected]>
AuthorDate: Thu Mar 24 09:44:00 2022 +0100

    Modernizes JPA example to use Hibernate 5.6.x / JakartaEE + modern way of 
testing
---
 .../{h3jpa => h5jpa}/MoviesArquillianTest.java     |   2 +-
 examples/jpa-hibernate/README.adoc                 | 253 ++++++++++++++------
 examples/jpa-hibernate/README_es.adoc              | 261 +++++++++++++++------
 examples/jpa-hibernate/README_pt.adoc              | 258 ++++++++++++++------
 examples/jpa-hibernate/pom.xml                     |  30 +--
 .../superbiz/injection/{h3jpa => h5jpa}/Movie.java |   2 +-
 .../injection/{h3jpa => h5jpa}/Movies.java         |   2 +-
 .../src/main/resources/META-INF/persistence.xml    |  32 ---
 .../injection/{h3jpa => h5jpa}/MoviesTest.java     |  57 +++--
 9 files changed, 611 insertions(+), 286 deletions(-)

diff --git 
a/examples/jpa-hibernate-arquillian/src/test/java/org/superbiz/injection/h3jpa/MoviesArquillianTest.java
 
b/examples/jpa-hibernate-arquillian/src/test/java/org/superbiz/injection/h5jpa/MoviesArquillianTest.java
similarity index 98%
rename from 
examples/jpa-hibernate-arquillian/src/test/java/org/superbiz/injection/h3jpa/MoviesArquillianTest.java
rename to 
examples/jpa-hibernate-arquillian/src/test/java/org/superbiz/injection/h5jpa/MoviesArquillianTest.java
index ab907b1..abb0fa8 100644
--- 
a/examples/jpa-hibernate-arquillian/src/test/java/org/superbiz/injection/h3jpa/MoviesArquillianTest.java
+++ 
b/examples/jpa-hibernate-arquillian/src/test/java/org/superbiz/injection/h5jpa/MoviesArquillianTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.superbiz.injection.h3jpa;
+package org.superbiz.injection.h5jpa;
 
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
diff --git a/examples/jpa-hibernate/README.adoc 
b/examples/jpa-hibernate/README.adoc
index c13ee73..a8df55b 100644
--- a/examples/jpa-hibernate/README.adoc
+++ b/examples/jpa-hibernate/README.adoc
@@ -13,16 +13,16 @@ Links to the documentation have been added in key parts of 
the example for the c
 == Movie
 
 Here we have a class with some details. See the annotation 
-link:https://tomee.apache.org/tomee-8.0/javadoc/javax/persistence/Entity.html[@Entity]
 
+link:https://tomee.apache.org/tomee-9.0/javadoc/jakarta/persistence/Entity.html[@Entity]
 above the declaration, with it we are saying that this class is an entity (a 
table in the database). We still have two more annotations above the attribute 
id, one of them is 
-link:https://tomee.apache.org/tomee-8.0/javadoc/javax/persistence/Id.html[@Id] 
+link:https://tomee.apache.org/tomee-9.0/javadoc/jakarta/persistence/Id.html[@Id]
 annotation, it indicates that this attribute is the identifier of the entity 
and the other annotation 
-link:https://tomee.apache.org/tomee-8.0/javadoc/javax/persistence/GeneratedValue.html[@GeneratedValue]
 
+link:https://tomee.apache.org/tomee-9.0/javadoc/jakarta/persistence/GeneratedValue.html[@GeneratedValue]
 indicates that the unique identifier value generation of the entity will be 
managed by the persistence provider.
 
 [source,java]
 ----
-package org.superbiz.injection.h3jpa;
+package org.superbiz.injection.h5jpa;
 
 import jakarta.persistence.Entity;
 import jakarta.persistence.GeneratedValue;
@@ -93,7 +93,7 @@ 
link:https://tomee.apache.org/tomee-8.0/javadoc/javax/persistence/PersistenceCon
 
 [source,java]
 ----
-package org.superbiz.injection.h3jpa;
+package org.superbiz.injection.h5jpa;
 
 import jakarta.ejb.Stateful;
 import jakarta.persistence.EntityManager;
@@ -125,22 +125,27 @@ public class Movies {
 
 == persistence.xml
 
-Here we define which database will persist our movies, and we perform other 
configurations such as: define a persistence-unit with the name movie-unit, 
followed by the definition of the JPA provider/implementation (in this case 
Hibernate) and we set some properties for hibernate:
-
- <persistence version="1.0"
-              xmlns="http://java.sun.com/xml/ns/persistence";
-              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-              xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd";>
-   <persistence-unit name="movie-unit">
-     <provider>org.hibernate.ejb.HibernatePersistence</provider>
-     <jta-data-source>movieDatabase</jta-data-source>
-     <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
-     <properties>
-       <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
-       <property name="hibernate.dialect" 
value="org.hibernate.dialect.HSQLDialect"/>
-     </properties>
-   </persistence-unit>
- </persistence>
+Here we define which database will persist our movies, and we perform other 
configurations such as: define a persistence-unit with the name movie-unit, 
followed by the definition of the JPA provider/implementation (in this case 
Hibernate) and we set some properties for hibernate.
+Note, that we are using application composers in our test, so we do not need 
it in it's xml representation.
+
+[source,xml]
+----
+<persistence xmlns="https://jakarta.ee/xml/ns/persistence";
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+             xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence 
https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd";
+             version="3.0">
+  <persistence-unit name="movie-unit">
+    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <properties>
+      <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+      <property name="hibernate.dialect" 
value="org.hibernate.dialect.HSQLDialect"/>
+      <property name="tomee.jpa.cdi" value="false"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
 
 == MoviesTest
 
@@ -148,29 +153,59 @@ Now we do a test, persisting three films, then we perform 
a search and finally w
 
 [source,java]
 ----
-package org.superbiz.injection.h3jpa;
-
-import junit.framework.TestCase;
+package org.superbiz.injection.h5jpa;
+
+import jakarta.inject.Inject;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.jpa.unit.PersistenceUnit;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.Configuration;
+import org.apache.openejb.testing.Module;
+import org.junit.Test;
+import org.junit.runner.RunWith;
 
-import jakarta.ejb.embeddable.EJBContainer;
-import javax.naming.Context;
 import java.util.List;
 import java.util.Properties;
 
-/**
- * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 
2007) $
- */
-public class MoviesTest extends TestCase {
+import static org.junit.Assert.assertEquals;
 
-    public void test() throws Exception {
-        final Properties p = new Properties();
+@RunWith(ApplicationComposer.class)
+public class MoviesTest {
+
+    @Inject
+    private Movies movies;
+
+    @Module
+    public PersistenceUnit persistence() {
+        PersistenceUnit unit = new PersistenceUnit("movie-unit");
+        unit.setJtaDataSource("movieDatabase");
+        unit.setNonJtaDataSource("movieDatabaseUnmanaged");
+        unit.getClazz().add(Movie.class.getName());
+        unit.setProvider("org.hibernate.jpa.HibernatePersistenceProvider");
+        unit.setProperty("hibernate.hbm2ddl.auto", "create-drop");
+        unit.setProperty("tomee.jpa.cdi", "false");
+        return unit;
+    }
+
+    @Module
+    @Classes(cdi = true, value = Movies.class)
+    public EjbJar beans() {
+        EjbJar ejbJar = new EjbJar("movie-beans");
+        return ejbJar;
+    }
+
+    @Configuration
+    public Properties config() throws Exception {
+        Properties p = new Properties();
         p.put("movieDatabase", "new://Resource?type=DataSource");
         p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
         p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+        return p;
+    }
 
-        final Context context = 
EJBContainer.createEJBContainer(p).getContext();
-        Movies movies = (Movies) 
context.lookup("java:global/jpa-hibernate/Movies");
-
+    @Test
+    public void test() throws Exception {
         movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 
1992));
         movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
         movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
@@ -187,17 +222,17 @@ public class MoviesTest extends TestCase {
 }
 ----
 
-= Running
+== Running
 
 To run the example via maven:
 
 Access the project folder:
-[source,java]
+[source,bash]
 ----
 cd jpa-hibernate
 ----
 And execute:
-[source,java]
+[source,bash]
 ----
 mvn clean install
 ----
@@ -209,39 +244,115 @@ Which will generate output similar to the following:
 -------------------------------------------------------
  T E S T S
 -------------------------------------------------------
-Running org.superbiz.injection.h3jpa.MoviesTest
-Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
-http://tomee.apache.org/
-INFO - openejb.home = /Users/dblevins/examples/jpa-hibernate
-INFO - openejb.base = /Users/dblevins/examples/jpa-hibernate
-INFO - Using 'jakarta.ejb.embeddable.EJBContainer=true'
-INFO - Configuring Service(id=Default Security Service, type=SecurityService, 
provider-id=Default Security Service)
-INFO - Configuring Service(id=Default Transaction Manager, 
type=TransactionManager, provider-id=Default Transaction Manager)
-INFO - Configuring Service(id=movieDatabase, type=Resource, 
provider-id=Default JDBC Database)
-INFO - Found EjbModule in classpath: 
/Users/dblevins/examples/jpa-hibernate/target/classes
-INFO - Beginning load: /Users/dblevins/examples/jpa-hibernate/target/classes
-INFO - Configuring enterprise application: 
/Users/dblevins/examples/jpa-hibernate
-INFO - Configuring Service(id=Default Stateful Container, type=Container, 
provider-id=Default Stateful Container)
-INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, 
id=Default Stateful Container)
-INFO - Configuring Service(id=Default Managed Container, type=Container, 
provider-id=Default Managed Container)
-INFO - Auto-creating a container for bean 
org.superbiz.injection.h3jpa.MoviesTest: Container(type=MANAGED, id=Default 
Managed Container)
-INFO - Configuring PersistenceUnit(name=movie-unit, 
provider=org.hibernate.ejb.HibernatePersistence)
-INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 
'DataSource for 'movie-unit'.
-INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, 
provider-id=movieDatabase)
-INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource 
ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
-INFO - Enterprise application "/Users/dblevins/examples/jpa-hibernate" loaded.
-INFO - Assembling app: /Users/dblevins/examples/jpa-hibernate
-INFO - PersistenceUnit(name=movie-unit, 
provider=org.hibernate.ejb.HibernatePersistence) - provider time 631ms
-INFO - 
Jndi(name="java:global/jpa-hibernate/Movies!org.superbiz.injection.h3jpa.Movies")
-INFO - Jndi(name="java:global/jpa-hibernate/Movies")
-INFO - 
Jndi(name="java:global/EjbModule1235930463/org.superbiz.injection.h3jpa.MoviesTest!org.superbiz.injection.h3jpa.MoviesTest")
-INFO - 
Jndi(name="java:global/EjbModule1235930463/org.superbiz.injection.h3jpa.MoviesTest")
-INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
-INFO - Created Ejb(deployment-id=org.superbiz.injection.h3jpa.MoviesTest, 
ejb-name=org.superbiz.injection.h3jpa.MoviesTest, container=Default Managed 
Container)
-INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
-INFO - Started Ejb(deployment-id=org.superbiz.injection.h3jpa.MoviesTest, 
ejb-name=org.superbiz.injection.h3jpa.MoviesTest, container=Default Managed 
Container)
-INFO - Deployed Application(path=/Users/dblevins/examples/jpa-hibernate)
-Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.22 sec
+Running org.superbiz.injection.h5jpa.MoviesTest
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Created new singletonService 
org.apache.openejb.cdi.ThreadSingletonServiceImpl@176d53b2
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Succeeded in installing singleton service
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Cannot find the configuration file [conf/openejb.xml].  Will 
attempt to create one for the beans deployed.
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=Default Security Service, 
type=SecurityService, provider-id=Default Security Service)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=Default Transaction Manager, 
type=TransactionManager, provider-id=Default Transaction Manager)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=movieDatabase, type=Resource, 
provider-id=Default JDBC Database)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating TransactionManager(id=Default Transaction Manager)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating SecurityService(id=Default Security Service)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating Resource(id=movieDatabase)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring enterprise application: 
/home/zowallar/Dokumente/work/coding/tomee/examples/jpa-hibernate/MoviesTest
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Auto-deploying ejb Movies: EjbDeployment(deployment-id=Movies)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=Default Managed Container, type=Container, 
provider-id=Default Managed Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Auto-creating a container for bean 
org.superbiz.injection.h5jpa.MoviesTest: Container(type=MANAGED, id=Default 
Managed Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating Container(id=Default Managed Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Using directory /tmp for stateful session passivation
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=Default Stateful Container, 
type=Container, provider-id=Default Stateful Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Auto-creating a container for bean Movies: 
Container(type=STATEFUL, id=Default Stateful Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating Container(id=Default Stateful Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Using directory /tmp for stateful session passivation
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring PersistenceUnit(name=movie-unit, 
provider=org.hibernate.jpa.HibernatePersistenceProvider)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Auto-creating a Resource with id 'movieDatabaseNonJta' of type 
'DataSource' for 'movie-unit'.
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=movieDatabaseNonJta, type=Resource, 
provider-id=movieDatabase)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating Resource(id=movieDatabaseNonJta)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Adjusting PersistenceUnit movie-unit <non-jta-data-source> to 
Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+März 24, 2022 9:34:40 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Enterprise application 
"/home/zowallar/Dokumente/work/coding/tomee/examples/jpa-hibernate/MoviesTest" 
loaded.
+März 24, 2022 9:34:40 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Not creating another application classloader for MoviesTest
+März 24, 2022 9:34:40 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Assembling app: 
/home/zowallar/Dokumente/work/coding/tomee/examples/jpa-hibernate/MoviesTest
+März 24, 2022 9:34:40 VORM. org.hibernate.jpa.internal.util.LogHelper 
logPersistenceUnitInformation
+INFO: HHH000204: Processing PersistenceUnitInfo [name: movie-unit]
+März 24, 2022 9:34:40 VORM. org.hibernate.Version logVersion
+INFO: HHH000412: Hibernate ORM core version 5.6.7.Final
+März 24, 2022 9:34:40 VORM. 
org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
+INFO: HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
+März 24, 2022 9:34:40 VORM. org.hibernate.dialect.Dialect <init>
+INFO: HHH000400: Using dialect: org.hibernate.dialect.HSQLDialect
+März 24, 2022 9:34:40 VORM. 
org.hibernate.resource.beans.spi.ManagedBeanRegistryInitiator 
resolveBeanContainer
+INFO: HHH10005002: No explicit CDI BeanManager reference was passed to 
Hibernate, but CDI is available on the Hibernate ClassLoader.
+März 24, 2022 9:34:40 VORM. 
org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator 
initiateService
+INFO: HHH000490: Using JtaPlatform implementation: 
[org.apache.openejb.hibernate.OpenEJBJtaPlatform2]
+März 24, 2022 9:34:40 VORM. org.hibernate.validator.internal.util.Version 
<clinit>
+INFO: HV000001: Hibernate Validator 7.0.4.Final
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: PersistenceUnit(name=movie-unit, 
provider=org.hibernate.jpa.HibernatePersistenceProvider) - provider time 1292ms
+WARNING: An illegal reflective access operation has occurred
+WARNING: Illegal reflective access by 
org.apache.openejb.util.proxy.ClassDefiner 
(file:/home/zowallar/.m2/repository/org/apache/tomee/openejb-core/9.0.0-M8-SNAPSHOT/openejb-core-9.0.0-M8-SNAPSHOT.jar)
 to method 
java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
+WARNING: Please consider reporting this to the maintainers of 
org.apache.openejb.util.proxy.ClassDefiner
+WARNING: Use --illegal-access=warn to enable warnings of further illegal 
reflective access operations
+WARNING: All illegal access operations will be denied in a future release
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Jndi(name=MoviesLocalBean) --> Ejb(deployment-id=Movies)
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: 
Jndi(name=global/MoviesTest/movie-beans/Movies!org.superbiz.injection.h5jpa.Movies)
 --> Ejb(deployment-id=Movies)
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Jndi(name=global/MoviesTest/movie-beans/Movies) --> 
Ejb(deployment-id=Movies)
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Existing thread singleton service in SystemInstance(): 
org.apache.openejb.cdi.ThreadSingletonServiceImpl@176d53b2
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: OpenWebBeans Container is starting...
+März 24, 2022 9:34:41 VORM. org.apache.webbeans.plugins.PluginLoader startUp
+INFORMATION: Adding OpenWebBeansPlugin : [CdiPlugin]
+März 24, 2022 9:34:42 VORM. org.apache.webbeans.config.BeansDeployer 
validateInjectionPoints
+INFORMATION: All injection points were validated successfully.
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: OpenWebBeans Container has started, it took 665 ms.
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Created Ejb(deployment-id=Movies, ejb-name=Movies, 
container=Default Stateful Container)
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Started Ejb(deployment-id=Movies, ejb-name=Movies, 
container=Default Stateful Container)
+März 24, 2022 9:34:42 VORM. 
org.apache.batchee.container.services.ServicesManager init
+WARNUNG: You didn't specify org.apache.batchee.jmx.application and JMX is 
already registered, skipping
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Deployed 
Application(path=/home/zowallar/Dokumente/work/coding/tomee/examples/jpa-hibernate/MoviesTest)
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Undeploying app: 
/home/zowallar/Dokumente/work/coding/tomee/examples/jpa-hibernate/MoviesTest
+März 24, 2022 9:34:42 VORM. 
org.hibernate.tool.schema.internal.SchemaDropperImpl$DelayedDropActionImpl 
perform
+INFO: HHH000477: Starting delayed evictData of schema as part of 
SessionFactory shut-down'
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Closing DataSource: movieDatabase
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Closing DataSource: movieDatabaseNonJta
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.567 sec
 
 Results :
 
diff --git a/examples/jpa-hibernate/README_es.adoc 
b/examples/jpa-hibernate/README_es.adoc
index 401201f..2689e30 100644
--- a/examples/jpa-hibernate/README_es.adoc
+++ b/examples/jpa-hibernate/README_es.adoc
@@ -23,7 +23,7 @@ indica que la generación de los identificadores únicos será 
administrada por
 
 [source,java]
 ----
-package org.superbiz.injection.h3jpa;
+package org.superbiz.injection.h5jpa;
 
 import jakarta.persistence.Entity;
 import jakarta.persistence.GeneratedValue;
@@ -80,17 +80,18 @@ public class Movie {
 == Movies
 
 Ahora tenemos dos cosas importantes: la anotacion
-link:https://tomee.apache.org/tomee-8.0/javadoc/javax/persistence/PersistenceContext.html[@PersistenceContext]
 
+link:https://tomee.apache.org/tomee-9.0/javadoc/jakarta/persistence/PersistenceContext.html[@PersistenceContext]
 y  la declaracion 
-link:https://tomee.apache.org/tomee-8.0/javadoc/javax/persistence/EntityManager.html[EntityManager].
+link:https://tomee.apache.org/tomee-8.0/javadoc/jakarta/persistence/EntityManager.html[EntityManager].
 es la interfaz con los métodos principales de JPA como persistir, eliminar, 
fusionar, buscar y otros ...
 Anotamos el
-link:https://tomee.apache.org/tomee-8.0/javadoc/javax/persistence/EntityManager.html[EntityManager]
 
+link:https://tomee.apache.org/tomee-9.0/javadoc/jakarta/persistence/EntityManager.html[EntityManager]
 com 
-link:https://tomee.apache.org/tomee-8.0/javadoc/javax/persistence/PersistenceContext.html[@PersistenceContext],
 um contexto de persistência é um gerenciamento de entidades onde, todo 
contexto de persistência é associado com uma unidade de persistência 
(persistence-unit), un contexto de persistencia es una gestión de entidad donde 
cada contexto de persistencia asociado con una unidad de persistencia, 
crearemos un persistence.xml para esto.
+link:https://tomee.apache.org/tomee-9.0/javadoc/jakarta/persistence/PersistenceContext.html[@PersistenceContext],
 um contexto de persistência é um gerenciamento de entidades onde, todo 
contexto de persistência é associado com uma unidade de persistência 
(persistence-unit), un contexto de persistencia es una gestión de entidad donde 
cada contexto de persistencia asociado con una unidad de persistencia, 
crearemos un persistence.xml para esto.
+
 [source,java]
 ----
-package org.superbiz.injection.h3jpa;
+package org.superbiz.injection.h5jpa;
 
 import jakarta.ejb.Stateful;
 import jakarta.persistence.EntityManager;
@@ -122,51 +123,88 @@ public class Movies {
 
 == persistence.xml
 
-Aquí definimos qué base de datos persistirá nuestras películas, y realizamos 
otras configuraciones como: definir una unidad de persistencia con el nombre de 
unidad de la película, seguido de la definición del proveedor/implementación de 
JPA (en este caso Hibernate) y establecemos algunos propiedades para hibernar:
-
- <persistence version="1.0"
-              xmlns="http://java.sun.com/xml/ns/persistence";
-              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-              xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd";>
-   <persistence-unit name="movie-unit">
-     <provider>org.hibernate.ejb.HibernatePersistence</provider>
-     <jta-data-source>movieDatabase</jta-data-source>
-     <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
-     <properties>
-       <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
-       <property name="hibernate.dialect" 
value="org.hibernate.dialect.HSQLDialect"/>
-     </properties>
-   </persistence-unit>
- </persistence>
+Aquí definimos qué base de datos persistirá nuestras películas, y realizamos 
otras configuraciones como: definir una unidad de persistencia con el nombre de 
unidad de la película, seguido de la definición del proveedor/implementación de 
JPA (en este caso Hibernate) y establecemos algunos propiedades para hibernar.
+Tenga en cuenta que estamos utilizando compositores de aplicaciones en nuestra 
prueba, por lo que no necesitamos en su representación xml.
+
+[source,xml]
+----
+<persistence xmlns="https://jakarta.ee/xml/ns/persistence";
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+             xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence 
https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd";
+             version="3.0">
+  <persistence-unit name="movie-unit">
+    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <properties>
+      <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+      <property name="hibernate.dialect" 
value="org.hibernate.dialect.HSQLDialect"/>
+      <property name="tomee.jpa.cdi" value="false"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+
+----
 
 == MoviesTest
 
 Ahora hacemos una prueba, persistiendo tres películas, luego realizamos una 
búsqueda y finalmente las eliminamos.
+
 [source,java]
 ----
-package org.superbiz.injection.h3jpa;
+package org.superbiz.injection.h5jpa;
+
+import jakarta.inject.Inject;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.jpa.unit.PersistenceUnit;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.Configuration;
+import org.apache.openejb.testing.Module;
+import org.junit.Test;
+import org.junit.runner.RunWith;
 
-import junit.framework.TestCase;
-
-import jakarta.ejb.embeddable.EJBContainer;
-import javax.naming.Context;
 import java.util.List;
 import java.util.Properties;
 
-/**
- * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 
2007) $
- */
-public class MoviesTest extends TestCase {
+import static org.junit.Assert.assertEquals;
 
-    public void test() throws Exception {
-        final Properties p = new Properties();
+@RunWith(ApplicationComposer.class)
+public class MoviesTest {
+
+    @Inject
+    private Movies movies;
+
+    @Module
+    public PersistenceUnit persistence() {
+        PersistenceUnit unit = new PersistenceUnit("movie-unit");
+        unit.setJtaDataSource("movieDatabase");
+        unit.setNonJtaDataSource("movieDatabaseUnmanaged");
+        unit.getClazz().add(Movie.class.getName());
+        unit.setProvider("org.hibernate.jpa.HibernatePersistenceProvider");
+        unit.setProperty("hibernate.hbm2ddl.auto", "create-drop");
+        unit.setProperty("tomee.jpa.cdi", "false");
+        return unit;
+    }
+
+    @Module
+    @Classes(cdi = true, value = Movies.class)
+    public EjbJar beans() {
+        EjbJar ejbJar = new EjbJar("movie-beans");
+        return ejbJar;
+    }
+
+    @Configuration
+    public Properties config() throws Exception {
+        Properties p = new Properties();
         p.put("movieDatabase", "new://Resource?type=DataSource");
         p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
         p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+        return p;
+    }
 
-        final Context context = 
EJBContainer.createEJBContainer(p).getContext();
-        Movies movies = (Movies) 
context.lookup("java:global/jpa-hibernate/Movies");
-
+    @Test
+    public void test() throws Exception {
         movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 
1992));
         movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
         movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
@@ -183,20 +221,20 @@ public class MoviesTest extends TestCase {
 }
 ----
 
-= Ejecutando
+== Ejecutando
 
 Para ejecutar el ejemplo a través de maven:
 
 Acceda a la carpeta del proyecto:
 
-[source,java]
+[source,bash]
 ----
 cd jpa-hibernate
 ----
 
 y ejecute:
 
-[source,java]
+[source,bash]
 ----
 mvn clean install
 ----
@@ -208,39 +246,118 @@ Lo que generará una salida similar a la siguiente:
 -------------------------------------------------------
  T E S T S
 -------------------------------------------------------
-Running org.superbiz.injection.h3jpa.MoviesTest
-Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
-http://tomee.apache.org/
-INFO - openejb.home = /Users/dblevins/examples/jpa-hibernate
-INFO - openejb.base = /Users/dblevins/examples/jpa-hibernate
-INFO - Using 'jakarta.ejb.embeddable.EJBContainer=true'
-INFO - Configuring Service(id=Default Security Service, type=SecurityService, 
provider-id=Default Security Service)
-INFO - Configuring Service(id=Default Transaction Manager, 
type=TransactionManager, provider-id=Default Transaction Manager)
-INFO - Configuring Service(id=movieDatabase, type=Resource, 
provider-id=Default JDBC Database)
-INFO - Found EjbModule in classpath: 
/Users/dblevins/examples/jpa-hibernate/target/classes
-INFO - Beginning load: /Users/dblevins/examples/jpa-hibernate/target/classes
-INFO - Configuring enterprise application: 
/Users/dblevins/examples/jpa-hibernate
-INFO - Configuring Service(id=Default Stateful Container, type=Container, 
provider-id=Default Stateful Container)
-INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, 
id=Default Stateful Container)
-INFO - Configuring Service(id=Default Managed Container, type=Container, 
provider-id=Default Managed Container)
-INFO - Auto-creating a container for bean 
org.superbiz.injection.h3jpa.MoviesTest: Container(type=MANAGED, id=Default 
Managed Container)
-INFO - Configuring PersistenceUnit(name=movie-unit, 
provider=org.hibernate.ejb.HibernatePersistence)
-INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 
'DataSource for 'movie-unit'.
-INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, 
provider-id=movieDatabase)
-INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource 
ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
-INFO - Enterprise application "/Users/dblevins/examples/jpa-hibernate" loaded.
-INFO - Assembling app: /Users/dblevins/examples/jpa-hibernate
-INFO - PersistenceUnit(name=movie-unit, 
provider=org.hibernate.ejb.HibernatePersistence) - provider time 631ms
-INFO - 
Jndi(name="java:global/jpa-hibernate/Movies!org.superbiz.injection.h3jpa.Movies")
-INFO - Jndi(name="java:global/jpa-hibernate/Movies")
-INFO - 
Jndi(name="java:global/EjbModule1235930463/org.superbiz.injection.h3jpa.MoviesTest!org.superbiz.injection.h3jpa.MoviesTest")
-INFO - 
Jndi(name="java:global/EjbModule1235930463/org.superbiz.injection.h3jpa.MoviesTest")
-INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
-INFO - Created Ejb(deployment-id=org.superbiz.injection.h3jpa.MoviesTest, 
ejb-name=org.superbiz.injection.h3jpa.MoviesTest, container=Default Managed 
Container)
-INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
-INFO - Started Ejb(deployment-id=org.superbiz.injection.h3jpa.MoviesTest, 
ejb-name=org.superbiz.injection.h3jpa.MoviesTest, container=Default Managed 
Container)
-INFO - Deployed Application(path=/Users/dblevins/examples/jpa-hibernate)
-Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.22 sec
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.h5jpa.MoviesTest
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Created new singletonService 
org.apache.openejb.cdi.ThreadSingletonServiceImpl@176d53b2
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Succeeded in installing singleton service
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Cannot find the configuration file [conf/openejb.xml].  Will 
attempt to create one for the beans deployed.
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=Default Security Service, 
type=SecurityService, provider-id=Default Security Service)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=Default Transaction Manager, 
type=TransactionManager, provider-id=Default Transaction Manager)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=movieDatabase, type=Resource, 
provider-id=Default JDBC Database)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating TransactionManager(id=Default Transaction Manager)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating SecurityService(id=Default Security Service)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating Resource(id=movieDatabase)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring enterprise application: 
/home/zowallar/Dokumente/work/coding/tomee/examples/jpa-hibernate/MoviesTest
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Auto-deploying ejb Movies: EjbDeployment(deployment-id=Movies)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=Default Managed Container, type=Container, 
provider-id=Default Managed Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Auto-creating a container for bean 
org.superbiz.injection.h5jpa.MoviesTest: Container(type=MANAGED, id=Default 
Managed Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating Container(id=Default Managed Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Using directory /tmp for stateful session passivation
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=Default Stateful Container, 
type=Container, provider-id=Default Stateful Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Auto-creating a container for bean Movies: 
Container(type=STATEFUL, id=Default Stateful Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating Container(id=Default Stateful Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Using directory /tmp for stateful session passivation
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring PersistenceUnit(name=movie-unit, 
provider=org.hibernate.jpa.HibernatePersistenceProvider)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Auto-creating a Resource with id 'movieDatabaseNonJta' of type 
'DataSource' for 'movie-unit'.
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=movieDatabaseNonJta, type=Resource, 
provider-id=movieDatabase)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating Resource(id=movieDatabaseNonJta)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Adjusting PersistenceUnit movie-unit <non-jta-data-source> to 
Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+März 24, 2022 9:34:40 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Enterprise application 
"/home/zowallar/Dokumente/work/coding/tomee/examples/jpa-hibernate/MoviesTest" 
loaded.
+März 24, 2022 9:34:40 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Not creating another application classloader for MoviesTest
+März 24, 2022 9:34:40 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Assembling app: 
/home/zowallar/Dokumente/work/coding/tomee/examples/jpa-hibernate/MoviesTest
+März 24, 2022 9:34:40 VORM. org.hibernate.jpa.internal.util.LogHelper 
logPersistenceUnitInformation
+INFO: HHH000204: Processing PersistenceUnitInfo [name: movie-unit]
+März 24, 2022 9:34:40 VORM. org.hibernate.Version logVersion
+INFO: HHH000412: Hibernate ORM core version 5.6.7.Final
+März 24, 2022 9:34:40 VORM. 
org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
+INFO: HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
+März 24, 2022 9:34:40 VORM. org.hibernate.dialect.Dialect <init>
+INFO: HHH000400: Using dialect: org.hibernate.dialect.HSQLDialect
+März 24, 2022 9:34:40 VORM. 
org.hibernate.resource.beans.spi.ManagedBeanRegistryInitiator 
resolveBeanContainer
+INFO: HHH10005002: No explicit CDI BeanManager reference was passed to 
Hibernate, but CDI is available on the Hibernate ClassLoader.
+März 24, 2022 9:34:40 VORM. 
org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator 
initiateService
+INFO: HHH000490: Using JtaPlatform implementation: 
[org.apache.openejb.hibernate.OpenEJBJtaPlatform2]
+März 24, 2022 9:34:40 VORM. org.hibernate.validator.internal.util.Version 
<clinit>
+INFO: HV000001: Hibernate Validator 7.0.4.Final
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: PersistenceUnit(name=movie-unit, 
provider=org.hibernate.jpa.HibernatePersistenceProvider) - provider time 1292ms
+WARNING: An illegal reflective access operation has occurred
+WARNING: Illegal reflective access by 
org.apache.openejb.util.proxy.ClassDefiner 
(file:/home/zowallar/.m2/repository/org/apache/tomee/openejb-core/9.0.0-M8-SNAPSHOT/openejb-core-9.0.0-M8-SNAPSHOT.jar)
 to method 
java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
+WARNING: Please consider reporting this to the maintainers of 
org.apache.openejb.util.proxy.ClassDefiner
+WARNING: Use --illegal-access=warn to enable warnings of further illegal 
reflective access operations
+WARNING: All illegal access operations will be denied in a future release
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Jndi(name=MoviesLocalBean) --> Ejb(deployment-id=Movies)
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: 
Jndi(name=global/MoviesTest/movie-beans/Movies!org.superbiz.injection.h5jpa.Movies)
 --> Ejb(deployment-id=Movies)
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Jndi(name=global/MoviesTest/movie-beans/Movies) --> 
Ejb(deployment-id=Movies)
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Existing thread singleton service in SystemInstance(): 
org.apache.openejb.cdi.ThreadSingletonServiceImpl@176d53b2
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: OpenWebBeans Container is starting...
+März 24, 2022 9:34:41 VORM. org.apache.webbeans.plugins.PluginLoader startUp
+INFORMATION: Adding OpenWebBeansPlugin : [CdiPlugin]
+März 24, 2022 9:34:42 VORM. org.apache.webbeans.config.BeansDeployer 
validateInjectionPoints
+INFORMATION: All injection points were validated successfully.
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: OpenWebBeans Container has started, it took 665 ms.
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Created Ejb(deployment-id=Movies, ejb-name=Movies, 
container=Default Stateful Container)
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Started Ejb(deployment-id=Movies, ejb-name=Movies, 
container=Default Stateful Container)
+März 24, 2022 9:34:42 VORM. 
org.apache.batchee.container.services.ServicesManager init
+WARNUNG: You didn't specify org.apache.batchee.jmx.application and JMX is 
already registered, skipping
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Deployed 
Application(path=/home/zowallar/Dokumente/work/coding/tomee/examples/jpa-hibernate/MoviesTest)
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Undeploying app: 
/home/zowallar/Dokumente/work/coding/tomee/examples/jpa-hibernate/MoviesTest
+März 24, 2022 9:34:42 VORM. 
org.hibernate.tool.schema.internal.SchemaDropperImpl$DelayedDropActionImpl 
perform
+INFO: HHH000477: Starting delayed evictData of schema as part of 
SessionFactory shut-down'
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Closing DataSource: movieDatabase
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Closing DataSource: movieDatabaseNonJta
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.567 sec
 
 Results :
 
diff --git a/examples/jpa-hibernate/README_pt.adoc 
b/examples/jpa-hibernate/README_pt.adoc
index 1eca3a2..c0451cc 100644
--- a/examples/jpa-hibernate/README_pt.adoc
+++ b/examples/jpa-hibernate/README_pt.adoc
@@ -22,7 +22,7 @@ indica que a geração desses identificadores unicos serão 
gerenciados pelo pro
 
 [source,java]
 ----
-package org.superbiz.injection.h3jpa;
+package org.superbiz.injection.h5jpa;
 
 import jakarta.persistence.Entity;
 import jakarta.persistence.GeneratedValue;
@@ -79,20 +79,20 @@ public class Movie {
 == Movies
 
 Agora nós podemos notar duas coisas diferentes: a anotação  
-link:https://tomee.apache.org/tomee-8.0/javadoc/javax/persistence/PersistenceContext.html[@PersistenceContext]
 
+link:https://tomee.apache.org/tomee-9.0/javadoc/jakarta/persistence/PersistenceContext.html[@PersistenceContext]
 e a declaração de um  
-link:https://tomee.apache.org/tomee-8.0/javadoc/javax/persistence/EntityManager.html[EntityManager].
+link:https://tomee.apache.org/tomee-9.0/javadoc/jakarta/persistence/EntityManager.html[EntityManager].
 O 
-link:https://tomee.apache.org/tomee-8.0/javadoc/javax/persistence/EntityManager.html[EntityManager]
 
+link:https://tomee.apache.org/tomee-9.0/javadoc/jakarta/persistence/EntityManager.html[EntityManager]
 é uma interface com as principais funcionalidades do JPA como persist, remove, 
merge, find e outros...
 Nós anotamos o 
-link:https://tomee.apache.org/tomee-8.0/javadoc/javax/persistence/EntityManager.html[EntityManager]
 
+link:https://tomee.apache.org/tomee-9.0/javadoc/jakarta/persistence/EntityManager.html[EntityManager]
 com 
-link:https://tomee.apache.org/tomee-8.0/javadoc/javax/persistence/PersistenceContext.html[@PersistenceContext],
 um contexto de persistência é um gerenciamento de entidades onde, todo 
contexto de persistência é associado com uma unidade de persistência 
(persistence-unit), logo criaremos um persistence.xml para isso.
+link:https://tomee.apache.org/tomee-9.0/javadoc/jakarta/persistence/PersistenceContext.html[@PersistenceContext],
 um contexto de persistência é um gerenciamento de entidades onde, todo 
contexto de persistência é associado com uma unidade de persistência 
(persistence-unit), logo criaremos um persistence.xml para isso.
 
 [source,java]
 ----
-package org.superbiz.injection.h3jpa;
+package org.superbiz.injection.h5jpa;
 
 import jakarta.ejb.Stateful;
 import jakarta.persistence.EntityManager;
@@ -124,22 +124,28 @@ public class Movies {
 
 == persistence.xml
 
-Aqui nós definimos qual banco de dados vai gravar nossos filmes (Movie) e 
realizamos outras configurações como: definir uma unidade de persistência 
(persistence-unit) com o nome movie-unit, seguidos pela definição do 
provedor/implementação do JPA (no caso o hibernate) e definimos algumas 
properties para o hibernate:
-
- <persistence version="1.0"
-              xmlns="http://java.sun.com/xml/ns/persistence";
-              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-              xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd";>
-   <persistence-unit name="movie-unit">
-     <provider>org.hibernate.ejb.HibernatePersistence</provider>
-     <jta-data-source>movieDatabase</jta-data-source>
-     <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
-     <properties>
-       <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
-       <property name="hibernate.dialect" 
value="org.hibernate.dialect.HSQLDialect"/>
-     </properties>
-   </persistence-unit>
- </persistence>
+Aqui nós definimos qual banco de dados vai gravar nossos filmes (Movie) e 
realizamos outras configurações como: definir uma unidade de persistência 
(persistence-unit) com o nome movie-unit, seguidos pela definição do 
provedor/implementação do JPA (no caso o hibernate) e definimos algumas 
properties para o hibernate.
+Note-se que estamos a utilizar compositores de aplicação no nosso teste, pelo 
que não precisamos dele na sua representação xml.
+
+[source,xml]
+----
+<persistence xmlns="https://jakarta.ee/xml/ns/persistence";
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+             xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence 
https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd";
+             version="3.0">
+  <persistence-unit name="movie-unit">
+    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <properties>
+      <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+      <property name="hibernate.dialect" 
value="org.hibernate.dialect.HSQLDialect"/>
+      <property name="tomee.jpa.cdi" value="false"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+
+----
 
 == MoviesTest
 
@@ -147,29 +153,59 @@ Agora vamos realizar um teste, persistindo três filmes, 
em seguida realizamos u
 
 [source,java]
 ----
-package org.superbiz.injection.h3jpa;
-
-import junit.framework.TestCase;
+package org.superbiz.injection.h5jpa;
+
+import jakarta.inject.Inject;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.jpa.unit.PersistenceUnit;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.Configuration;
+import org.apache.openejb.testing.Module;
+import org.junit.Test;
+import org.junit.runner.RunWith;
 
-import jakarta.ejb.embeddable.EJBContainer;
-import javax.naming.Context;
 import java.util.List;
 import java.util.Properties;
 
-/**
- * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 
2007) $
- */
-public class MoviesTest extends TestCase {
+import static org.junit.Assert.assertEquals;
 
-    public void test() throws Exception {
-        final Properties p = new Properties();
+@RunWith(ApplicationComposer.class)
+public class MoviesTest {
+
+    @Inject
+    private Movies movies;
+
+    @Module
+    public PersistenceUnit persistence() {
+        PersistenceUnit unit = new PersistenceUnit("movie-unit");
+        unit.setJtaDataSource("movieDatabase");
+        unit.setNonJtaDataSource("movieDatabaseUnmanaged");
+        unit.getClazz().add(Movie.class.getName());
+        unit.setProvider("org.hibernate.jpa.HibernatePersistenceProvider");
+        unit.setProperty("hibernate.hbm2ddl.auto", "create-drop");
+        unit.setProperty("tomee.jpa.cdi", "false");
+        return unit;
+    }
+
+    @Module
+    @Classes(cdi = true, value = Movies.class)
+    public EjbJar beans() {
+        EjbJar ejbJar = new EjbJar("movie-beans");
+        return ejbJar;
+    }
+
+    @Configuration
+    public Properties config() throws Exception {
+        Properties p = new Properties();
         p.put("movieDatabase", "new://Resource?type=DataSource");
         p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
         p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+        return p;
+    }
 
-        final Context context = 
EJBContainer.createEJBContainer(p).getContext();
-        Movies movies = (Movies) 
context.lookup("java:global/jpa-hibernate/Movies");
-
+    @Test
+    public void test() throws Exception {
         movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 
1992));
         movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
         movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
@@ -186,18 +222,18 @@ public class MoviesTest extends TestCase {
 }
 ----
 
-= Executando
+== Executando
 
 Para executar o exemplo com o maven, acesse a pasta do projeto:
 
-[source,java]
+[source,bash]
 ----
 cd jpa-hibernate
 ----
 
 E execute:
 
-[source,java]
+[source,bash]
 ----
 mvn clean install
 ----
@@ -209,39 +245,115 @@ Com isso teremos uma saida no terminal similar a esta:
 -------------------------------------------------------
  T E S T S
 -------------------------------------------------------
-Running org.superbiz.injection.h3jpa.MoviesTest
-Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
-http://tomee.apache.org/
-INFO - openejb.home = /Users/dblevins/examples/jpa-hibernate
-INFO - openejb.base = /Users/dblevins/examples/jpa-hibernate
-INFO - Using 'jakarta.ejb.embeddable.EJBContainer=true'
-INFO - Configuring Service(id=Default Security Service, type=SecurityService, 
provider-id=Default Security Service)
-INFO - Configuring Service(id=Default Transaction Manager, 
type=TransactionManager, provider-id=Default Transaction Manager)
-INFO - Configuring Service(id=movieDatabase, type=Resource, 
provider-id=Default JDBC Database)
-INFO - Found EjbModule in classpath: 
/Users/dblevins/examples/jpa-hibernate/target/classes
-INFO - Beginning load: /Users/dblevins/examples/jpa-hibernate/target/classes
-INFO - Configuring enterprise application: 
/Users/dblevins/examples/jpa-hibernate
-INFO - Configuring Service(id=Default Stateful Container, type=Container, 
provider-id=Default Stateful Container)
-INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, 
id=Default Stateful Container)
-INFO - Configuring Service(id=Default Managed Container, type=Container, 
provider-id=Default Managed Container)
-INFO - Auto-creating a container for bean 
org.superbiz.injection.h3jpa.MoviesTest: Container(type=MANAGED, id=Default 
Managed Container)
-INFO - Configuring PersistenceUnit(name=movie-unit, 
provider=org.hibernate.ejb.HibernatePersistence)
-INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 
'DataSource for 'movie-unit'.
-INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, 
provider-id=movieDatabase)
-INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource 
ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
-INFO - Enterprise application "/Users/dblevins/examples/jpa-hibernate" loaded.
-INFO - Assembling app: /Users/dblevins/examples/jpa-hibernate
-INFO - PersistenceUnit(name=movie-unit, 
provider=org.hibernate.ejb.HibernatePersistence) - provider time 631ms
-INFO - 
Jndi(name="java:global/jpa-hibernate/Movies!org.superbiz.injection.h3jpa.Movies")
-INFO - Jndi(name="java:global/jpa-hibernate/Movies")
-INFO - 
Jndi(name="java:global/EjbModule1235930463/org.superbiz.injection.h3jpa.MoviesTest!org.superbiz.injection.h3jpa.MoviesTest")
-INFO - 
Jndi(name="java:global/EjbModule1235930463/org.superbiz.injection.h3jpa.MoviesTest")
-INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
-INFO - Created Ejb(deployment-id=org.superbiz.injection.h3jpa.MoviesTest, 
ejb-name=org.superbiz.injection.h3jpa.MoviesTest, container=Default Managed 
Container)
-INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
-INFO - Started Ejb(deployment-id=org.superbiz.injection.h3jpa.MoviesTest, 
ejb-name=org.superbiz.injection.h3jpa.MoviesTest, container=Default Managed 
Container)
-INFO - Deployed Application(path=/Users/dblevins/examples/jpa-hibernate)
-Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.22 sec
+Running org.superbiz.injection.h5jpa.MoviesTest
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Created new singletonService 
org.apache.openejb.cdi.ThreadSingletonServiceImpl@176d53b2
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Succeeded in installing singleton service
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Cannot find the configuration file [conf/openejb.xml].  Will 
attempt to create one for the beans deployed.
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=Default Security Service, 
type=SecurityService, provider-id=Default Security Service)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=Default Transaction Manager, 
type=TransactionManager, provider-id=Default Transaction Manager)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=movieDatabase, type=Resource, 
provider-id=Default JDBC Database)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating TransactionManager(id=Default Transaction Manager)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating SecurityService(id=Default Security Service)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating Resource(id=movieDatabase)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring enterprise application: 
/home/zowallar/Dokumente/work/coding/tomee/examples/jpa-hibernate/MoviesTest
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Auto-deploying ejb Movies: EjbDeployment(deployment-id=Movies)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=Default Managed Container, type=Container, 
provider-id=Default Managed Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Auto-creating a container for bean 
org.superbiz.injection.h5jpa.MoviesTest: Container(type=MANAGED, id=Default 
Managed Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating Container(id=Default Managed Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Using directory /tmp for stateful session passivation
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=Default Stateful Container, 
type=Container, provider-id=Default Stateful Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Auto-creating a container for bean Movies: 
Container(type=STATEFUL, id=Default Stateful Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating Container(id=Default Stateful Container)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Using directory /tmp for stateful session passivation
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring PersistenceUnit(name=movie-unit, 
provider=org.hibernate.jpa.HibernatePersistenceProvider)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Auto-creating a Resource with id 'movieDatabaseNonJta' of type 
'DataSource' for 'movie-unit'.
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Configuring Service(id=movieDatabaseNonJta, type=Resource, 
provider-id=movieDatabase)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Creating Resource(id=movieDatabaseNonJta)
+März 24, 2022 9:34:39 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Adjusting PersistenceUnit movie-unit <non-jta-data-source> to 
Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+März 24, 2022 9:34:40 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Enterprise application 
"/home/zowallar/Dokumente/work/coding/tomee/examples/jpa-hibernate/MoviesTest" 
loaded.
+März 24, 2022 9:34:40 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Not creating another application classloader for MoviesTest
+März 24, 2022 9:34:40 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Assembling app: 
/home/zowallar/Dokumente/work/coding/tomee/examples/jpa-hibernate/MoviesTest
+März 24, 2022 9:34:40 VORM. org.hibernate.jpa.internal.util.LogHelper 
logPersistenceUnitInformation
+INFO: HHH000204: Processing PersistenceUnitInfo [name: movie-unit]
+März 24, 2022 9:34:40 VORM. org.hibernate.Version logVersion
+INFO: HHH000412: Hibernate ORM core version 5.6.7.Final
+März 24, 2022 9:34:40 VORM. 
org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
+INFO: HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
+März 24, 2022 9:34:40 VORM. org.hibernate.dialect.Dialect <init>
+INFO: HHH000400: Using dialect: org.hibernate.dialect.HSQLDialect
+März 24, 2022 9:34:40 VORM. 
org.hibernate.resource.beans.spi.ManagedBeanRegistryInitiator 
resolveBeanContainer
+INFO: HHH10005002: No explicit CDI BeanManager reference was passed to 
Hibernate, but CDI is available on the Hibernate ClassLoader.
+März 24, 2022 9:34:40 VORM. 
org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator 
initiateService
+INFO: HHH000490: Using JtaPlatform implementation: 
[org.apache.openejb.hibernate.OpenEJBJtaPlatform2]
+März 24, 2022 9:34:40 VORM. org.hibernate.validator.internal.util.Version 
<clinit>
+INFO: HV000001: Hibernate Validator 7.0.4.Final
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: PersistenceUnit(name=movie-unit, 
provider=org.hibernate.jpa.HibernatePersistenceProvider) - provider time 1292ms
+WARNING: An illegal reflective access operation has occurred
+WARNING: Illegal reflective access by 
org.apache.openejb.util.proxy.ClassDefiner 
(file:/home/zowallar/.m2/repository/org/apache/tomee/openejb-core/9.0.0-M8-SNAPSHOT/openejb-core-9.0.0-M8-SNAPSHOT.jar)
 to method 
java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
+WARNING: Please consider reporting this to the maintainers of 
org.apache.openejb.util.proxy.ClassDefiner
+WARNING: Use --illegal-access=warn to enable warnings of further illegal 
reflective access operations
+WARNING: All illegal access operations will be denied in a future release
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Jndi(name=MoviesLocalBean) --> Ejb(deployment-id=Movies)
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: 
Jndi(name=global/MoviesTest/movie-beans/Movies!org.superbiz.injection.h5jpa.Movies)
 --> Ejb(deployment-id=Movies)
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Jndi(name=global/MoviesTest/movie-beans/Movies) --> 
Ejb(deployment-id=Movies)
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Existing thread singleton service in SystemInstance(): 
org.apache.openejb.cdi.ThreadSingletonServiceImpl@176d53b2
+März 24, 2022 9:34:41 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: OpenWebBeans Container is starting...
+März 24, 2022 9:34:41 VORM. org.apache.webbeans.plugins.PluginLoader startUp
+INFORMATION: Adding OpenWebBeansPlugin : [CdiPlugin]
+März 24, 2022 9:34:42 VORM. org.apache.webbeans.config.BeansDeployer 
validateInjectionPoints
+INFORMATION: All injection points were validated successfully.
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: OpenWebBeans Container has started, it took 665 ms.
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Created Ejb(deployment-id=Movies, ejb-name=Movies, 
container=Default Stateful Container)
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Started Ejb(deployment-id=Movies, ejb-name=Movies, 
container=Default Stateful Container)
+März 24, 2022 9:34:42 VORM. 
org.apache.batchee.container.services.ServicesManager init
+WARNUNG: You didn't specify org.apache.batchee.jmx.application and JMX is 
already registered, skipping
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Deployed 
Application(path=/home/zowallar/Dokumente/work/coding/tomee/examples/jpa-hibernate/MoviesTest)
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Undeploying app: 
/home/zowallar/Dokumente/work/coding/tomee/examples/jpa-hibernate/MoviesTest
+März 24, 2022 9:34:42 VORM. 
org.hibernate.tool.schema.internal.SchemaDropperImpl$DelayedDropActionImpl 
perform
+INFO: HHH000477: Starting delayed evictData of schema as part of 
SessionFactory shut-down'
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Closing DataSource: movieDatabase
+März 24, 2022 9:34:42 VORM. org.apache.openejb.util.LogStreamAsync run
+INFORMATION: Closing DataSource: movieDatabaseNonJta
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.567 sec
 
 Results :
 
diff --git a/examples/jpa-hibernate/pom.xml b/examples/jpa-hibernate/pom.xml
index 17b6cac..04346c5 100644
--- a/examples/jpa-hibernate/pom.xml
+++ b/examples/jpa-hibernate/pom.xml
@@ -33,28 +33,12 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.5.1</version>
+        <version>3.8.1</version>
         <configuration>
-          <source>1.8</source>
-          <target>1.8</target>
+          <source>11</source>
+          <target>11</target>
         </configuration>
       </plugin>
-      <plugin>
-        <groupId>org.tomitribe.transformer</groupId>
-        <artifactId>org.eclipse.transformer.maven</artifactId>
-        <version>0.1.1a</version>
-        <configuration>
-          <classifier>jakartaee9</classifier>
-        </configuration>
-        <executions>
-          <execution>
-            <goals>
-              <goal>run</goal>
-            </goals>
-            <phase>package</phase>
-          </execution>
-        </executions>
-      </plugin>
     </plugins>
   </build>
   <repositories>
@@ -88,7 +72,7 @@
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
-      <version>4.12</version>
+      <version>4.13.2</version>
       <scope>test</scope>
     </dependency>
     <!-- openejb (with hibernate) container for running tests -->
@@ -99,6 +83,12 @@
       <type>pom</type>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.tomee.bom</groupId>
+      <artifactId>tomee-plus</artifactId>
+      <version>9.0.0-M8-SNAPSHOT</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <!--
   This section allows you to configure where to publish libraries for sharing.
diff --git 
a/examples/jpa-hibernate/src/main/java/org/superbiz/injection/h3jpa/Movie.java 
b/examples/jpa-hibernate/src/main/java/org/superbiz/injection/h5jpa/Movie.java
similarity index 97%
rename from 
examples/jpa-hibernate/src/main/java/org/superbiz/injection/h3jpa/Movie.java
rename to 
examples/jpa-hibernate/src/main/java/org/superbiz/injection/h5jpa/Movie.java
index 7986527..59a9a09 100644
--- 
a/examples/jpa-hibernate/src/main/java/org/superbiz/injection/h3jpa/Movie.java
+++ 
b/examples/jpa-hibernate/src/main/java/org/superbiz/injection/h5jpa/Movie.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.superbiz.injection.h3jpa;
+package org.superbiz.injection.h5jpa;
 
 import jakarta.persistence.Entity;
 import jakarta.persistence.GeneratedValue;
diff --git 
a/examples/jpa-hibernate/src/main/java/org/superbiz/injection/h3jpa/Movies.java 
b/examples/jpa-hibernate/src/main/java/org/superbiz/injection/h5jpa/Movies.java
similarity index 97%
rename from 
examples/jpa-hibernate/src/main/java/org/superbiz/injection/h3jpa/Movies.java
rename to 
examples/jpa-hibernate/src/main/java/org/superbiz/injection/h5jpa/Movies.java
index c12e5ce..33b19db 100644
--- 
a/examples/jpa-hibernate/src/main/java/org/superbiz/injection/h3jpa/Movies.java
+++ 
b/examples/jpa-hibernate/src/main/java/org/superbiz/injection/h5jpa/Movies.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.superbiz.injection.h3jpa;
+package org.superbiz.injection.h5jpa;
 
 import jakarta.ejb.Stateful;
 import jakarta.persistence.EntityManager;
diff --git a/examples/jpa-hibernate/src/main/resources/META-INF/persistence.xml 
b/examples/jpa-hibernate/src/main/resources/META-INF/persistence.xml
deleted file mode 100644
index 79d2e33..0000000
--- a/examples/jpa-hibernate/src/main/resources/META-INF/persistence.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<persistence version="1.0"
-             xmlns="http://java.sun.com/xml/ns/persistence";
-             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd";>
-  <persistence-unit name="movie-unit">
-    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
-    <jta-data-source>movieDatabase</jta-data-source>
-    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
-    <properties>
-      <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
-      <property name="hibernate.dialect" 
value="org.hibernate.dialect.HSQLDialect"/>
-    </properties>
-  </persistence-unit>
-</persistence>
diff --git 
a/examples/jpa-hibernate/src/test/java/org/superbiz/injection/h3jpa/MoviesTest.java
 
b/examples/jpa-hibernate/src/test/java/org/superbiz/injection/h5jpa/MoviesTest.java
similarity index 53%
rename from 
examples/jpa-hibernate/src/test/java/org/superbiz/injection/h3jpa/MoviesTest.java
rename to 
examples/jpa-hibernate/src/test/java/org/superbiz/injection/h5jpa/MoviesTest.java
index f51d1cf..eb005c0 100644
--- 
a/examples/jpa-hibernate/src/test/java/org/superbiz/injection/h3jpa/MoviesTest.java
+++ 
b/examples/jpa-hibernate/src/test/java/org/superbiz/injection/h5jpa/MoviesTest.java
@@ -14,32 +14,59 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.superbiz.injection.h3jpa;
+package org.superbiz.injection.h5jpa;
 
-import junit.framework.TestCase;
+import jakarta.inject.Inject;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.jpa.unit.PersistenceUnit;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.Configuration;
+import org.apache.openejb.testing.Module;
+import org.junit.Test;
+import org.junit.runner.RunWith;
 
-import jakarta.ejb.embeddable.EJBContainer;
-import javax.naming.Context;
 import java.util.List;
 import java.util.Properties;
 
-/**
- * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 
2007) $
- */
-public class MoviesTest extends TestCase {
+import static org.junit.Assert.assertEquals;
 
-    public void test() throws Exception {
-        System.setProperty("hsqldb.reconfig_logging", "false");
-        System.setProperty("tomee.jpa.factory.lazy", "true");
+@RunWith(ApplicationComposer.class)
+public class MoviesTest {
+
+    @Inject
+    private Movies movies;
+
+    @Module
+    public PersistenceUnit persistence() {
+        PersistenceUnit unit = new PersistenceUnit("movie-unit");
+        unit.setJtaDataSource("movieDatabase");
+        unit.setNonJtaDataSource("movieDatabaseUnmanaged");
+        unit.getClazz().add(Movie.class.getName());
+        unit.setProvider("org.hibernate.jpa.HibernatePersistenceProvider");
+        unit.setProperty("hibernate.hbm2ddl.auto", "create-drop");
+        unit.setProperty("tomee.jpa.cdi", "false");
+        return unit;
+    }
 
-        final Properties p = new Properties();
+    @Module
+    @Classes(cdi = true, value = Movies.class)
+    public EjbJar beans() {
+        EjbJar ejbJar = new EjbJar("movie-beans");
+        return ejbJar;
+    }
+
+    @Configuration
+    public Properties config() throws Exception {
+        Properties p = new Properties();
         p.put("movieDatabase", "new://Resource?type=DataSource");
         p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
         p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+        return p;
+    }
 
-        final Context context = 
EJBContainer.createEJBContainer(p).getContext();
-        Movies movies = (Movies) 
context.lookup("java:global/jpa-hibernate/Movies");
-
+    @Test
+    public void test() throws Exception {
         movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 
1992));
         movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
         movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));

Reply via email to