gpt4 book ai didi

java - 从当前数据库 Java-Agent 调用另一个数据库的 java-Agent

转载 作者:行者123 更新时间:2023-11-29 04:53:12 26 4
gpt4 key购买 nike

我有一个 java 代理,我可以从它调用另一个代理,通过它传递包含 NoteId 的参数,并使用该 NoteId,我能够成功地完成该文档的工作。直到这里一切都清楚了.

关于此的主要问题是,是否可以从当前数据库代理在同一服务器上运行另一个数据库的代理?

举个例子更清楚我有两个数据库,“ABC.nsf”和“XYZ.nsf”,JavaAgent“A”在“ABC.nsf”中,JavaAgent“B”在“XYZ.nsf”中。在我的 xpage 中,我有一个运行代理“A”的按钮,甚至代理“A”也可以运行同一数据库中的任何其他 javaAgent。

代码:

 Document mainDoc = db.getDocumentByUNID(tempDoc.getItemValueString("mainDocId"));
String noteID = mainDoc.getNoteID();
String agentName = "NotificationManager";
Agent agent = db.getAgent(agentName);
if (agent != null)
agent.runOnServer(noteID);
else
System.err.println("Something is wrong");

但实际上我想从“ABC.nsf”中的 JavaAgent“A”运行位于“XYZ.nsf”中的 JavaAgent“B”。

经过一些研究,我引用了这段代码。代码

Database db=session.getDatabase(current_server, "path/to/XYZ.nsf"); 
Agent myAgent=db.getAgent("B");
myAgent.run();

是的,我在那里不成功,需要一些想法来实现这一点。任何建议都会非常感激。

最佳答案

示例代码原则上是正确的。只是一些你必须知道的事情:

首先,服务器名称可以是“”,也可以是服务器的真实名称。但是,如果有服务器,则必须检查 Trusted servers:- 服务器文档中的部分(安全选项卡 - 服务器访问部分)。服务器本身必须是该字段的成员(作为名称或在组中),否则您可能无法打开其他数据库。

第二件事:目标数据库的路径是相对于数据目录的,并且必须是给定操作系统的正确格式。

例如C:\IBM\Domino\Data\first\xyz.nsf 将是 first\xyz.nsf/local/notesdata/second/abc.nsf将是 second/abc.nsf

第三:您获得的noteid 来自调用数据库的文档。在“目标”代理中,您必须去从源数据库获取文档,否则它会抛出错误或 - 因为 noteid 只是一个序列号 - 从目标数据库返回一个与以下内容无关的文档您正在搜索的文档。

调用代理 A 的代码如下:

Session session = getSession();
AgentContext agentContext =
session.getAgentContext();
Database dbCurrent = agentContext.getCurrentDatabase();
Database dbTarget = session.getDatabase(dbCurrent.Server, "XYZ.nsf");
Agent myAgent=dbTarget.getAgent("B");
myAgent.runOnServer(noteID);

被调用的代理 B 可能是这样的

Session session = getSession();
AgentContext agentContext =
session.getAgentContext();
Database dbCurrent = agentContext.getCurrentDatabase();
Database dbSource = session.getDatabase(dbCurrent.Server, "ABC.nsf");
Document doc = dbSource.getDocumentByID(agentContext.getCurrentAgent().getParameterDocID())

这应该可以工作(如果服务器上的安全性没问题的话)。正如 Paul 在评论中提到的,安全还意味着代理签名者或 Web 用户(取决于代理 A 中的设置)必须具有对目标数据库和目标服务器(如果不同)的足够访问权限。

如果在正确的安全措施下仍无法正常工作:向我们展示确切的错误/跟踪。

关于java - 从当前数据库 Java-Agent 调用另一个数据库的 java-Agent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34655752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com