LS2J:从 LS 代理获取会话到 java class

LS2J: get session from LS agent into java class

我有一个 java class 应该将数据从当前数据库传输到另一台服务器。要访问当前数据库,Java 似乎需要一个有效的 Session 对象:

public class EdgeServerConnection
{
    public EdgeServerConnection(Session session) {
        try {
            // How to get the session into here?
            Database db = session.getCurrentDatabase();
            ...
        } catch(Exception e) {
        }
    }
}

应该从 LotusScript 代理调用 class,就像这样:

Set session = New NotesSession
Set jsession = New JAVASESSION
Set connectionClass = jsession.GetClass("EdgeServerConnection")
Set connectionObject = connectionClass.CreateObject("(L/lotus/notes/Session;V)", session)

但这会引发错误

LS2J: java constructor failed to execute

如果我从构造函数和 CreateObject 调用中删除 Session 参数,错误就会消失。

如何让代理会话进入 java class?

您不能在 LS2J 调用的 Java class 中使用 Domino 对象,也不能将 Domino 对象作为参数传递。

使用 LotusScript 中的 Notes Domino classes 完成所有工作,并使用 Java classes 来完成您真正需要使用 Java 完成的任务。

作为替代方案,您可以创建一个 Java 代理来执行 所有 工作。然后您可以从 LotusScript 调用 Java 代理。