将AspectJ集成到基于Eclipse + Lomboz + XmlBuddy的Web应用中去 - 基础篇

一、       配置eclipes开发环境

 

首先,下载需要的插件:

 

eclipse-SDK- 3.0.2 -win32

Eclipse IDE

官方下载地址:

http://download.eclipse.org/downloads/drops/R- 3.0.2 -200503110845/eclipse-SDK-3.0.2-win32.zi

 

xmlbuddy_2.0.62

用于xml开发,可以用来编辑web.xml文件

官方下载地址:http://www.xmlbuddy.com/

 

org.objectweb.lomboz_ 3.0.1 .N20050106

用于web开发,支持jsp,servlet等等的高亮显示和编辑

官方下载地址:http://forge.objectweb.org/projects/lomboz/

 

ajdt_1.2_for_eclipse_3.0

用于AspectJ开发,专为eclipse开发的AspectJ插件

官方下载地址:http://www.xmlbuddy.com/

 

VE-runtime- 1.0.2 .2

安装以上两个插件时必备,一个相关的类包含在此插件中。The Eclipse Visual Editor project is a vendor-neutral, open development platform supplying frameworks for creating GUI builders, and exemplary, extensible tool implementations for Swing/JFC and SWT/RCP. These tools are exemplary in that they verify the utility of the Eclipse Visual Editor frameworks, illustrate the appropriate use of those frameworks, and support the development and maintenance of the Eclipse Visual Editor Platform itself.

官方下载地址:http://www.xmlbuddy.com/

 

GEF-runtime- 3.0.1

安装VE时必备,The Graphical Editing Framework (GEF) allows developers to take an existing application model and quickly create a rich graphical editor.

官方下载地址:

http://download.eclipse.org/tools/gef/downloads/drops/R- 3.0.1 -200408311615/GEF-runtime-3.0.1.zip

 

emf-sdo-runtime- 2.0.2

安装VE时必备,EMF is a modeling framework and code generation facility for building tools and other applications based on a structured data model. From a model specification described in XMI, EMF provides tools and runtime support to produce a set of Java classes for the model, a set of adapter classes that enable viewing and command-based editing of the model, and a basic editor. Models can be specified using annotated Java, XML documents, or modeling tools like Rational Rose, then imported into EMF. Most important of all, EMF provides the foundation for interoperability with other EMF-based tools and applications.

官方下载地址:

http://download.eclipse.org/tools/emf/downloads/drops/ 2.0.2 /R200503151315/emf-sdo-runtime-2.0.2.zip

[说明] 现在最高版本的ajdt支持到eclipse 3.0.2 ,所以相应的其他插件都选择与eclipse相对应的最高版本。

 

2、下载完成后解压进行安装:help -> softwareupdate -> find and install -> …from local….

 

3、进行配置window -> perspective

配置aspectj

       不需要特别配置

配置lomboz

A、设置jdk tools.jar位置,为安装的j2sdk目录

B、配置server definition:选择Apache Tomcat : tomcat5.0.x,设置其Server libproject lib,可以把%tomcat_home%/common/lib一些相关的包都放进去,有可能是必须放,注意,某些版本据说可能是 5.0.27 ,需要修改目录E:/eclipse3.0.2/plugins/com.objectlearn.jdt.j2ee_3.0.1

/serverstomcat5.0.x配置文件tomcat50x.server文件,将两处-Djava.endorsed.dirs=

修改为如下

-Djava.endorsed.dirs="${serverRootDirectory}/common/endorsed"

 

4、配置window -> customize perspective,将aspectjlomboz相关的项目都给添加到new中,这样就可以通过“新建“来建立相应的工程文件。

 

二、       集成AspectJWeb工程中

 

5、新建一个AspectJ工程

 

6、在此工程中新建一个Lomboz J2EE Module

 

7、新建一个Servlet,并设置其url-mapping

 

/*

 * Created on 2005-8-3 ,test

 *

 * @Author:Jonathan Q. Bo from tju.msnrl

 * MyBlog:http://blog.csdn.net/jonathan_q_bo

 *

 */

package org.tju.msnrl.jonathan.aspectj;

 

import java.io.IOException;

 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

/**

 * @author Administrator

 * 2005-8-3 14:46:22

 */

public class HelloWorld extends HttpServlet {

 

    public void doGet(HttpServletRequest request,

            HttpServletResponse response) throws ServletException, IOException {

        //TODO Method stub generated by Lomboz

        ServletOutputStream out = response.getOutputStream( );

        out.println("<h1>Hello World from an aspect-oriented Servlet!</h1>");

    }

}

 

8、新建一个Aspect,拦截其doGet(..),在其执行之前和之后作相应的advice

 

