文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络网络编程J2EE/J2MEEJB 3.0简介
精品推荐
特别推荐
·J2EE Web开发技术期待一次新的技术变革
·J2ME程序开发初学者快速入门的九大要点
·使用技巧:J2ME中程序优化的十个小方法
·RMS从入门到精通之一
·J2EE应用程序中SQL语句的自动构造方法
·解决J2EE系统应用性能问题常用优化项目
·J2EE实用技巧:提升JSP应用程序的绝招
·J2ME内存优
·J2ME简介
·J2EE技术
热点TOP10
·使用Servlet发送电子邮件
·NetBeans的使用(1)
·配置Eclipse进行远程调试
·经典飞机游戏代码S60
·调整压力测试工具
·用J2ME在移动设备上实现动画的实例讲解
·从自定义字节数组创建图片
·基于MIDP1.0实现通信录
·MIDP终端模拟之三:MIDP 的自定义字体
·JavaServer Faces 概述

EJB 3.0简介

日期:2008年6月23日 作者: 查看:[大字体 中字体 小字体]


...

首先定义一个EJB的应用,然后就可以直接调用这个EJB的商务方法,剩下的工作由Container来为我们完成。

2.4 新的事务管理

EJB中的事务(Transaction)管理大大简化了用户开发程序。把应用分成一个一个小的单元,叫做transaction. 事务系统保证了这个单元里面的任务是完整的,要么全部执行,要么出错后完全退回到初始状态。


J2EE中有两种类型的事务, 容器管理的和Bean管理的。他们在如何启动和结束事务上是不同的。Bean 管理的事务由组件使用 UserTransaction类显式启动和结束的。代码中需要调用方法 UserTransaction.begin() 和 UserTransaction.commit() 。Container 管理的事物是由container 自动来完成的。
针对不同的事务类型,可以定义6种不同的事务属性。
事务属性告诉 Container 是否把EJB方法里面的工作放到用户的事务里面。还是针对这个方法重新启动一个新的事务. 或者执行这个方法而不包含在事务里面,等等。
在EJB3.0规范中,我们缺省的定义是容器管理的事务. 而且针对所有的Bean方法,应用Required Transaction属性,它的意思是如果调用这个方法的应用没有Transaction Environment,那么这个方法会自动创建一个新的。
开发人员可以使用标注的方式在针对整个EJB或者某个具体的方法指定他的Transaction Attribute.
首先我们看一个工资处理的EJB的例子, 这是一个标准的EJB 3.0 Stateless Session Bean。缺省情况下,每个方法是都是由container来管理Transaction的,缺省的事务属性是required
// Uses container-managed transction, REQUIRED attribute
@Stateless public PayrollBean implements Payroll {
public void setBenefitsDeduction(int empId, double deduction) {...}
public double getBenefitsDeduction(int empId) {...}
public double getSalary(int empId) {...}
public void setSalary(int empId, double salary) {...}
}

下面还是这个例子,我们知道对于有关重要数据的改动,总是非常敏感的。比如我们在更改某个用户的工资的时候同时修改他的所得税,我们希望这两个调用是在同一个Transaction里面发生的。

@Stateless public PayrollBean implements Payroll {
@TransactionAttribute(MANDATORY)
public void setBenefitsDeduction(int empId, double deduction) {...}
public double getBenefitsDeduction(int empId) {...}
public double getSalary(int empid) {...}
@TransactionAttribute(MANDATORY)
public void setSalary(int empId, double salary) {...}
}

那么调用用户的工资改动的方法就必须在一个已经存在的Transaction Environment
中,为此,我们用@transactionattribute(mandatory)标注 这个方法必须在一个客户端的transaction中,如果客户端没有这样的一个 Transaction Context, Container会扔出来一个 Javax.ejb.EjbTransactionRequiredException 的错误信息。

2.5 新的安全机制
EJB架构不鼓励开发人员用代码的方式实现安全机制,而是采用安全角色的方法,通过定义可以访问的安全角色,来限制对某个方法的访问权限。

缺省情况,在3.0里面所有的方法都是"unchecked"。也就是说缺省情况下对所有方法是不用安全控制策略的。如果调用某个方法的客户端具有某个用户角色(Role) ,我们可以制定是否这个方法也是沿用这个角色。缺省情况下的安全策略是"Caller Identity",也就是说被调用者的角色和调用者的角色应该是一致的

这是一个EJB 3.0的安全实现的例子。我们对于其他的方法都没有设定安全策略。但是对于设定某个员工的工资是多少,这样的安全要求比较高的方法设定了只有人事部门的管理员才能调用。我们采用了一个

@RolesAllowed("HR_PayrollAdministrator ")
// Security view
@Stateless public PayrollBean implements Payroll {
public void setBenefitsDeduction(int empId, double deduction) {...}
public double getBenefitsDeduction(int empId) {...}

上一页 [1] [2] [3] [4] [5] [6] [7] 下一页 




上一篇:Spring Framework中的面向方面编程(AOP),第一部分

下一篇:使用EasyMock使单元测试更加容易

相关文章:
·不要以为谁都会买!硬盘选购技巧简介
·SQL Server企业管理器和查询分析器简介
·巧用排除法进行网络中故障的排除简介
·静态分析技术-IDA Pro简介
·撕页广告代码及简介
·网易免费主页空间&域名系统漏洞简介
·怎样突破局域网中对用户上网的限制简介
·MySQL数据库简介
·数字签名技术简介
·ASC II 完整码表及简介
相关软件:

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot