ejb能调用另一个ejb吗_EJB 3词汇表

ejb能调用另一个ejb吗

版本1.1.2,最新更新17.07.2006。 这是EJB 3中引入的新术语和概念的基本词汇表。该词汇表使诸如(IoC),按异常配置,POJO,POJI,依赖注入,可嵌入对象,拦截器等流行术语变得神秘。 该词汇表正在进行中,并将不断更新。 词汇表链接 : A - B - C - D - E - F - H - I - J - L - M - P - R - S

A

附加对象-EJB 3.0-表示实体bean的实例,其数据来自实体管理器当前管理的数据库。

B

Bean类-EJB 1.x,EJB 2.x,EJB 3.0 -Bean类是保存业务逻辑实现的EJB组件的构件。 在面向对象的表示法中,人们会将此类视为实现类(例如CustomerImpl)。 对于EJB,使用术语Bean类(例如CustomerBean)。

Bean管理的持久性-EJB 2.x,EJB 3.0-实体Bean的两种持久性机制之一。 对于使用Bean管理的持久性(BMP)的实体Bean,开发人员负责实现持久性逻辑。 这主要意味着您必须适当地将实体Bean的持久属性与持久层匹配。 为此,您必须在Bean类中实现持久层的访问逻辑(例如,使用JDBC的数据库或使用JCA的旧系统)。

  • EJB容器决定何时发生。
  • 开发人员决定会发生什么。

注意:在EJB 3.0中,不再存在Bean管理的持久性。

BMP-EJB 2.x,EJB 3.0 -Bean管理的持久性的缩写

业务接口-EJB 3.0-业务接口包含EJB组件的业务方法的声明。 此外,该术语用于描述EJB 3.0中的POJI类型的接口。 与EJB 2.x组件接口相反,这些业务接口不得扩展javax.ejb.EJB [Local] Object。 不允许将同一业务接口同时作为EJB组件的本地和远程业务接口。

会话Bean需要业务接口。 消息驱动的Bean根据所使用的消息传递类型(例如,javax.jms)需要一个(业务)接口。 在EJB 3中,此消息驱动Bean的接口也称为业务接口,尽管它比功能接口更具技术性。 EJB 3实体不必展示业务接口。

C

回调方法-EJB 2.x,EJB 3.0-对于EJB 2.x,Bean类必须根据Bean类型(javax.ejb.SessionBean,javax.ejb.MessageDrivenBean或javax.ejb.EntityBean)实现回调接口。 首先,这些接口显示您拥有哪种EJB。 其次,这些接口声明回调方法,由EJB容器调用以管理EJB组件的生命周期。 开发人员必须在Bean类中实现在接口中声明的回调方法。

使用EJB 3.0时,提到的回调接口不再必须由bean类实现。 因为开发人员没有被迫实现回调方法,所以减少了开发时间和精力。 有一组已定义的批注仍然可以跳入EJB组件的生命周期管理。 可以标记任意方法,以便根据所使用的注释在定义的时间点执行它们。 您可以对所有类型的EJB使用这些注释。 注释@ PostConstruct,@ PreDestroy,@ PostActivate和@PrePassivate适用于会话Bean和消息驱动的Bean。 对于EJB 3实体,以下注释适用:@ PrePersist,@ PostPersist,@ PreRemove,@ PostRemove,@ PreUpdate,@ PostUpate,@ PostLoad。

CMP-EJB 2.x,EJB 3.0-容器管理的持久性的缩写

组件接口-EJB 1.x,EJB 2.x,EJB 3.0-组件接口是EJB组件的业务接口。 它有两种方式:作为本地接口(只能在同一进程中进行访问->请参见本地接口)和/或作为远程接口(可以在机器和进程边界上进行访问->请参见远程接口)。必须扩展javax.ejb.EJB [Local] Object。

