北京pk10技巧

EJB3.0的三大类型详解

来源:互联网
更新时间:2018/2/9 5:10:40
责任编辑:王嘉善
字体:

  无论你创建bean会话是为了执行特定任务,还是把表映射到实体bean以更新数据,都可以使用普通的java对象和接口来完成这些工作,并且可以通过在业务方法中使用注释,把方法提供给客户端。

enterprise javabean (ejb) 是可重用的、可移植的 j2ee 组件。ejb 由封装业务逻辑的方法组成。譬如说,ejb 可能有这样的业务逻辑:包含了更新数据库中客户数据的方法。众多远程和本地客户端可以调用该方法。另外,ejb 在容器里面运行,这样开发人员只要关注bean里面的业务逻辑,不必担心复杂、容易出错的问题,譬如事务支持、安全性和远程对象访问等。ejb 作为普通java对象(pojo)的形式来开发,开发人员可以使用元数据注释(metadata annotations)来指定容器如何管理这些bean。

ejb 包括三种主要类型:会话 bean、实体 bean和消息驱动的bean。会话bean执行独立的、解除耦合的任务,譬如检查客户的信用记录。实体bean是一个复杂的业务实体,它代表数据库中存在的业务对象。消息驱动的bean用于接收异步jms 消息。下面,让我们进一步研究ejb 3.0规范中的这些类型。

一、会话bean

会话bean通常代表业务流程里面的操作,譬如“处理订单”。可根据对话状态的保持性,即有状态和无状态对会话bean进行分类。

无状态的会话 bean没有内部状态。它们不跟踪记录从一个方法调用传递到另一个方法调用的信息。因此,每次调用无状态的业务方法都独立于前一次调用,譬如计算税款或者运费。用某个应税值调用计算税款的方法时,对税款值进行计算并返回给调用方法,而不必保存调用者的内部状态供以后调用。因为这些bean并不保持状态,所以容器对它们进行管理就很简单。客户端请求无状态的bean实例时,可以从容器保持的无状态的会话bean 实例池当中接收一个实例。另外,因为无状态的会话 bean可以共享,所以容器可保持数量较少的实例为许多客户端提供服务。想指定java bean作为无状态的会话bean加以部署及管理,只需要为该bean添加注释@stateless。

有状态的会话 bean在方法调用时可保持对话状态,譬如客户的网上购物车。客户开始网上购物时,可以从数据库中检索客户的详细信息。客户往购物车里面添加商品或者从里面删除商品、下订单等时调用的其他方法也可以使用这些详细信息。不过,有状态的会话bean是暂时性的,因为出现会话终止、系统崩溃或者网络故障后,状态不复存在。客户端请求有状态的会话bean实例时,就为该客户端分配一个有状态的实例,并为该客户端保持该组件的状态。要指定容器在某个方法完成后删除有状态的会话bean实例,只要为该方法添加注释@remove。

会话 bean示例如下:

import javax.ejb.stateless.*;

/*a simple stateless session bean implementing the incrementvalue() method of the * calculateejb interface.*/

@stateless(name='calculateejb')

public class calculateejbbean

implements calculateejb

{

int value = 0;

public string incrementvalue()

{

value++;

return 'value incremented by 1';

}

}

二、实体bean

实体bean是管理持久性数据的一个对象,有可能使用几个相关的java对象,并可以通过主键实现惟一性。通过添加@entity注释,可以把某类指定为实体bean。实体bean代表数据库中的持久性数据,如客户表中的一行或者员工表中的一条员工记录。实体bean还可以在多个客户端之间共享。譬如说,某个员工实体bean可以由多个客户端用于计算某员工的年薪或者更新员工地址。实体bean对象的特定字段可以成为持久性字段。实体bean中没有被@transient注释标记的所有字段都被视为持久性字段。ejb 3.0的一个主要特性就是,能够使用元数据注释来创建包含对象/关系映射的实体bean。譬如说,想指定把实体bean的empid字段映射到 employees表中的empno属性,就要使用@table(name='employees') 来注释表名,使用 @column(name='empno') 来注释字段,如下面的例子所示。另外,ejb 3.0 的一个特性是,在开发期间可以方便地测试实体bean,因为现在使用 oracle 应用服务器实体测试工具,就可以在容器外面运行实体bean。