/*

 * Created on 2005-8-3 ,test

 *

 * @Author:Jonathan Q. Bo from tju.msnrl

 * MyBlog:http://blog.csdn.net/jonathan_q_bo

 *

 */

package org.tju.msnrl.jonathan.aspectj;

 

import java.io.IOException;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

/**

 * @author Administrator

 * 2005-8-3 15:43:54

 */

 

public aspect HelloWorldAspect {

 

       public pointcut captureHttpRequest(HttpServletRequest request,

            HttpServletResponse response) :

            execution(public void HelloWorld.doGet(HttpServletRequest,

                                        HttpServletResponse)) &&

            args(request, response);

           

        before(HttpServletRequest request, HttpServletResponse response)

        throws IOException :

        captureHttpRequest(request, response)

        {

        response.setContentType("text/html");

        ServletOutputStream out = response.getOutputStream( );

        out.println("<html>");

        out.println("<head><title>Adding a title using AspectJ!</title></head>");

        out.println("<body>");

        }

       

        after(HttpServletRequest request, HttpServletResponse response)

        throws IOException :

        captureHttpRequest(request, response)

        {

        ServletOutputStream out = response.getOutputStream( );

        out.println("</body>");

        out.println("</html>");

        }

   

}

 

9、部署工程,默认会将工程打包成war文件部署,试验发现,war文件执行时会报错,所以,需要改写build.xml文件,原build.xml文件将编译好的文件统一放到dist文件夹中,然后对其打包war,简单修改,只需要将打包过程去掉,将dist文件夹直接拷贝到tomcat_home/webapps/下就可以了

 

<project name="webmodulebuilder"  default="deploy"  basedir=".">

 

 

  <!-- set global properties for this build -->

  <property file="build.properties"/>

  <property name="dist" value="../../dist" />

  <property name="deploy.dir" value="C:/Program Files/Apache Software Foundation/Tomcat 5.0/webapps/rbac" />

  <property name="web" value="../" />

 

  

  <target name="init">

    <!-- Create the dist directory structure used by compile

         and copy the deployment descriptors into it-->

    <mkdir dir="${dist}"/>

    <mkdir dir="${dist}/WEB-INF"/>

    <mkdir dir="${dist}/WEB-INF/classes"/>

    <mkdir dir="${dist}/WEB-INF/lib"/>

    <copy todir="${dist}">

      <fileset dir="${web}">

        <include name="**/*.*"/>

        <exclude name="**/*.java"/>

        <exclude name="**/jsp_servlet/*.class"/>

        <exclude name="**/build.xml"/>

        <exclude name="**/deploy.xml"/>

        <exclude name="**/build.properties"/>

        <exclude name="**/servers.xml"/>

        <exclude name="**/targets.xml"/>

        <exclude name="**/*.war"/>

      </fileset>

    </copy>

    <copy todir="${dist}/WEB-INF/classes">

      <fileset dir="${project.dir}/${bin.dir}">

        <include name="**/*.*"/>

        <exclude name="**/jsp_servlet/*.class"/>

        <exclude name="**/*.java"/>

      </fileset>

    </copy>

   

  </target>

 

 

  <target name="deploy" depends="undeploy,init" >

    <mkdir dir="${deploy.dir}/rbac"/>

    <copy todir="${deploy.dir}/rbac">

      <fileset dir="${dist}">

        <include name="**/*.*"/>

      </fileset>

    </copy>

   

   <!-- Create the distribution directory -->

    <!--<delete file="${war}.war" failοnerrοr="false" />

    <jar jarfile="${war}.war" basedir="${dist}" manifest="${dist}/META-INF/MANIFEST.MF"/>   

    <copy file="${war}.war" todir="${deploy.dir}"/>-->

    <!--<delete file="${war}.war" failοnerrοr="false" />-->

    <!--<delete dir="${dist}" failοnerrοr="false" />-->

   

  </target>

 

  <target name="deployTool">

      <ant antfile="./deploy.xml" dir="." target="deploy" inheritall="true">

      </ant>

  </target> 

 

 

  <target name="undeploy">

    <!-- Sometimes you can undeploy with deleting the module file but it is best dealt on an appserver basis

         at undeployTool target -->

  </target>

  <target name="undeployTool">

      <ant antfile="./undeploy.xml" dir="." target="undeploy" inheritall="true">

      </ant>

  </target>  

 

 

</project>

 

10、打开J2EE Lamboz View,选中Lomboz J2ee Module  -> 部署 deploy -> 运行服务器 Run server

 

11、在浏览器中输入地址访问,会出现如下结果,

 

Hello World from an aspect-oriented Servlet!

 

成功!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值