异常配置-EJB 3.0-EJB 3.0引入了“异常配置”方法。 这种方法的目标是减少开发时间,并减少配置和/或开发EJB组件的工作量。

开发人员仅应在例外情况下(因此:通过例外配置)提供EJB组件的配置信息或运行时指导信息。 也就是说,仅在情况下,当期望的行为偏离类型的EJB组件的已定义和给定的标准行为时。 目的是减少对EJB组件通常期望的行为和对EJB容器的要求的配置参数的明确指示的必要性。

具体而言,这意味着在EJB 3.0中,默认情况下为EJB组件预设了许多功能和/或行为。 此默认行为应涵盖EJB组件(和/或相应的EJB类型)的大多数典型用例。 如果标准行为不符合需求配置文件,则开发人员可以轻松覆盖这些默认值和/或标准行为。

容器管理的持久性-EJB 2.x,EJB 3.0-实体Bean的两种持久性机制之一。 如果您使用的是容器管理的持久性(CMP),则不必编写用于在实体Bean和持久性层之间进行同步的代码。 它是由应用程序服务器的工具生成的。 开发人员的任务仅限于持久属性的声明以及不同实体Bean之间的关系。 运行时的同步由EJB容器的特殊部分(即所谓的“持久性管理器”)执行。

D

DD-EJB 1.x,EJB 2.x,EJB 3.0-部署描述符的缩写

分离的实体-EJB 3.0-请参阅分离的对象

分离的对象-EJB 3.0-表示EJB 3实体的实例,该实例不再与其在其中持久化或检索它的持久性上下文相关联。 因此,不再可能将其数据与数据库同步。 此类对象不受实体管理器管理。 该应用程序仍可以使用分离的对象。 它可以访问可用状态并进行更改,但不会对其进行跟踪。

分离的物体可能来自不同的环境。 例如,在序列化EJB 3实体的情况下。 通过序列化,EJB 3实体成为分离的对象。

