写技术文档,有一个很大的特点:吃力不讨好。但我们坚信,技术带来人的进步。所以今天讲一下在Lotusscript代理中调用Java代码的方式,即LS2J。

 LS2J简介

LS2J很“古老”,大约是2002年Lotus Domino R6发布时的一项新功能。利用LS2J可以很轻易地在LotusScript代码调用Java,扩展Lotusscript语言能力,实现Lotusscript难以实现的各种功能。

Lotusscript(以下简称LS)的优势是紧密结合各种Domino类和对象,具有强大的Notes文档处理能力,而Java就不用说了,其跨平台特性和丰富的类库让实现各种功能充满了想象,比如实现JDBC、图表统计、图片处理、PDF文件、FTP上传、签名计算等等。

 一个简单的例子

LS2J很简单。在Domino Designer帮助中就可以找到简单的示例,如使用Java中的内置java.lang.Integer类。我们在表单中创建一个按钮,然后写入LS代码。首先在表单(Options)事件中写入userlsx "*javacon"表明使用LS2J DLL文件并注册数据类型,LS将会连接JVM等,如下图:

以下为一个特别简单的例子,实现将数字转换为文本。

首先在LS定义三个类JavaSession(java会话)、JavaClass(java类)、JavaObject(java对象或方法),如下:

Dim mySession As JavaSession

Dim myClass As JavaClass

Dim myObject As JavaObject

要是开始调用Java,则首先需要初始化java会话类,如下:

Set mySession = new JavaSession()

然后通过Javasession得到Java内置的类,即java.lang.Integer

Set myClass = mySession.GetClass("java/lang/Integer")

根据java.lang.Integer类创建一个具体的对象,其中CreateObject("(I)V", 5)中的“(I)V”指定为整数类型,数字5为该对象初始值

Set myObject = myClass.CreateObject("(I)V", 5)

最后,我们可以调用java/lang/Integer类的方法toString(),将初始值5变成文本并打印出来。

Msgbox myObject.toString()

代码整体效果如下:

得到的结果:

 获取本地计算机信息

更进一步,我们可以通过Java内置的方法(java/net/lnetAddress),来获取和计算机有关的信息,比如来访用户的用户本地计算机名、IP地址等等。

同样创建一个按钮,然后写入下列代码

Dim jsession As JavaSession

Dim jclass As JavaClass

Dim localHost As JavaObject

Set jsession = New JavaSession

Set jclass = jsession.GetClass("java/net/InetAddress")

Set localHost = jclass.getLocalHost()

Msgbox "计算机名称: " & localHost.getHostName()

Msgbox "IP地址: " & localHost.getHostAddress()

代码效果如下图:

运行一下看看效果吧

两个例子中,我们都采用的是很简单的Java内置的方法,其实也可以自己写Java库来进行调用。下面是调用Java脚本库的例子。

 

 调用Java脚本库

首先,我们得建一个java脚本库,在新建Script库时,类型一定要选择Java,如下图:

如果有jar要导入,可点击导入按钮。本例很简单,只是进行信息输出打印,所以不引入任何外部jar包。可以先选择Untitled.java,鼠标右键重命名为我们要定义的Java类名称,我们取名为helloJavaClass如下图:

然后双击打开,在里面输入如下Java代码:

非常简单,就是打印输出一句话。Java脚本库就算完成了。接着,我们新建一个Lotusscript代理,如下图:

在该代理的(Options)事件中,先写入UseLSX "*javacon",然后写入Use "helloJava"——即我们引入的Java库,如下图:

同样定义javasession、javaclass、javaobject,并分别进行实例化。最后调用hellMethod方法,如下图:

我们在Notes中打开Java控制台,然后运行该代理,即可看到消息打印到Java控制台中,如下图:

这里只是一个很简单的入门。不过相信各位已经知道如何在Lotusscirpt调用Java了。在BS应用或后端代理中,LS2J也可以发挥很大的威力,有着广泛地实际用途。最后,我之所讲这一篇文档,完全是因为在项目中用到过啊,而且确实好用。

品略图书馆 http://www.pinlue.com/