实体 bean示例如下:

import javax.persistence.*;

import java.util.arraylist;

import java.util.collection;

@entity

@table(name = 'employees')

public class employee implements java.io.serializable

{

 private int empid;

 private string ename;

 private double sal;

 @id

 @column(name='empno', primarykey=true) 资讯转帖于 Xue163.com_JAVA认证考试题库

根据您访问的内容,您可能还对以下内容感兴趣,希望对您有帮助:

EJB3.0的2个小疑问 盼解答。

北京pk10技巧所local接口调用效率要高于remote象调用针点EJB设计提建议: 1、ejb客户能存于与ejb相同app server或者说同JVM环境local类型接口(包括EJBHome 与EJBObject)需要与EJ...

EJB3.0之实体Bean的继承

北京pk10技巧在EJB3.0中,实体Bean可以实现继承关系。 比如有个Person的实体bean,它有姓名和性... Person.java package com.kuaff.ejb3.singleinheritance; import javax.ejb.Discrimina...

JavaBean(EJB) 3.0 全新体验

北京pk10技巧EJB2.1模型。 EJB注释 EJB规范组织一个重要的目标是减轻原始代码的数量,并且他们为此给出了一个完美而简介的办法。在EJB3.0的里,任何类型的企业级Bean只是一个...

EJB 3.0开发指南之多表映射

; UniqueConstraint[] uniqueConstraints() default {}; } 这个注释可以指定表名、分类、... package com.kuaff.ejb3.secondary; import javax.ejb.Dependent; import javax.ejb.D...

如何使用 EJB 3.0 调用规则集麻烦告诉我

运行的 WAS 应用服务器上,安装过程与 EJB 本地调用的安装类似。回页首使用EJB 3 远... ;然后需要为工厂对象指明执行模式为远程调用,及要使用的业务接口类型为有状态的规...

eblogic没有识别persistence.xml 文件才导致无法部署EJB3.0?

AuditValueIteratorSession from ejb-2.0.jar: No persistence unit named '对于这个问题,据说官方还没有统一的说法。所以,LZ只需要了解这个问题就是了

现在EJB用的多么

要看公司做什么类型的项目了,如果对安全性要求高可能还是用老技术,典型的大型银行项目:struts1+EJB。很多人会问为什么他们不用新技术,其实这就和用Linux和XP系统一样,...

Ejb技术的重点

EJB2.1模型。 EJB注释 EJB规范组织一个重要的目标是减轻原始代码的数量,并且他们为此给出了一个完美而简洁的办法。在EJB3.0的里,任何类型的企业级 Bean只是一个加...

请大师介绍一下EJB及其学习方法,可以列举一下参考的书.

北京pk10技巧》,我并没有看过这两本书。其实我觉得电子工业出版社的《Java 2编程详解》或者《J... 3.0上面部署书中例子的实做。真是既有理论,又有实践。在学习EJB的同时,可以边看边...


网友评论
最新添加资讯
24小时热门资讯
娱乐时尚
科技资讯
历史文化
真视界
旅游美食
精彩图文
我爱我车
母婴健康
Copyright © 2004-2018 xue163.net All Rights Reserved. 学网 版权所有
京ICP备10044368号-1 京公网安备11010802011102号
北京pk10开奖记录-联盟欢迎您 北京pk10开奖记录-联盟欢迎您 北京pk10开奖记录-联盟欢迎您 北京pk10开奖记录-联盟欢迎您 北京pk10开奖记录-联盟欢迎您 document.write ('');