依赖注入-EJB 3.0-术语“依赖注入(DI)”是控制模式反转的一种特殊形式。 Martin Fowler发明了这个术语(请参阅http://martinfowler.com/articles/injection.html ),因为在当前的轻量级容器/框架中使用控制反转的方式更有可能被描述为对对象/类。

将DI引入EJB 3的动机是简化对EJB组件资源的查找。 EJB组件中不再需要JNDI API代码。 即使您可以自由使用它。

EJB技术的DI意味着,开发人员无需通过JNDI API来实现用于查找资源的代码。 相反,他通过简单地注释EJB组件中的实例变量或setter方法或通过在相应的XML中声明这种依赖关系规范,来从容器中请求对资源的引用。 然后,容器在运行时将对资源的必要/请求的引用注入到EJB组件中,然后执行EJB组件的方法之一。 即,EJB组件不再主动请求其周围的容器来引用资源,而是由容器注入它们。

注释的使用比XML的使用方便得多。 这将是EJB 3的首选变体。这里,DI只是访问JNDI上下文和检索引用的简化机制。

部署描述符-EJB 1.x,EJB 2.x,EJB 3.0-部署描述符是一个XML文件,其中包含用于生成和执行EJB组件的编译和运行时信息。 这称为声明式编程,因为开发人员只需在Deployment Descriptor中声明某些关键字即可实现某些功能或行为,而无需编写任何代码。 例如,以这种方式控制EJB组件的事务行为。

E

急切负载-EJB 3.0-急切负载是Java Persistence API中定义的两种获取策略之一。 简而言之,急切的加载意味着立即从数据库中完全读取EJB 3.0实体的持久性数据,并将其写入EJB 3.0实体实例的适当属性。 EJB 3.0实体中所有引用的持久性实体(EJB 3.0实体或可嵌入对象)也将同样加载。 实际上,热切的负载实现的真正特征取决于供应商的相应实现。

预先加载的好处是一次只能提取一次数据。 如果应用程序访问属性,则数据已经存在。 对较大的持久对象网络或对象树使用急切加载的缺点是,这可能导致加载时间长和内存消耗高。

EJB-EJB 1.x,EJB 2.x,EJB 3.0 -Enterprise JavaBeans的缩写,是Java EE平台的服务器端组件模型的名称。

EJB 3.0实体-EJB 3.0 -EJB 3.0实体是轻量级的持久域对象。 Java Persistence API将其命名为持久实体。 后者的事实是,Java Persistence API不仅应不仅可用于Java EE,而且也可用于Java SE。

EJB组件-EJB 1.x,EJB 2.x,EJB 3.0 -EJB组件是所有EJB类型的总称(->请参阅EJB类型)。

EJB类型-EJB 1.x,EJB 2.x,EJB 3.0 -EJB规范使用EJB 2.x定义了三种EJB类型:

  • 会话Bean(具有状态和无状态两个特征)
  • 消息驱动的Bean
  • 实体豆

使用EJB 3定义了以下EJB类型:

  • 会话Bean(具有状态和无状态两个特征)
  • 消息驱动的Bean
  • EJB 3实体

注意:使用EJB 3时,会话Bean和消息驱动的Bean通常将命名为Enterprise Bean。 轻量级持久性域对象将被明确命名为EJB 3实体或持久性实体。

EJB QL-EJB 1.x,EJB 2.x -EJB查询语言的缩写。

EJB查询语言-EJB 1.x,EJB 2.x -EJB QL是Enterprise JavaBeans组件体系结构的查询语言。 与SQL类似,但专注于对象。 通过EJB 3. 0进行了增强,但是在EJB 3.0中被称为Java持久性查询语言(Java Persistence QL)。

可嵌入对象-EJB 3.0-不是EJB 3实体并因此没有持久身份的POJO可以作为属性嵌入到EJB 3实体中。 这些对象称为可嵌入对象。 此类可嵌入对象的属性填充有来自与周围EJB 3实体相关联的数据库表中的数据。
例如,您可以将一个数据库表与EJB 3实体以及该实体所嵌入的其他POJO映射,以将非规范化的数据库表投影到对象网上。

@Entity
@Table(name="CUSTOMER")
public class Customer implements java.io.Serializable {
    private int id;private Address address;
    private String lastName; 
    private String firstName;
public Customer(String lastName, String firstName,String street, String city) { this.address = new Address(street, city); this.lastName= lastName; this.firstName = firstName; } ... @Embedded @AttributeOverrides( @AttributeOverride(name="street", column=@Column(name="STREET")), @AttributeOverride(name="city",column=@Column(name="CITY")) }) public Address getAddress() return address; } public void setAddress(Address address) { this.address = address; } @Column(name="LASTNAME") public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } ... Embeddable Object
@Embeddable public class Address implements java.io.Serializable { private String street; private String city; ... }

企业Bean-EJB 3-在更通用的级别上,会话Bean和消息驱动的Bean称为企业Bean。 请注意,EJB 3实体未表示为Enterprise Bean。 这个通用术语对EJB 3实体来说并不正确,因为它们也可以在Java SE环境中使用。

实体Bean-EJB 2.x-对于EJB 2.x,持久性实体的EJB类型称为实体Bean。

实体管理器-EJB 3.0 -Java EE和Java SE中的新元素,它们是与EJB 3.0一起引入的。 它是中央持久性管理器(与JDO和Hibernate一样)。 实体管理器负责实体的持久性映射(POJO)。 实体管理器在数据库中创建持久性实体,然后加载,保存,删除和搜索它们。 它还关心并发访问实体(并发处理)的一致性。

F

提取策略-EJB 3.0-在EJB 3.0中指定的Java Persistence API中,定义了两种提取策略:延迟负载和急负载。 与Hibernate和其他持久性提供程序(如TopLink)相比,这两种策略及其特征只是很少的选择。 据推测,该规范的未来版本将对获取策略进行更详细的说明和增强。

在大多数情况下,Java持久性API中将“急切加载”策略预设为默认值。 延迟加载仅在开发人员明确声明时使用。 持久性提供程序运行时(例如,Hibernate)被强制实施并提供“急切加载”机制。 在延迟加载的情况下,应将其视为对持久性提供程序运行时实现者的提示。 EJB 3规范中没有更多关于如何实现延迟加载机制的详细信息。 目前,延迟加载机制的确切实现似乎取决于持久性提供程序运行时的实现者。 由于不同供应商的体系结构和技术实现的差异,这会带来很多风险,例如缺乏互操作性。

H

本地接口-EJB 1.x,EJB 2.x -EJB组件的本地接口包含用于创建,删除或加载EJB组件实例的方法。 由于客户端无法直接跨机器和进程边界创建,删除或加载EJB组件实例,因此它们被迫使用相应EJB组件的Home Interface。 家庭接口提供相应的功能。 通过使用本地接口,可以实现EJB组件和客户端的解耦。 主界面表示设计模式“工厂方法”。 本地接口有两种类型:

使用EJB 3.0,会话Bean的Home接口不再是必需的。 这意味着不必实施它们。 但是,该规范并未声明本地接口已不复存在。 EJB 3实体不再具有本地接口。

I

拦截器-EJB 3.0-使用EJB 3.0,与基于CORBA的系统类似,在该系统中拦截器已经被广泛使用了很长时间,它可以拦截对业务方法的调用。 您能够根据需要分析和操作参数,并允许或禁止执行业务方法。 借助拦截器机制,面向方面的编程至少在开始时就进入了基于EJB的开发。 拦截器允许将技术功能(例如日志记录,跟踪,安全性)透明地交织到业务方法中。 拦截器的开发人员可以实现在激活的拦截器拦截对EJB的方法调用时执行的任意代码。

控制反转-EJB 3.0-控制反转(IoC)是框架的一般特征,通常可以解释为好莱坞原则(“不叫我们,我们叫你”)。 这应表示程序执行期间的责任与框架有关,与组件无关。 也就是说,组件所基于的框架要求组件实现某些回调方法。 然后,框架在运行时使用这些回调方法来注入信息并触发确定的行为。

在EJB 3.0的上下文中,术语IoC和依赖注入通常被用作同义词,即使细节上存在语义差异(请参阅“依赖注入”)。 EJB 3.0使用的是控制反转的一种特殊形式,被指定为依赖注入。

J

Java Persistence API-EJB 3.0-在EJB 3.0(Java Community Process中的JSR220)内,开发了Java Persistence API。 Java Persistence API将成为Java EE和Java SE的标准持久性模型。 Java Persistence API的一个重要特征是它可以用于任意POJO,而不仅限于EJB组件。 因此,不需要在应用程序中使用/使用EJB组件的开发人员也可以使用Java Persistence API。 Hibernate,TopLink,JDO和EJB持久性解决方案的领先持久性专家参与了Java Persistence API的开发。

Java Persistence QL-EJB 3.0 -Java Persistence查询语言的缩写。

Java持久性查询语言-EJB 3.0 -Java持久性查询语言是Enterprise JavaBeans组件体系结构的查询语言。 与SQL类似,但专注于对象。 与EJB QL相比,Java持久性查询语言得到了大大增强。 EJB QL中许多缺少的功能都是用Java持久性查询语言实现的。 Java持久性查询语言具有比EJB QL更丰富的功能集,并且看起来有点像Hibernate HQL。

L

延迟加载-EJB 3.0-与其他持久性解决方案一样,延迟加载也指定了一种策略,即如果实际访问持久性实体,则仅从数据库读取持久性实体(EJB 3.0实体)的持久性数据。 它们的属性发生。 如果对此类属性或关系进行了专用访问,则所有带有延迟加载标记的属性或与其他持久实体的关系都将及时从数据库中加载。

