开放源代码应用服务器简化复杂操作,aop的新特性
译者语:
本人对JBOSS4.0还不是很熟悉,所以一些新的概念和知识理解也难免有误,尤其是AOP方面的知识。本文翻译的过程中,有些概念和语义把握的确实不是很准,希望在这方面有经验和了解的朋友批评指正,欢迎多提意见,给我发邮件wafd2003@yahoo.com.cn QQ282099538
序言
JBOSS 4.0,是一个安装简单,包含EJB2.0容器、Java消息服务等等功能的应用服务器,但是他的面向方面设计(AOP)是它真正突出的部分。JBOSS4.0的优点很多。它不但是一个开放源代码、平台独立、全面的J2EE支持应用服务器而且安装也非常简单。
JBOSS包括web服务器(servlet/jsp容器,Html服务器)、EJB2.0容器。完整的纯Java的数据库引擎,(Java消息服务)JMS,JavaMail,和Java事务处理API/Java事务处理服务(JTA/JTS)支持。早期的JBOSS使用了Apache Tomcat Web服务器,但在JBOSS4.0中已经吧Apache Tomcat内嵌到JBOSS中了。
JBOSS4.0在今年的JavaOne大会上发布。JBOSS组织把这个版本的JBOSS作为一个开发版,以便进行开发代码的测试。正式的产品级的版本预计要到今年的第四季度发布。新增的功能包括,集成Java数据对象(JDO),对于JMS多点传送机制支持的修补,对J2EE1.4的完全实现和分布式事务机制。
安装JBOSS4.0非常简单:先解压缩JBOSS打包文件在配置一些环境变量就可以了。 假设我现在有一个WAR文件并且这个文件已经使用JDBC进行了测试。当JBOSS已经正常运行,我把这个WAR文件放到JBOSS的部署目录下,这时JBOSS的热部署功能就可以自动部署这个WAR。从下载JBOSS到安装并运行我的应用程序大概花不了10分钟。
JBOSS的应用服务器控制和配置-JMX机制,运行一次可以部署所有的组件和服务。资源属性和可配置参数可以通过MBeans(可控制beans)映射和更改,这些控制可以在JBOSS的控制台进行设置。一旦我们的servlet-based的应用程序被部署,JBOSS就自动安装一个部署MBeans,这个MBeans会被添加到JMX控制台的导航菜单中。通过这个MBean就可以部署或卸载WAR应用程序,或查看应用程序相关的属性。
不可否认,JBOSS的控制台在图形话方面比起IBM's WebSphere 或BEA's WebLogic要显得简单的多,但效果是一样的完全可以满足工作的需要。另外,由于JBOSS是开发源代码的所以你可以根据需要扩展控制台加上你想要的东西。
ASPects 介绍
JBOSS4.0的的新特性体现在面向方面设计(AOP)方面。通过适当的扩展,AOP可以使你描述类似共享自父类的类。在JBOSS中,AOP特性有许多好处。最重要的一个特性是它可以向你的类中“注入”一个行为而无需更改类的源代码。这一特性允许你维护对象的持久行,使对象的方法“有目的的处理”("transaction aware,")并使一个类能够多集成。
JBOSS的AOP架构负责处理AOP,使用了一组命名概念,比如"interceptor," "pointcut," 和“introdUCtion”。
一个interceptors编码“拦截器”(intercepts),它把一个对象放到一个被拦截的类中。JBOSS允许你定义拦截器,这个拦截器被hook到构造方法和存取字段上。一个由pointcut定义的点被插入到拦截器类内部,他是一段定义在一个specific.XML文件中的XML代码,这也是一个像上面讲到的热部署的过程。
一个pointcut定义了已经拦截的(intercepted )和正在拦截的类的规范,它是一个可选项,可以通过XML文件中的过滤机制来选择它,所以只有规范的字段和方法会被拦截。拦截类扩展了一个invoke()方法,只
要拦截类的方法或字段被访问这个方法就会被JBOSS AOP架构调用。结果是拦截者看不到外部系统和拦截类之间被插入了什么。
JBOSS在引导时通过拦截类的类文件实现了这一切。当一个拦截类被引导,ClassLoader通过类文件向类中加入字节代码。在运行之后字节代码把控制传输到一个控制类中并且扮演一个交换器的角色,把拦截发送到适当的处理类。
JBOSS4.0 AOP架构超出了简单的向一个类中注入行为的操作。它提出了引言的概念,这个引言是一个特定的拦截它在引导时把一个新的接口存储到类中。另外,引言提供了类的接口的实现。
如果你觉得多重继承还不够,JBOSS还使用AOP来把类和类的方法与元数据关联起来。实际上,JBOSS参照了JSR1.75中的元数据机制。这使得今后JBOSS可以透明的向一个已有的Java对象添加所有的持久行机制和传输控制。
如果对AOP的方面的知识很感兴趣,但是你又不想通过一个应用服务器来体验他的特性,你可以从jboss.org上下载一个分离的AOP架构单独使用。
复杂,但却很有用
我必须承认我对JBOSS AOP的担心。它非常像FastObjects 的oop ,我也非常喜欢FastObjects。JBOSS的AOP很先进但也很麻烦,它在类装载时处理,所以没有外在的附加的编辑步骤,对于向类中插入方法不需要改变源代码。
当我重新考量JBOSS的简单安装和优秀的热部署功能后,我打消了上述对JBOSS的担心。现在只剩下对JBOSS4.0的另一个看法那就是他的文档,JBOSS站点上发布的免费文档好像是原来的旧文档。 除了这些,再没什么了。
资源
jboss:
http://www.jboss.org
aop-相关文章:
"I Want My AOP," Ramnivas Laddad:
Part 1: Separate software concerns with aspect-oriented programming (January 2002)
Part 2: Learn AspectJ to better understand aspect-oriented programming (March 2002)
Part 3: Use AspectJ to modularize crosscutting concerns in real-world problems (April 2002)
"Add a JAC to Your Toolshed," Renaud Pawlak (March 2003):
http://www.javaworld.com/javaworld/jw-03-2003/jw-0307-jac.html进入讨论组讨论。
(出处:http://www.knowsky.com)