了解可嵌入的EJBContainer

Understanding of embeddable EJBContainer

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

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

  1. Junit 是入口点,它将 EJB 应用程序部署到服务器?因此 EJB 和 Jboss 被 "embedded" 测试。
  2. Junit 和 'EJB' 应用程序是两个独立的 JVM 进程,它们以某种方式通过 jndi 名称或其他方式进行通信(我不使用远程 EJB)。
  3. 真实服务器(JBoss)从未使用过,EJBContainer 只是一种模拟。
  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 教程(问题中第一个 link)说

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

即JUnit测试("client")、嵌入式容器(由JBoss Wildfly、Glassfish等实现),以及Java EE应用组件(EJBs等)所有 运行 在同一个 JVM 实例(同一个进程)中。

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

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