Я тестирую модуль 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>