摘要:本文把ASPectJ应用于Domino服务器上Notes数据库的开发,
从而实现让Domino具备一些面向方面特征的目的。
要害字:Lotus Domino/Notes、Lotus Domino DIIOP for Java、ASPectJ。
如何把ASPectJ应用于Domino的开发,从而让Domino具备一些面向的特征,是本文写作的目的。文中作者根据实际在Domino项目中对ASPectJ的应用加以整理、简化——为初学者提供一个简要的入门。本文的结尾处提供了实例的源代码。
下面分步骤进行讲解:
第一步:ASPectJ开发环境配置
在实际项目开发中由于现在的ASPectJ集成开发环境很少,因此笔者选用了最简单也是目前比较有效的开发工具:EditPlus。在使用EditPlus前,先作CLASSPATH设置如下:
d:\j2sdk1.4.2_02\jre\lib\rt.jar;d:\j2sdk1.4.2_02\lib\tools.jar;d:\ASPectj\lib\ASPectjrt.jar;d:\ASPectj\lib\ASPectjtools.jar;d:\lotus\domino\Notes.jar;d:\lotus\domino\data\domino\java\NCSO.jar
笔者的Domino服务器安装在D:盘,Java SDK也在D:盘,同样ASPectJ v1.2也解压安装在D:盘。
接下来,设置EditPlus以方便开发,进入【工具】菜单,【选配置用户工具】出现:
Group 1:
Javac
(
命令:D:\j2sdk1.4.2_02\bin\javac.exe
参数:-d “.” $(FileName)
)
接下来完成”ASPectJ”条目设置:
ASPectJ
(
命令:D:\ASPectj\bin\ajc.bat
参数:-d “.” –argfile files.lst
)
第二步:用EditPlus在Domino代理中开发方面
Notes数据库ASPectJTest代理如下:
import lotus.domino.*;
public class JavaAgent extends AgentBase
{
public void NotesMain()
{
try
{
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
// (Your code goes here)
OutPrinter();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void OutPrinter()
{
System.out.println("OutPrinter() work!"); // 向Domino控制台输出
}
}
和该代理配套的方面如下:
ASPect ASPectJTest
{
// 定义切点myCut()捕捉代理中的OutPrinter()方法
pointcut myCut() :