下载本文示例代码
提要 本文将与你一同探讨怎样把注解和方面的威力联合起来,以与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的例子:
@Statefulpublic 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.航班订购:接下来,用户订购一个外出航班和一个返回航班。两个订购要么都成功要么都失败。 这个简单的Web应用程序包含几个servlet、一个服务外观和一个DAO层(见图3)。 资源配置、安全性和事务管理等横切关注点将由方面(用AspectJ 1.5 M3实现)所提供以实现在Java 5注解中所声明的注入行为。
图3.航班订购系统架构:这个航班订购系统包括三个主要组成组件-它们联合起来共同完成用户请求。共4页。 1 2 3 4 :
提要 本文将与你一同探讨怎样把注解和方面的威力联合起来,以与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的例子:
@Statefulpublic 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.航班订购:接下来,用户订购一个外出航班和一个返回航班。两个订购要么都成功要么都失败。 这个简单的Web应用程序包含几个servlet、一个服务外观和一个DAO层(见图3)。 资源配置、安全性和事务管理等横切关注点将由方面(用AspectJ 1.5 M3实现)所提供以实现在Java 5注解中所声明的注入行为。
图3.航班订购系统架构:这个航班订购系统包括三个主要组成组件-它们联合起来共同完成用户请求。共4页。 1 2 3 4 :
下载本文示例代码
EJB 3.0+Aspect实现声明性编程初步EJB 3.0+Aspect实现声明性编程初步EJB 3.0+Aspect实现声明性编程初步EJB 3.0+Aspect实现声明性编程初步EJB 3.0+Aspect实现声明性编程初步EJB 3.0+Aspect实现声明性编程初步EJB 3.0+Aspect实现声明性编程初步EJB 3.0+Aspect实现声明性编程初步EJB 3.0+Aspect实现声明性编程初步EJB 3.0+Aspect实现声明性编程初步EJB 3.0+Aspect实现声明性编程初步EJB 3.0+Aspect实现声明性编程初步EJB 3.0+Aspect实现声明性编程初步EJB 3.0+Aspect实现声明性编程初步EJB 3.0+Aspect实现声明性编程初步
阅读(123) | 评论(0) | 转发(0) |