我花了一些时间试图理解 Embeddable Enterprise Bean Applications仍然需要一些澄清。假设我需要 Junit
来测试 EJB
应用程序。
所以我有假设应该发生什么,请帮我找出正确答案:
Junit
是入口点,它将EJB
应用程序部署到服务器?使 EJB 和 Jboss 被“嵌入”到测试中。Junit
和“EJB”应用程序是两个独立的 JVM 进程,它们以某种方式通过 jndi 名称或其他方式进行通信(我不使用远程 EJB)。- 从未使用过真实服务器 (JBoss),
EJBContainer
只是一种 Mock。 - 其他。
已编辑:
我找到了一个 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/