在Weblogic 10.3.5上启用AspectJ
我想将AspectJ实现到Weblogic ear模块中,以在开发阶段改变行为。这是我的设置:在Weblogic 10.3.5上启用AspectJ,weblogic,aspectj,Weblogic,Aspectj,我想将AspectJ实现到Weblogic ear模块中,以在开发阶段改变行为。这是我的设置: 1sample.ear类为sample.java的文件需要更改行为: public class Sample { public String getName() { return "Sample Name"; } } 并且有一个servlet类在init方法中调用这个类 1samplespect.jar文件,在META-INF中嵌入aop.xml public
- 1
类为sample.java的文件需要更改行为:sample.ear
public class Sample { public String getName() { return "Sample Name"; } }
- 1
文件,在META-INF中嵌入aop.xmlsamplespect.jar
public aspect SampleAspect { pointcut getName() : call(* *.Sample.getName(..)); String around() : getName() { return "Sample Name Aspect"; } }
classpath=C:\aspectj\lib\aspectjrt.jar;C:\library\samplespect.jar;%类路径%
还要将-javaagent:C:\aspectj\aspectjwearver.jar
放入java参数中
将sample.ear部署为Weblogic的一个模块
启动Weblogic server时,我在服务器的服务器日志中看到了此日志
[EventInfoClassLoader@302eb2b4] info register aspect SampleAspect
但是我检查servlet,它返回“Sample Name”,而不是方面中的名称
我做错了什么
更新:
我按照Amir的建议更改为execution(**.Sample.getName(..)
,但仍然存在相同的问题
这是aop.xml文件的信息:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN"
"http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
<weaver options="-verbose" />
<aspects>
<aspect name="com.mycode.aspect.SampleAspect" />
</aspects>
</aspectj>
您没有提供servlet代码。所以我猜aspect是在实际执行“getName”时拦截的。如果是这样,请使用“执行”而不是“调用”。谢谢您的分享@Amir,我按照您的建议更改为execution
,但仍然无法工作。