在战争中打包的EJB只能在Lite容器中运行吗?

时间:2016-09-12 15:34:06

标签: java java-ee package war

我最近阅读了EJB in Action,并在此文中标明了:

The Java EE 6 specification allows for session and message-driven beans to be included
inside a WAR module instead of having to deploy them separately in an EJB-JAR module.
When included in a WAR module, the beans run in the EJB Lite container.

如果When included in a WAR module, the beans run in the EJB Lite container.为真,我在规范中找不到任何信息。

EJB可以在完整ejb容器中的.war运行中打包,也可以严格限制为Lite版本。有关此事的任何消息来源都欢迎:)

1 个答案:

答案 0 :(得分:4)

  

Java EE 6规范允许将会话和消息驱动的bean包含在WAR ...

这只是部分正确!根据{{​​3}},message-driven beans不一定是EJB lite的一部分(参见下面提取并显示的 Chapter 21.1:EJB Lite ):

  

21.1 EJB 3.1 Lite

     

EJB API由大型功能集组成,支持在各种企业应用程序中实现业务逻辑。但是,所有API合同并非总是至关重要   运行环境。此外,完整API的广度可能会给刚刚开始使用Enterprise JavaBeans技术的开发人员带来挑战。

     

由于这些原因,此规范定义了EJB API的最小子集,称为EJB 3.1 Lite。   EJB 3.1 Lite不是产品。相反,它是完整EJB 3.1 API的适当子集,包括适用于编写可移植事务业务逻辑的小型,强大的EJB功能选择。定义 -   EJB 3.1 Lite的一个选项使供应商能够在其产品中仅实现EJB API的可移植子集。功能集的大小减小使其适合包含在更广泛的范围内   Java产品,其中许多产品的安装和运行时占用空间比典型的完整Java EE实现要小得多。

     

EJB 3.1 Lite应用程序只是一个EJB应用程序,其EJB API使用属于EJB Lite子集。没有为EJB 3.1 Lite定义的特殊API。 因此,任何EJB 3.1 Lite应用程序都可以部署在任何实现Enterprise JavaBeans技术的Java EE产品上,无论该产品是否支持EJB 3.1 Lite或完整的EJB API。

     

如表27所示,EJB 3.1 Lite API由以下EJB API子集组成:

     
      
  • 无状态,有状态和单例会话Bean组件
  •   
  • 仅限本地和无界面视图
  •   
  • 仅限同步方法调用
  •   
  • 容器管理的事务/ Bean管理的事务
  •   
  • 声明性和程序化安全性
  •   
  • 拦截
  •   
  • 部署描述符支持(ejb-jar.xml)
  •   

您的问题的答案

  

EJB可以在完整的ejb容器中运行.war运行,也可以严格限制在Lite版本中。

也由规范回答:参见上述摘录中的粗体部分。需要Java EE 6 Web Profile才能支持.war文件,该文件也是完整配置文件的一部分。

您可以在以下网址找到更多信息: