服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java在domino服务器上的拓展:让domino具备面向方面的特征


  摘要:本文把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可以具备一些面向方面的特征。

扫描关注微信公众号