ошибка развертывания модулей EJB во время теста maven после добавления персистентности. xml - PullRequest
0 голосов
/ 11 апреля 2020

Я тестирую модуль EJB, в котором есть менеджер сущностей и персистирующие сущности в MongoDB. Однако я успешно выполнял более сложные коды на сервере weblogi c, но мне не удалось протестировать их небольшие кусочки с использованием различных встроенных контейнеров. Наконец я решил расширить работающий код этой ссылки https://github.com/buttso/weblogic-embedded-ejb. Расширяя код, запуск теста maven был успешным, пока я не добавил постоянство. xml в src / main / resources / META-INF и / или src / test / resources / META-INF. Я получил «javax.ejb.EJBException: ошибка при развертывании модулей EJB. Исключение: ошибка при развертывании» в строке создания EJBContainer. Я пробовал много вещей из inte rnet, но в конце концов мне не удалось. Вот мои коды и классы (я удаляю некоторую дополнительную информацию о них):

BaseObject:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class BaseObject{
    @Id
    private long Id;
    private long timeStamp;
    @JsonIgnore
    private String clientIP;
    public static enum BaseType { ClientMessage, ServerBaseResponse };
    private BaseType baseType;
    }
}

ServerBaseResponse:

@Entity
public abstract class ServerBaseResponse extends BaseObject{

    private boolean successOrFail;
    private String successOrFailDescription;
    public enum ServerResponseType{ServerFileResponse, ServerModuleStatusesResponse};
    private ServerResponseType serverResponseType;
}

ServerFileResponse:

@Entity
public class ServerFileResponse extends ServerBaseResponse{
    private byte[] file;
}

IBaseDAO:

public interface IBaseDAO<T> {
    public T get(Class<T> clazz, long id);

    public void insert(T entity);

    public void update(T entity);

    public void deleteByEntity(T entity);

    public void deleteById(Class<T> clazz, long id);
}

BaseDAO:

public abstract class BaseDAO<T> implements IBaseDAO<T>{
    @PersistenceContext(unitName = "myPer")
    private EntityManager entityManager;

    public BaseDAO() {
    }

    @Transactional
    @Override
    public T get(Class<T> clazz, long id) {
        return  entityManager.find(clazz, id);
    }

    @Transactional
    @Override
    public void insert(T entity) {
        entityManager.persist(entity);  
    }

    @Transactional
    @Override
    public void deleteByEntity(T entity) {
        entityManager.remove(entity);
    }

    @Transactional
    @Override
    public void deleteById(Class<T> clazz, long id) {
        T entity = entityManager.find( clazz, id );
        entityManager.remove( entity);
    }

    @Transactional
    @Override
    public void update(T entity) {
        entityManager.merge(entity);
    }
}

ServerFileResponseDAO:

@Local
@Stateless
public class ServerFileResponseDAO extends BaseDAO<ServerFileResponse>{
    public ServerFileResponseDAO() {
    }
}

постоянство. xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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_2_0.xsd"
    version="2.0">

    <persistence-unit name="myPer" transaction-type="JTA">
        <provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
        <jta-data-source>jdbc/MongoGrip </jta-data-source>

        <properties>
            <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.WeblogicJtaPlatform" />
            <property name="javax.persistence.jdbc.driver" value="com.dbschema.MongoJdbcDriver" />
            <property name="hibernate.ogm.datastore.provider" value="mongodb" />
            <property name="hibernate.ogm.datastore.database" value="testttttt" />

        </properties>
    </persistence-unit>

</persistence>

EmbeddedClientTest:

public class EmbeddedClientTest {

    private EJBContainer ejbContainer;
    private Context ctx;
    private static final String LOOKUP_BEAN = "java:global/classes/ServerFileResponseDAO";

    @Before
    public void setupTest() {
        try {
            ejbContainer = EJBContainer.createEJBContainer();
            ctx = ejbContainer.getContext();
        } catch (Exception e) {
            System.out.println("Bummer, something wrong with the setup of the EJBContainer: " + e.getMessage());
            throw (e);
        }
    }

    @After
    public void finishTest() {
        if (ejbContainer != null) {
            ejbContainer.close();
        }
    }

    @Test
    public void testUsingClasses() throws NamingException {
        ServerFileResponseDAO ppb = (ServerFileResponseDAO) ctx.lookup(LOOKUP_BEAN);

        assertNotNull(ppb);
        assertNull(ppb.get(ServerFileResponse.class, 100));
    }

}

пом. 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>buttso.demo.weblogic</groupId>
    <artifactId>ExtendedEmbeddedEJBMaven</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <oracle.home>C:/Oracle/Middleware/Oracle_Home</oracle.home>
        <weblogic.jar.path>${oracle.home}/wlserver/server/lib/weblogic.jar</weblogic.jar.path>
        <ogm.version>5.4.1.Final</ogm.version>

    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.hibernate.ogm</groupId>
                <artifactId>hibernate-ogm-bom</artifactId>
                <type>pom</type>
                <version>${ogm.version}</version>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>


    <dependencies>

        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>8.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.11.0.rc1</version>
        </dependency>

        <!-- for hibernate OGM -->
        <dependency>
            <groupId>org.hibernate.ogm</groupId>
            <artifactId>hibernate-ogm-mongodb</artifactId>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
            <type>jar</type>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18</version>
                <configuration>
                    <argLine>-Xmx128m</argLine>
                    <enableAssertions>false</enableAssertions>
                    <classpathDependencyScopeExclude>compile</classpathDependencyScopeExclude>
                    <additionalClasspathElements>
                        <additionalClasspathElement>${weblogic.jar.path}</additionalClasspathElement>
                    </additionalClasspathElements>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <executable>java</executable>
                    <arguments>
                        <argument>-classpath</argument>
                        <argument>${weblogic.jar.path}:target/classes</argument>
                        <argument>buttso.demo.weblogic.ejbembedded.PingPongClient</argument>
                    </arguments>
                </configuration>
            </plugin>


        </plugins>
    </build>

</project>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...