AspectJ和Tomcat结合简例!相对于JBossAOP和Tomcat要容易一点

2024-04-13 14:18

本文主要是介绍AspectJ和Tomcat结合简例!相对于JBossAOP和Tomcat要容易一点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

由于JBoss AOP暂时的一些限制,比如不能截取系统类,和Tomcat结合起来使用比较困难,先用AspectJ来实践了一下,确实比较方便,下列代码主要展示如何实践的大概框架,简陋至极。

1.PositionManager
public abstract class PositionManager {
    protected static PositionManager self = null;
    public abstract void addPosition(Position p);    
    public static PositionManager getInstance(){
        if(self == null)
            self = new PositionManagerImpl();
        return self;
    }   
}

2.PositionManagerImpl实际实现PositionManager的业务逻辑
public class PositionManagerImpl extends PositionManager {
    protected ArrayList positions = new ArrayList();
   
    /* (non-Javadoc)
     * @see com.airinbox.jaidwapfactory.position.PositionManager#addPosition(com.airinbox.jaidwapfactory.position.Position)
     */
    public void addPosition(Position p) {
        System.out.println("add position");
        if(!positions.contains(p))
            positions.add(p);
    }
}

3.CategoryManager
public abstract class CategoryManager {
    protected static CategoryManager self = null;    
    public abstract void addCategory(Category c);
    public static CategoryManager getInstance() {
        if(self == null)
            self = new CategoryManagerImpl();
        return self;
    }
}

4.CategoryManagerImpl
public class CategoryManagerImpl extends CategoryManager {
    protected ArrayList categories = new ArrayList();
   
    /* (non-Javadoc)
     * @see com.airinbox.jaidwapfactory.Category.CategoryManager#addCategory(com.airinbox.jaidwapfactory.Category.Category)
     */
    public void addCategory(Category c) {
        System.out.println("add category");
        if(!categories.contains(c))
            categories.add(c);
    }
}

5.PositionAspect:最关键的aspect的声明,主要说明了如何截取子类的实例,如何获得方法调用的参数等等,由于方法可能会在Jsp中调用,减少麻烦,pointcut声明的时候一般不用call,而用execution。
public aspect PositionAspect {        
    after(Position p) :
        execution(void PositionManager+.addPosition(Position+))
        && args(p){
         CategoryManager cm = CategoryManager.getInstance();
         Category c = new CategoryImpl(p.getId(),p.getName());
         cm.addCategory(c);       
    }
}

发布到tomcat的时候,只要把aspectjrt.jar copy到$tomcat_home/common/lib目录下就可以了

这篇关于AspectJ和Tomcat结合简例!相对于JBossAOP和Tomcat要容易一点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/900367

相关文章

详解Tomcat 7的七大新特性和新增功能(1)

http://developer.51cto.com/art/201009/228537.htm http://tomcat.apache.org/tomcat-7.0-doc/index.html  Apache发布首个Tomcat 7版本已经发布了有一段时间了,Tomcat 7引入了许多新功能,并对现有功能进行了增强。很多文章列出了Tomcat 7的新功能,但大多数并没有详细解释它们

Tomcat性能参数设置

转自:http://blog.csdn.net/chinadeng/article/details/6591542 Tomcat性能参数设置 2010 - 12 - 27 Tomcat性能参数设置 博客分类: Java Linux Tomcat 网络应用 多线程 Socket 默认参数不适合生产环境使用,因此需要修改一些参数   1、修改启动时内存参数、并指定J

TL-Tomcat中长连接的底层源码原理实现

长连接:浏览器告诉tomcat不要将请求关掉。  如果不是长连接,tomcat响应后会告诉浏览器把这个连接关掉。    tomcat中有一个缓冲区  如果发送大批量数据后 又不处理  那么会堆积缓冲区 后面的请求会越来越慢。

Go 语言中Select与for结合使用break

func test(){i := 0for {select {case <-time.After(time.Second * time.Duration(2)):i++if i == 5{fmt.Println("break now")break }fmt.Println("inside the select: ")}fmt.Println("inside the for: ")}} 执行后

Tomcat下载压缩包解压后应有如下文件结构

1、bin:存放启动和关闭Tomcat的命令的路径。 2、conf:存放Tomcat的配置,所有的Tomcat的配置都在该路径下设置。 3、lib:存放Tomcat服务器的核心类库(JAR文件),如果需要扩展Tomcat功能,也可将第三方类库复制到该路径下。 4、logs:这是一个空路径,该路径用于保存Tomcat每次运行后产生的日志。 5、temp:保存Web应用运行过程中生成的临时文件

Java了解相对较多!

我是对Java了解相对较多,而对C#则是因工作需要才去看了一下,C#跟Java在语法上非常相似,而最初让我比较困惑的就是委托、事件部分,相信大多数初学者也有类似的困惑。经过跟Java的对比学习,发现这其实跟Java的监听、事件是等同的,只是表述上不同罢了。   委托+事件是观察者模式的一个典型例子,所谓的委托其实就是观察者,它会关心某种事件,一旦这种事件被触发,这个观察者就会行动。   下

docker学习系列(四)制作基础的base项目镜像--jdk+tomcat

前面已经完成了docker的安装以及使用,现在我们要将自己的javaweb项目与docker结合 1.1准备jdk+tomcat软件 ​​我下载了apache-tomcat-7.0.68.tar.gz和jdk-7u79-linux-x64.tar.gz,存储于Linux机器的本地目录/usr/ect/wt/下(利用xshell上传)。利用linux命令 tar -zxvf apache-tom

Tomcat服务详解

一、部署Tomcat服务器 JDK安装官方网址:https://www.oracle.com/cn/java Tomcat安装官方网址:Apache Tomcat® - Welcome! 安装JDK 1.获取安装包wget https://download.oracle.com/otn/java/jdk/8u411-b09/43d62d619be4e416215729597d70b8ac

Jenkins--pipeline认识及与RF文件的结合应用

什么是pipeline? Pipeline,就是可运行在Jenkins上的工作流框架,将原本独立运行的单个或多个节点任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。 为什么要使用pipeline? 1.流程可视化显示 2.可自定义流程任务 3.所有步骤代码化实现 如何使用pipeline 首先需要安装pipeline插件: 流水线有声明式和脚本式的流水线语法 流水线结构介绍 Node:

龙芯小本8089b安装debian7+java+tomcat+mysql

之前团购了一个龙芯小本8089b,cpu很差劲,内存也只有1G,根本不能用来娱乐,于是想把它换个纯字符系统,然后搭建java服务器平台,用作局域网固定的mini服务器开发用。 以下是我搭建过程,当然实际比这做的多,这是多次尝试之后的成功过程,分享给大家,自己也做个笔记 debian7纯字符系统安装龙芯专有java安装tomcat安装mysql安装 一、debian7安装参考 圣域☆