延迟加载实现的实际功能取决于供应商的相应实现。

延迟加载的优点是,仅当访问属性或关系时才获取数据。 这样可以减少内存消耗。 缺点是及时获取持久性数据可能会使应用程序变慢。

本地本地接口-EJB 2.x-本地本地接口称为本地本地接口。 它是所谓的高速Home接口,因为它仅在EJB组件的客户端分别位于同一容器中时才使用。 本地本地接口(作为远程本地接口)用于创建,删除和加载EJB组件。 本地本地接口比远程本地接口更精简,因为它不能通过RMI调用,并且不具有通过网络进行编组,解组和传输的功能。 客户端和EJB组件之间的通信是进程内的,因此比使用远程本地接口更快。 本地本地接口无法接收远程方法调用。

使用EJB 3.0,会话Bean的Home接口不再是必需的。 这意味着不必实施它们。 但是,该规范并未声明本地接口已不复存在。 EJB 3实体不再具有本地接口。

本地接口-EJB 2.x,EJB 3-仅允许本地通信的EJB组件的业务接口(EJB 3)或组件接口(EJB 2.x)的技术变体称为本地接口。 它仅允许客户端和组件之间进行进程内通信。 如果EJB组件仅包含本地接口而没有远程接口,则该组件不可远程访问。

M

受管实体/受管对象-EJB 3.0-受管实体是具有持久身份的EJB 3.0实体的实例,该身份当前与持久性上下文相关联,因此由EntityManager管理。

消息驱动Bean -EJB 2.x,EJB 3.0-消息驱动Bean(MDB)用于在J2EE和Java EE应用程序中实现异步工作流。 他们是消息代理的消息使用者。 MDB能够从中接收异步消息并对其进行处理。 因此,在消息传递系统的上下文中,消息驱动Bean充当消息端点。

消息驱动的Bean既不包含Home接口,也不包含组件接口(EJB 1.x,2.x)或业务接口(EJB 3)。 注意:EJB 3规范指出,消息驱动Bean也需要业务接口。 此业务接口具体是根据所使用的特定消息传递类型(例如javax.jms)的接口。 在EJB 3中,此消息驱动Bean的接口也称为业务接口,尽管它比功能接口更具技术性。 由于MDB没有真正的业务接口,因此消息驱动Bean没有客户端可见性。 这意味着无法直接解决MDB。

元注释-EJB 3.0-元注释是Java编程语言的动态语言扩展。 它们是随JSR 175一起引入JDK 5.0(又名Java 1.5)的。 注释允许在Java代码中包含可以在编译时和运行时均进行评估的元信息。 这些元信息可用于生成代码或控制对象或EJB组件的运行时行为。

多表映射-EJB 3.0-多表映射表示将EJB 3.0实体映射到多个物理数据库表的能力。 EJB 2.x没有此功能,除非您使用Bean管理的持久性对它进行显式编程。 使用EJB 3.0,EJB 3.0实体不再是数据库表的简单1:1表示形式。 相反,它是逻辑业务对象的技术包装,该业务对象的数据可以分布在多个表上。 在EJB 3.0实体注释内,只需指定哪些表/字段是相关数据的源即可。 也可以在XML中指定o / r映射。 EntityManager负责在运行时解析关系模型,并将数据放入EJB 3.0实体(参见插图)。

EJB 3.0实体映射到三个数据库表

@Entity@Table(name="CUSTOMER")
 @SecondaryTables({
   @SecondaryTable(name="ADDRESS")
   @SecondaryTable(name="TYPE") })
 public class Customer implements java.io.Serializable {
    private int id;
    private String firstName; // from table "CUSTOMER"
    private String lastName;  // from table "CUSTOMER"
    private String street;    // from secondary table "ADDRESS"
    ...
    // Attribute from main table „CUSTOMER“ 
    @Column(name="LASTNAME")  
    public String getLastName() {
      return lastName;
    }
    ...
    // Attribute from secondary table "ADDRESS"
    @Column(name="STREET", table="ADDRESS")
    public String getStreet() {
      return street;
    }
    ...
    // if no @Column annotation is specified,
    // it is assumed that column name equals attribute name
    public String getFirstName() {
      return firstName ;
    }
 }

