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

dom|服务器

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

时间: 2024-10-25 12:49:31

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

怎么用java显示ftp服务器上文件夹中的图片在jsp页面上?

问题描述 怎么用java显示ftp服务器上文件夹中的图片在jsp页面上? ftp在另一台windows上,访问jsp页面要读取并显示出ftp上的图片. ftp上的图片路径保存在数据库中,操作ftp的jar我选了apache的FtpClient. 现在的问题是,action获取到ftp上的文件后,是下载下来再读取成流输出到页面呢?还是直接从FTP获取成流输出到页面?如果有,求思路,最好有代码举例我不想ftp上的文件下载到部署环境上然后再输出到页面,想通过读取ftp的流直接显示到页面,页面关闭后流就

java 上传图片到服务器上,在页面上不能显示,急急急,在线等,求大神帮忙!!!!!

问题描述 java 上传图片到服务器上,在页面上不能显示,急急急,在线等,求大神帮忙!!!!! java 上传图片到服务器上,图片上传成功,但是在页面展示时不能加载,路径没问题,手动将上传的图片改个名字后能正常加载 解决方案 最终的上传路径有没有特殊字符或者空格啥的,最好不要带特殊字符包括空格啥的. 解决方案二: 图片在内网服务器上A,部署在服务器B的应用要显示图片,受网络限制外网用户无法访问到图片,为了解决这个问题现将图片下载到服务器B上,现在服务器B上存在图片,但是不能正常加载,通过手动地对

本地文件-java 如何在服务器上直接打开存在本地的文件。

问题描述 java 如何在服务器上直接打开存在本地的文件. 如何在服务器上直接打开存在本地的文件,文件类型不限.文件只在自己的电脑上,不在服务器上,在网页上面弄个链接或button,直接点击就可打开本地文件.不用上传与下载. 如下几种方式只支持自己的电脑上,不知道有哪们高手能有什么好的方法在不同电脑上时打开自己电脑中的文件 //方法一 Desktop.getDesktop().open(new File(""c:SZP5.sql"")); //方法二 String

Java通过FTP服务器上传下载文件的方法_java

对于使用文件进行交换数据的应用来说,使用FTP 服务器是一个很不错的解决方案. 关于FileZilla Server服务器的详细搭建配置过程,详情请见FileZilla Server安装配置教程.之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲测上传2G的文件到FileZilla Server都没有该问题,朋友们可以放心使用该代码. FavFTPUtil.Java package com.favccxx.favsoft.util; import jav

很奇怪的问题,java程序在服务器上跑,string直接赋值乱码

问题描述 @RequestMapping(value="qunfajiekou")@ResponseBodypublicvoidqunfajiekou(Stringfromid,Integeroffset){Stringcontent="乱码啊";logger.info("luanma{}",content);} 这样一个简单的程序,本地是好的,但是上传到服务器上远程调试,content竟然是乱码,自然日志输出也就是乱码了?有人知道是什么问题吗,

如何监控domino服务器上的邮件收发

问题描述 我们需要做一个lotus邮件收发的短信提醒系统,应该怎么做.domino的版本有点老,先谢大家了. 解决方案 解决方案二:关注一下!!!!解决方案三:方案一,可以接一个外发短信的设备,wavecome或者手机,然后把邮件提示信息写到一个库(信息库)中,写一个定时代理,捞信息库中的信息,根据标题,收件人,将信息通过接口程序调用设备发出短信,设备里面需要有sim卡方案二,可以找第三方短信发送平台,将信息库中的内容通过接口程序送到第三方平台,短信让他们发.解决方案四:想问下楼上的,在邮件系统

java判断远程服务器上的文件是否存在的方法_java

在做数据文件导入到   LEFTII   中是遇到一个文件,在做导入的时候有时候生成的原始文件可能不存在,现在通过加一个判断,判断文件是否存在,起初以为简单的判断文件   file.exists()   存不存在就行了,但是后来事实证明这个只能判断本地的文件是否存在. 这里我们通过一个巧妙的方法告诉大家,就是把远程的文件共享到本地来,通过电脑的衍射可以轻而易举的解决这个问题 过程如下 然后在下面的步骤输入用户名,密码,这样就可以通过判断本地是否存在这个文件就搞定了.

紧急求助:domino服务器老是出现以下两个进程,请求帮忙解决!!

问题描述 [size=11px]最近单位domino服务器上老是出现一下两个进程:remoteconsolecommandissuedby***(服务器名)/servers/****(域名):shtatimeshowstatserver.availabilityIndex;server.task>c:DocumentsandSettingsadministratorLocalSettingstempren05896.conren05896.con的文件名随机产生.由于不断的产生出这两个进程,严重

Java从服务器上获取时间动态显示在jsp页面实现思路

Java只能获取一次,到页面的时间是静态的,不过通过js和Java的合作,巧妙地实现此功能   Java获取服务器时间,动态显示到jsp页面,大家都是到Java只能获取一次,到页面的时间是静态的,不过通过js和Java的合作,巧妙地实现此功能. 本 人是给电视做系统,客户要求页面能显示时间,因为电视浏览器获取的时间不对,没办法只能从服务器获取时间,但是问题来了,服务器的时间获取一次就成静态的 了,客户不满意,但也没办法,只能这样.不过这个问题在我这老惦记着,今天看到有个例子,说把Java获取服务