摘要:本文把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 “.” ?cargfile 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() :
call(public void outprinter());
// 在切点到达时完成前通知
before() :
mycut()
{
// 向domino控制台输出
system.out.println("... before ...");
}
}
分析这两段程序代码可知:如果aspectjtest代理正常运行,那么在domino控制台输出
"outprinter() work!"前将输出"... before ...",而这可能就是我们的目的。
第三步:制作files.lst文件并完成编译
该文件是一个文本文件,它些组aspectj编译器完成make-file功能。这里要注意的是:笔者在editplus中生成files.lst文件时,和javaagent.java、aspectjtest.java文件一齐都放在
d:/aspectjpro目录。
接下来你可以选中按【工具】菜单的【aspectj】条目,对这个具有面向方面特征的代理进行编译。生成javaagent.class和aspectjtest.class文件。当然你也可以手工用下面的命令行编译它们:ajc -d "." -argfile files.lst
这要求你作相应的path设置:ajc.bat在d:/aspectj/bin目录内。
第四步:创建数据库test.nsf和test表单以及aspectjtest代理
在服务器上创建test.nsf数据库并在test.nsf数据库中建立test表单,在test表单中放上一个按钮。以“aspectj test”为名称,而按钮的公式为@command([toolsrunmacro]; "aspectjtest")
第五步:建立aspectjtest代理
注意在建立aspectjtest代理时,你一定要在代理属性中作如下的选择:
代理名:aspectjtest
运行时选择:agent list selection。
taget::none
接下来选择 【imported java】和【reimport class files】引入类文件:aspectjrt.jar、aspectjtest.class、javaagent.class。
注意这里把d:/aspectj/lib/aspectjrt.jar拷贝到了d:/aspectjpro目录。
在浏览器中浏览表单test并按下按钮“aspectj test”,你将会在domino控制台中看见输出:
“… before …”
“outprinter() work!”
我们看到“… before …”输出代了“outprinter() work!”前,这也是我们的目的。
本文程序实例在lotus domino r6.5下运行正常且非常稳定。
结论:本文完整地在domino中成功引入了aspectj这一面向方面的语言,虽然简单但说明了domino可以具备一些面向方面的特征。
闽公网安备 35060202000074号