我在domino上开发了一个osgi包,它应该在用户上下文中执行代码。lotusscript中也有很多代码需要重写(web代理)。因此,我正在寻找一种解决方案,以用户身份运行这些web代理并获取输出(打印)。我已经尝试了很多,但现在我被卡住了,我要么以代理签名者的身份运行代理(session.effectiveusername的结果)并且能够获取输出,要么以用户的身份运行代理,但是不能获取输出。但是由于lotusscript代码必须尊重reader字段这一点很重要,所以它必须以用户身份运行。因为我需要代理的输出来用java完成其余的工作,所以我还需要一种获取stdout的方法。
到目前为止,我尝试了:
openntf dominoapi:我可以以用户身份运行代理,但是我不能获取输出(或者我不知道如何获取)
String user = "Effective User/Acme";
TrustedSessionFactory factory = new TrustedSessionFactory(null);
Sessions s = factory.createSession(user);
Database db = .getDatabase(null, "path/db.nsf");
Agent ag = db.getAgent("LotusScript-Web-Agent")
ag.run();
/* How can I grap the prints?? */
darwino napi:我不能以用户身份运行代理,但我可以获取输出(或者我不知道如何)
String user = "CN=Effective User Name/O=Acme";
String prints = null;
NSFSession nsfSession = null;
NSFDatabase nsfDb = null;
NSFAgent nsfAg = null;
RunContext runContext = null;
try {
DominoAPI napi = DominoAPI.get();
nsfSession = new NSFSession(napi, user, true, false);
nsfDb = nsfSession.getDatabase(null, "path/db.nsf");
nsfAg = nsfDb.getDesign().getAgent("LotusScript-Web-Agent");
runContext = nsfAg.createRunContext(true);
runContext.redirectOutput(AGENT_REDIR.MEMORY);
runContext.documentContext(nsfNote);
runContext.run(false);
/* How can I run the agent as "Effective User/Acme" and not as agent signer ?? */
prints = runContext.getStdoutBuffer();
} finally {
if (runContext != null)
runContext.free();
if (nsfAg != null)
nsfAg.free();
if (nsfDb != null)
nsfDb.free();
if (nsfSession != null)
nsfSession.free();
}
dominojna:我不能以用户身份运行代理,但我可以获取输出(或者我不知道如何)
String prints = NotesGC.runWithAutoGC(() -> {
String user = "Effective User/Acme";
NotesDatabase ndb = new NotesDatabase(null, "path/db.nsf", user);
NotesAgent ag = ndb.getAgent("LotusScript-Web-Agent");
Writer printWriter = new StringWriter();
NotesAgentRunContext narc = new NotesAgentRunContext();
narc.setUsername(user);
narc.setCheckSecurity(true);
narc.setOutputWriter(printWriter);
ag.run(narc);
/* How can I run the agent as "Effective User/Acme" and not as agent signer ?? */
return printWriter.toString();
});
有没有人知道解决办法或者能给我一个提示来解决这个问题?
暂无答案!
目前还没有任何答案,快来回答吧!