在 IIOP 连接后,Lotus Notes 连接器从副本运行代理

Posted

技术标签:

【中文标题】在 IIOP 连接后,Lotus Notes 连接器从副本运行代理【英文标题】:Lotus Notes Connector run the agent from replica after IIOP connection 【发布时间】:2019-12-04 11:41:54 【问题描述】:

我确实有以下情况:

"ScheduledJobs.nsf" 与代理"Worker" "ScheduledJobs.nsf" 在三个 domino 服务器上复制:DominoServer1DominoServer2DominoServer3 有了Lotus Notes Connector,我能够通过IIOPDominoServer1 上的Notes 数据库"ScheduledJobs.nsf" 建立连接。此连接是静态配置的。 因为有到 Notes 数据库的连接,我能够在 DominoServer1 上的 javascript 上运行 Notes 数据库 "ScheduledJobs.nsf" 上的代理 "Worker"

我想做的是:

有时,根据情况,我想从副本运行代理 "Worker"。例如,我想在 DominoServer2DominoServer3 上运行代理 "Worker"

问题:

由于通过IIOP 与Notes 数据库的连接是静态的,因此我总是在DominoServer1 上连接到数据库"ScheduledJobs.nsf"

问题:

我能否在副本上的 IIOP 连接之后运行代理 "Worker"


已编辑

我的“RunWorkerOn2”代码

Dim agent As NotesAgent
Dim sess As New NotesSession    
Dim db As NotesDatabase
Dim doc As NotesDocument    
Dim item As NotesItem

Set db = sess.CurrentDatabase   
Set agent = sess.CurrentAgent

Call db.Open( "DominoServer2/ORGANIZATION", "ScheduledJobs.nsf" )
Set agent = db.GetAgent("Worker")

// Reason why im using 'run' insted of RunOnServer:
// https://www-01.ibm.com/support/docview.wss?uid=swg1LO42549
If agent.Run() = 0 Then
    Print "SUCCESS"
Else
    Print "FAILED"
End If

【问题讨论】:

你需要连接到其他服务器。 @umeli 是否可以连接到另一台服务器并打开相同的数据库以在“远程”DominoServer 上运行代理?不幸的是,我没有做到。 【参考方案1】:

你可以间接地做到这一点。

在包含“Worker”的 ScheduledJobs 数据库中,添加两个新代理:“RunWorkerOn2”和“RunWorkerOn3”。

在 RunWorkerOn2 代理的代码中,添加代码以在 DominoServer2 上打开 ScheduledJobs.nsf 并使用 NotesDatabase.GetAgent("Worker")。然后调用 NotesAgent.RunOnServer 在 Dominoserver2 上运行 Worker。

同样,在 RunWorkerOn3 代理的代码中,打开 DominoServer3 上的 ScheduledJobs.nsf 并使用 NotesDatabas.GetAgent("Worker")。然后调用 NotesAgent.RunOnserver 在 DominoServer3 上运行 Worker。

这样,您的连接器仍然连接到 DominoServer1,并且它在 DominoServer1 上运行其所有 agaengs,但这些代理又将在 DominoServer2 和 DominoServer3 上运行代理。

【讨论】:

太棒了 - 这可以工作,我会测试它。谢谢你。但是有一个问题:我的连接器正在编写一个包含一些重要信息的注释文档,代理必须阅读这些信息并使用它。假设我的连接器在 DominoServer1 上创建了一个便笺文档,但代理必须在 DominoServer2 上运行 - 我必须等到便笺文档复制到 DominoServer2 后再运行代理“RunWorkerOn2”? 答案是您不必等待。您可以重新编码 Worker 以始终在 DominoServer1 而不是当前服务器上查找文档。为了使其正常工作,您是否必须更改 DominoServer1 上的安全设置。它称为受信任的服务器设置。关于它的信息在这里ibm.com/support/knowledgecenter/en/SSKTMJ_9.0.1/admin/…。您需要在 DominoServer1 服务器文档的该字段中输入 DominoServer2 和 DominoServer3。这告诉 Dominoserver1 让其他服务器验证代理签名。 谢谢,受信任的服务器设置已设置。但是,在 DominoServer1 上查看特定文档的 Worker 的重新编码会是什么样子?在我启动任何代理之前,我能够将 noteID 移交给代理。我是否必须将 RunWorkerOn2 代码末尾的 noteID 移交给 Worker Agent,这使得代码开头始终与 DominoServer1 建立连接? 顺便请注意,如果我在控制台中运行上面的代码(请参阅我的问题),则会出现以下错误:DIIOP Server: Agent 'RunOnServer2' error: This database object is already打开为 D:\..(db 的路径)..\ScheduledJobs.nsf

以上是关于在 IIOP 连接后,Lotus Notes 连接器从副本运行代理的主要内容,如果未能解决你的问题,请参考以下文章

Java 到 Lotus Notes 的连接问题

lotus notes8.5软件出现问题!!!

打开Lotus Notes 时出现“打开窗口出错”

Lotus Notes Xpage - view.postScript("window.open()") 在替换包含的页面名称后不会打开新窗口(仅在特定文档中)

C#操作Lotus Notes邮件

在 Lotus Notes 中使用 XML URL 作为视图