java - 了解可嵌入的EJBContainer

标签 java jakarta-ee ejb integration-testing

我花了一些时间试图理解 Embeddable Enterprise Bean Applications仍然需要一些澄清。假设我需要 Junit 来测试 EJB 应用程序。

所以我有假设应该发生什么,请帮我找出正确答案:

  1. Junit 是入口点,它将 EJB 应用程序部署到服务器?使 EJB 和 Jboss 被“嵌入”到测试中。
  2. Junit 和“EJB”应用程序是两个独立的 JVM 进程,它们以某种方式通过 jndi 名称或其他方式进行通信(我不使用远程 EJB)。
  3. 从未使用过真实服务器 (JBoss),EJBContainer 只是一种 Mock。
  4. 其他。

已编辑:

我找到了一个 example :

请你评论这段代码:

@Test
public void test() throws Exception {
          String jbossHomeDir = "E:\\dev_station\\java_station\\Serveurs\\jboss-as-7.1.1.Final";
          System.setProperty("jboss.home.dir", jbossHomeDir);
          StandaloneServer server = EmbeddedServerFactory.create(new File(
                              jbossHomeDir), System.getProperties(), System.getenv(),
                              "org.jboss.logmanager");
          server.start();
          server.deploy(new File("target/classes"));
          Context namingContext = server.getContext();
} 

最佳答案

Java EE 6 教程(问题中的第一个链接)说

The embedded container, the enterprise bean components, and the client all are executed in the same virtual machine using the same classpath.

也就是说,JUnit 测试(“客户端”)、嵌入式容器(由 JBoss Wildfly、Glassfish 等实现)和 Java EE 应用程序组件(EJB 等)都运行在同一个 JVM 实例中(相同的过程)。

没有什么是 mock 的。容器服务(事务、注入(inject)等)由实际的 Java EE 服务器实现提供。

因此,问题中列出的这四个选项之间的正确选择是数字 1

关于java - 了解可嵌入的EJBContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39662649/

相关文章:

java - 如何在实体持久化或更新时自动更新实体

java - 为什么 java.io.FileSystem 是包私有(private)的?

java - 模式java : 2 caracters less than n times and their sum of appereance less n too

apache - JEE 的三层架构

java - 使用 Guice 启动 @EJB 注入(inject)

java - 在有状态 EJB 3.1 bean 中保持 session ?

java - 什么是 "non-static method"错误以及 "this"是如何工作的?

java - Log4j2 json 配置不写入文件

image - 将网络应用程序外的目录映射到TOMCAT中的URL

java - 如何配置禁止 EAR 文件内 WAR 文件的启动?