在Lotusscript代码中调用Java

    xiaoxiao2022-07-03  121

    大家好,才是真的好。写技术文档,有一个很大的特点:吃力不讨好。但我们坚信,技术带来人的进步。所以今天讲一下在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也可以发挥很大的威力,有着广泛地实际用途。最后,我之所讲这一篇文档,完全是因为在项目中用到过啊,而且确实好用。

    更多精彩内容请关注微信公众号“协作者” 原文链接:https://mp.weixin.qq.com/s/jpEo0CkAr393YZSAFmUWAQ

    最新回复(0)