选择显示字体大小

ejb 3.0+aspect实现声明性编程初步


  提要 本文将与你一同探讨怎样把注解和方面的威力联合起来,以与ejb 3.0兼容的方式为企业实现提供声明性服务,而在同时仍然提供容器的独立性。

  一、 引言

  在我们共同寻求进一步提高软件开发生产性能的方法的过程中,我们-作为java社团成员-一般都转向j2ee来提供针对企业开发中更具挑战性的技术问题如分布式事务管理、并发性和对象分布等的解决方案。其背后的指导思想-这些复杂的企业服务能被应用程序服务器供应商所实现并能为商业开发者所平衡-的确是一种很好的思想。j2ee,具体地说是ejb,已成功地提供了一个平台-在其上构建企业java应用程序。

  这其中部分的成功是由于能够进行声明性编程-一种程序开发方式-用这种方式,你可以声明基础结构服务而不是用商业逻辑明确地编码从而使代码散布于各处。ejb已经证明了这种编程方式的价值-通过允许企业问题例如事务和安全被用一种发布描述符所声明并为容器所处理。

  然而,在过去的岁月中,越来越多的开发者认识到ejb在团队的生产效率方面给它自己带来新的大量的挑战-每个ejb必须伴随多个接口,以一种发布描述符描述,经由jndi被存取,等等。而在容器外ejb上进行单元测试也带来另外的困难,如今ejb已不再把重点放在单纯的面向对象开发上。

  请注意,为阅读本文您需具备如下工具:

  ·java 2 sdk 1.5

  ·maven 2.0 beta 2

  ejb 3.0的目标在于从以下几个方面使企业开发更为容易:

  ·通过引入元数据注解来实现声明性请求企业服务

  ·经由注解实现依赖性/资源注入

  ·实现企业beans与ejb特定接口的解耦

  ·经由轻量级的对象关系映射实现持续性存储的简化

  这对于ejb开发者来说尤如一股春风-一直以来,他们竭力地从事开发、测试和维护ejb。利用ejb 3.0写一个企业bean现在变得很容易,就如用特定的注解创建一个pojo(传统的java对象)以把它标明为一个ejb并请求企业服务。下面是一个来自于ejb 3.0 public draft中ejb的例子:

@stateful
public class cartbean implements shoppingcart
{
private float total;
private vector productcodes;
public int someshoppingmethod(){...};
...
}

  ejb 3.0声明中实质上指明开发者需要的不是一重量级的、"一次发布满足所有"的解决方案,而是一个轻量级的、容易使用的解决方案-为开发者提供一定范围的企业服务。为此,ejb 3.0所提供的最重要的方法之一就是实现企业beans与ejb api的解耦。并且,此解决方案还带来令人感兴趣的衍生-ejb现在不仅能够运行在不同的ejb容器上,而且还能运行于任何应用程序框架内部-这些框架必须能够识别ejb 3.0(jsr 220)和用于声明企业服务的普通注解(jsr 250)。

  本文没有提供关于声明性编程、ejbs、方面或注解的深度探索。相反,而只是分析一下这些技术之间的相互关系并讨论如何把它们用一种新的方式结合起来以简化应用程序开发。

  在本文中,你将会学习到如何编写一个ejb 3.0兼容的bean并且通过创建几个简单的方面使其具有声明性事务管理、安全和资源注入等功能。我希望您能从这个练习中得到以下的受益:

  ·学习方面的三个实际应用(依赖性注入、安全和事务)。

  ·熟悉ejb 3.0及其背后的思想。

  ·认识到怎样实现ejb与特定api的解耦以允许ejb 3.0兼容的服务能够以轻量级实现而不是仅由ejb来提供。

  二、 实例应用程序-航班订购

  在整个后面的讨论中,你将学习到一个航班订购系统的实现-它使用方面和注解来实现依赖性注入、安全和事务管理。该应用程序仅执行两项功能:它允许用户搜索航班(图1),然后订购一次旅行(图2)。这两个操作都将被进行安全处理以仅允许能被识别的用户来执行它们。另外,既然"订购旅行"操作包含订购两个航班(外出和返回航班),那么需要把该操作创建为事务性的-如,两个订购将作为一个工作单元要么都成功要么都失败。


图1.航班查询:首先,用户查找满足他们的指定标准的航班。

图2.航班订购:接下来,用户订购一个外出航班和一个返回航班。两个订购要么都成功要么都失败。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范