P

持久性提供程序运行时-EJB 3.0-术语“持久性提供程序运行时”是指Java持久性API的持久性实现的运行时环境。 在Java EE中,这可能是带有集成持久性实现的Java EE容器,或者是与其集成的第三方持久性提供程序实现。 在Java SE中,这是一个单独的第三方持久性提供程序实现(例如Hibernate…)。

普通旧Java接口-EJB 3.0-该术语在2004年的期刊和eZines中突然出现。术语“普通旧Java接口”(POJI)表示一个简单的Java接口,它没有与基础结构或其他技术方面相关的代码被“污染”。 在EJB 3.0的上下文中也引入了术语“普通旧Java接口”(POJI)。 EJB 3.0的核心思想是,EJB组件(此处为业务接口)在使用它们及其微体系结构方面变得不再那么复杂,因此它们的业务接口不会被与基础结构或技术方面相关的代码“污染”,而仅仅是包含函数方法声明。

Plain Old Java Object-EJB 3.0-此术语在2004年的期刊和eZines中突然出现。术语Plain Old Java Object(POJO)表示一个简单的Java类(也许应该称为POJC ;-),但不”使用针对基础架构或其他技术方面的代码,因为这种情况通常发生在更复杂的组件中。 该术语也是在EJB 3.0的上下文中引入的。 EJB 3.0的核心思想是,EJB组件在使用它们及其微体系结构方面变得不再那么复杂。 目的是使它们如此简单以至于可以将它们描述为POJO。

POJI-EJB 3.0 -Plain Old Java Interface的缩写。

POJO-EJB 3.0-普通旧Java对象的缩写。

R

远程本地接口-EJB 1.x,EJB 2.x-远程本地接口使远程客户端可以通过网络创建,加载或删除EJB实例。 客户端使用RMI / IIOP协议进行远程方法调用,以与远程本地接口进行通信。 这种通信比进程内通信慢。 当将EJB在分布式系统中提供给位于网络中任何所需计算机上的客户端时,必须使用远程本地接口。

使用EJB 3.0,会话Bean的Home接口不再是必需的。 这意味着不必实施它们。 但是,该规范并未声明本地接口已不复存在。 EJB 3实体不再具有本地接口。

远程接口-EJB 1.x,EJB 2.x-允许远程通信的EJB组件的业务接口(EJB 3)或组件接口(EJB 1.x,2.x)的技术变体,称为远程接口。 如果EJB组件包含远程接口,则其他进程中的客户端可以跨进程和机器边界调用该组件。 该通信使用RMI / IIOP。 即使当客户端和EJB组件位于同一进程中(例如,当客户端本身是EJB组件)并且客户端使用远程接口时,通信也使用RMI / IIOP。 在这种情况下,这将不必要地减慢通信速度,这可以通过使用组件的本地接口来解决,从而提高性能。

S

SFSB-EJB 1.x,EJB 2.x,EJB 3.x-状态会话Bean的首字母缩写

SLSB-EJB 1.x,EJB 2.x,EJB 3.x-无状态会话Bean的首字母缩写

版权所有©2005-2006 [工作对象] Oliver Ihns和Stefan M. Heldt。 该词汇表的所有插图均摘自我们自己的文章。 本书“ Enterprise JavaBeans komplett ”,不是从第三方获得的!

翻译自: https://www.infoq.com/articles/EJB-Glossary/?topicPageSponsorship=c1246725-b0a7-43a6-9ef9-68102c8d48e1

ejb能调用另一个ejb吗

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值