не получается развернуть встроенный контейнер. Подскажите что делаю не так

изучаю java ee 7 по книге Гонсалвеса, пытаюсь развернуть встроенный ejb контейнер по примеру https://github.com/agoncal/agoncal-book-javaee7/blob/master/chapter08/chapter08-service/src/test/java/org/agoncal/book/javaee7/chapter08/BookEJBIT.java но вместо eclipselink использую hibernate

persistence.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
     http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
                 version="2.1">

        <persistence-unit name="MySQL-Unit" transaction-type="JTA">
            <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
            <jta-data-source>java:global/jdbc/myDS</jta-data-source>
            <properties>
                <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
                <property name="hibernate.show_sql" value="true" />
                <property name="hibernate.hbm2ddl.auto" value="create-drop" />
            </properties>
        </persistence-unit>

    </persistence>

таким образом получаю datasource

package app.utils;

import javax.annotation.sql.DataSourceDefinition;
import javax.ejb.Singleton;
import javax.ejb.Startup;

@Singleton
@Startup
@DataSourceDefinition(
        className = "com.mysql.cj.jdbc.MySQLDataSource",
        name = "java:global/jdbc/myDS",
        user = "root",
        password = "1111",
        databaseName = "test",
        properties = {"serverTimezone=UTC"}
)
public class DatabasePopulator {
}

класс теста


    import org.junit.Test;

    import static org.junit.Assert.*;

    import javax.ejb.embeddable.EJBContainer;
    import javax.naming.Context;
    import javax.naming.NamingException;
    import java.io.File;
    import java.util.HashMap;
    import java.util.Map;

    public class AppTest {

        @Test
        public void test() throws NamingException {
            Map<String, Object> properties = new HashMap<>();
            properties.put(EJBContainer.MODULES, new File("target/classes"));
            try (EJBContainer container = EJBContainer.createEJBContainer(properties)) {
                Context context = container.getContext();
                assertNotNull(context.lookup("java:global/jdbc/myDS"));
            }
        }
    }

pom.xml


    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

        <modelVersion>4.0.0</modelVersion>
        <groupId>com.gmail.seminyden</groupId>
        <artifactId>MavenProject</artifactId>
        <version>1.0</version>
        <packaging>jar</packaging>

        <dependencies>
            <dependency>
                <groupId>fish.payara.extras</groupId>
                <artifactId>payara-embedded-all</artifactId>
                <version>4.1.1.162</version>
                <scope>provided</scope>
            </dependency>
            <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.20</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
            <dependency>
                <groupId>org.hibernate.validator</groupId>
                <artifactId>hibernate-validator</artifactId>
                <version>6.1.2.Final</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>5.4.10.Final</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/javax/javaee-api -->
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-api</artifactId>
                <version>8.0.1</version>
                <scope>provided</scope>
            </dependency>
            <!-- https://mvnrepository.com/artifact/junit/junit -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13</version>
                <scope>test</scope>
            </dependency>
        </dependencies>

        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${version.maven.compiler.plugin}</version>
                    <inherited>true</inherited>
                    <configuration>
                        <source>7</source>
                        <target>7</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>

    </project>

консоль

...

    javax.persistence.PersistenceException: [PersistenceUnit: MySQL-Unit] Unable to build Hibernate SessionFactory
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:13

    Caused by: org.hibernate.HibernateException: DdlTransactionIsolatorJtaImpl could not locate TransactionManager to suspend any current transaction; base JtaPlatform impl (org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform@3c3ab672)?
        at org.hibernate.resource.transaction.backend.jta.internal.DdlTransactionIsolatorJtaImpl.<init>(DdlTransactionIsolatorJtaImpl.java:46)

    SEVERE: Exception during lifecycle processing
    javax.persistence.PersistenceException: [PersistenceUnit: MySQL-Unit] Unable to build Hibernate SessionFactory
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1314)

    Caused by: org.hibernate.HibernateException: DdlTransactionIsolatorJtaImpl could not locate TransactionManager to suspend any current transaction; base JtaPlatform impl (org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform@3c3ab672)?
        at org.hibernate.resource.transaction.backend.jta.internal.DdlTransactionIsolatorJtaImpl.<init>(DdlTransactionIsolatorJtaImpl.java:46)

    SEVERE: Exception while preparing the app : [PersistenceUnit: MySQL-Unit] Unable to build Hibernate SessionFactory
    org.hibernate.HibernateException: DdlTransactionIsolatorJtaImpl could not locate TransactionManager to suspend any current transaction; base JtaPlatform impl (org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform@3c3ab672)?
        at org.hibernate.resource.transaction.backend.jta.internal.DdlTransactionIsolatorJtaImpl.<init>(DdlTransactionIsolatorJtaImpl.java:46)

    INFO: [EJBContainerProviderImpl] Cleaning up on failure ...
    JdbcRuntimeExtension,  getAllSystemRAResourcesAndPools = [GlassFishConfigBean.org.glassfish.jdbc.config.JdbcResource, GlassFishConfigBean.org.glassfish.jdbc.config.JdbcResource, GlassFishConfigBean.org.glassfish.jdbc.config.JdbcConnectionPool, GlassFishConfigBean.org.glassfish.jdbc.config.JdbcConnectionPool]

    INFO: JMXStartupService and JMXConnectors have been shut down.
    JdbcRuntimeExtension,  getAllSystemRAResourcesAndPools = [GlassFishConfigBean.org.glassfish.jdbc.config.JdbcResource, GlassFishConfigBean.org.glassfish.jdbc.config.JdbcResource, GlassFishConfigBean.org.glassfish.jdbc.config.JdbcConnectionPool, GlassFishConfigBean.org.glassfish.jdbc.config.JdbcConnectionPool]

    INFO: Shutdown procedure finished

    javax.ejb.EJBException: Failed to deploy EJB modules - see log for details

        at org.glassfish.ejb.embedded.EJBContainerImpl.deploy(EJBContainerImpl.java:149)

помогите пожалуйста разобраться с этим кодом, по возможности подскажите как развернуть встроенный ejb контейнер для тестирования с использованием hibernate


Ответы (0 шт):