Java中实现基于Aspectwerkz的AOP开发 - 编程入门网
Aspectwerkz,因为它可能是最容易学习的框架,也是最容易集成到现有项目的框架。
Aspectwerkz由Jonas Boner和Alexandre Vasseur创建,它是目前最快速、功能最丰富的框架之一。虽然它还缺乏AspectJ的某些功能,但己足以满足大多数开发者在许多情形下的需要。 Aspectwerkz最令人感兴趣的特性之一是它能够以两种不同的模式运行:联机模式和脱机模式。在联机模式下,AW直接干预属于JVM的底层类装入机制,截取所有的类装入请求,对字节码实施即时转换。AW提供了干预类装入过程的许多选项,另外还有一个替代bin/java命令的封装脚本,这个脚本能够根据Java版本和JVM能力自动生成一组可运行的配制。对于开发者,联机模式有许多优点,它能插入到任何类装入器并在类装入期间生成新的类。也就是说,我们不必手工修改应用程序的类,只要按通常的方式部署即可。不过,联机模式要求对应用服务器进行额外的配制,有时这一要求可能很难满足。 在脱机模式下,生成类需要二个步骤。第一步是用标准的编译器编译,第二步是重点——以脱机模式运行AWcompiler编译器,让它处理新生成的类。编译器将修改这些类的字节码,根据一个XML文件的定义,在适当的point-cut插入advice。脱机模式的优点是AWcompiler生成的类能够在任何JVM 1.3以上的虚拟机运行,本文下面要用的就是这种模式,因为它不需要对Tomcat作任何修改,只要对构造过程稍作修改就可以照搬到大多数现有的项目。 四、安装 本文将以一个简单的Web应用程序为例,它用Ant编译,部署在Tomcat 4+ Servlet容器上。下面我们假定读者己准备好上述环境,包括JVM 1.3+,同时Tomcat被设置成从webapps文件夹自动部署应用,自动将WAR扩展到目录(这是Tomcat默认的操作方式,因此只要你尚未修改Tomcat的运行方式,下面的范例可直接运行)。我们将把Tomcat的安装位置称为%TOMCAT_HOME%。 ⑴ 从http://apectwerkz.codehaus.org/下载Aspectwerkz,解开压缩到适当的位置。我们将把这个位置称为%ASPECTWERKZ_HOME%。 ⑵ 设置%ASPECTWERKZ_HOME%环境变量。 ⑶ 将Aspectwerkz加入到PATH环境变量,即设置set PATH=%PATH%;%ASPECTWERKZ_HOME%\bin\aspectwerkz ⑷ 下载本文的示范程序,将它放入%TOMCAT_HOME%\webapps文件夹。 ⑸ 将Aspectwerkz的运行时类加入到Tomcat的classpath。你可以将它的JAR文件放入示例应用的WEB-INF\lib文件夹,或放入%TOMCAT_HOME%\common\lib。 五、编译示例应用 如果你想深入研究一下本文的示例应用,可以解开WAR文件提取它的内容。你会发现根目录下有一个aspectwerkz.xml文件,构造应用时它会被复制到WEB-INF/classes目录。Servlet和advice的源文件在WEB-INF/src目录下,另外还有一个构建这些类的ANT脚本。 在运行这个示例程序之前,你还要对它进行后期编译。下面是具体的操作步骤: ⑴ 在命令行窗口中,转到解开WAR文件的目录。 ⑵ 输入下面的命令调用AW编译器:aspectwerkz -offline aspectwerkz.xml WEB-INF/classes -cp %TOMCAT_HOME%\common\lib\servlet.jar。如后期编译顺利通过,应看到下面的输出: ( 1 s ) SUCCESS: WEB-INF\classes 在构建文件中有一个名称为war的ANT任务,你可以用它重新创建WAR文件。 六、运行示例应用 首先启动(或重新启动)Tomcat,然后在浏览器中打开http://localhost:8080/demo/。 页面打开后,可以看到一个带二个输入框的HTML表单,一个输入名字,一个输入邮件地址。输入一些数据,然后点击按钮提交表单,出现一个页面显示出联系人信息和一个指向联系人清单的链接。 Java中实现基于Aspectwerkz的AOP开发(3)时间:2010-12-05七、代码分析 JSP页面就不分析了,现在我们对它不感兴趣。我们来看看AOPServlet的代码。
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |