分享
 
 
 

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

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

让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 “.” –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() :

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可以具备一些面向方面的特征。

自我介绍:

屈忠慰,男,1988年开始从事软件开发,精通多门计算机语言,对软件体系有深刻认识.现在主要将精力集中在Domino和J2EE的企业级分布式计算上,目前主要针对AspectJ进行研究以及企业级推广应用和项目实施。有兴趣的朋友可以发邮件到quzhongwei@126.com

联系电话:13008687769、QQ:308742908

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有