嵌入式容器与Java EE 6中的托管容器有什么区别?

时间:2013-04-09 19:37:53

标签: unit-testing jboss containers

我已经读过嵌入式容器比托管容器更糟糕,而托管容器的可靠性却远低于远程容器。

Arquillian允许您编写“真实”测试,但我不知道这些容器类型之间的区别,主要是嵌入式和托管型。

如果我在Eclipse中使用Jboss,那是嵌入式或托管容器吗?

如果我从命令行启动Jboss,没有eclipse,是嵌入式还是托管式还是远程?

对于奖励积分,“独立”容器这个词如何与这些术语相符?

1 个答案:

答案 0 :(得分:2)

Max链接的Target container varieties文档提供了概念背景和术语:

  

Arquillian识别三种容器交互方式:

     
      
  1. 远程容器与测试运行器位于单独的JVM中;的Arquillian   绑定到容器以部署和取消部署测试存档   通过远程协议(通常是HTTP)

  2. 调用测试   
  3. 嵌入式容器与测试运行器位于同一JVM中;   由Arquillian管理的生命周期;测试通过本地执行   没有Web组件的容器的协议(例如,嵌入式EJB)   并通过远程协议为具有Web组件的容器   (例如,嵌入式Java EE)

  4.   
  5. 托管容器与远程容器相同,但在   此外,它的生命周期(启动/关闭)由Arquillian管理   并作为单独的流程运行

  6.   

现在我会尝试回答你的问题。

  

我已经读过嵌入式容器比管理更差   容器,它们比远程容器更不可靠。

每种类型的容器都有适当的用例。更糟糕的是"或者"更好"取决于你想要做什么。

例如,大多数时候我正在编写一些代码,我的容器正在运行,因此我更喜欢使用远程容器进行测试,因为它可以节省大量的启动/停止时间。

  

Arquillian允许你写真实的'测试,但我不知道   这些容器类型之间的区别,主要是嵌入式vs   管理。

差异在上面链接的文档中有解释。

  

如果我在Eclipse中使用Jboss,那是嵌入式还是托管式   容器

这很遥远,因为Arquillian对它没有任何控制权。它与Arquillian生命周期完全分开。

  

如果我从命令行启动Jboss,没有eclipse,就是这样   嵌入式或托管式,还是远程?

仍然是一个远程容器。 Eclipse以与使用命令行相同的方式启动JBoss,而Arquillian对它没有任何控制。

  

对于奖励积分,单词' standalone'是什么?容器适合   这些条款?

独立意味着服务器不是集中管理控制的一部分,这意味着对一个节点所做的任何更改都不会与其他节点协调。

例如,如果在独立节点1上创建数据源,则不会将其复制到节点2.

这就是为什么域配置更受欢迎,因为您将以集中方式管理整个群集(参考:Operating modes)。