我正试图从代理中调用java中的会话。 getSession()
调用在V3中运行良好,但是我得到的是“未为此线程初始化org.openntf.domino.utils.Factory!”错误。工厂类中有一条错误消息,指出“如果您正在代理中运行,请确保从对Factory.setSession()
的调用开始并传递您的Lotus.domino.Session”,但是该方法似乎已被注释现在就可以在工厂班级了。
我试图从getSession()
更改为getAgentSession()
,但是我并不希望它能起作用,因为问题是工厂。
在服务器上的lib / ext目录中,我有以下两个jar文件:
我添加了org.openntf.formula罐子,因为日志中有一个错误,说那里缺少一个类。
我对服务器具有完全的管理权限,管理者对nsf的访问权限,并且代理的运行时安全级别设置为“ 3.允许具有完全管理权限的受限制的操作”
编辑:我添加了一些代码来查看是否可以说服Factory进行初始化,但是即使在交出Lotus.domino会话之后,我仍然遇到相同的错误:
if(!Factory.isStarted()) {
System.out.println("Factory.startup");
Factory.startup(NotesFactory.createSession());
} else {
System.out.println("Factory shutdown and restart");
Factory.shutdown();
Factory.startup(NotesFactory.createSession());
}
更多黑客尝试解决该问题。这段代码...
lotus.domino.Session lnSession = lotus.domino.NotesFactory.createSession();
System.out.println("Session Common User Name: " + lnSession.getCommonUserName());
if(!Factory.isStarted()) {
System.out.println("Factory.startup");
Factory.startup(lnSession);
} else {
System.out.println("Factory shutdown and restart");
Factory.shutdown();
Factory.startup(lnSession);
}
Session session = Factory.getSession();
...给了我以下内容。有趣的是,没有任何问题可以得到Lotus.domino会话,当移交给openNTF工厂时,它仍然有问题。这是一个错误,还是我想念的东西。我检查了服务器文档中的“安全性”标签,并且对服务器和我都具有完全访问权限。
注意:dev2server是我们的Domino 10.01测试服务器,用于在将应用程序从9.0.1 FP8迁移到10.0.1 FP1之前对其进行测试。
06/24/2019 07:45:43 PM AMgr: Agent ('ProcessMail-InRequests PMIR' in 'batch\batchquery.nsf') printing: Session Common User Name: dev2server
06/24/2019 07:45:43 PM AMgr: Agent ('ProcessMail-InRequests PMIR' in 'batch\batchquery.nsf') printing: Factory shutdown and restart
06/24/2019 07:45:43 PM AMgr: Agent ('ProcessMail-InRequests PMIR' in 'batch\batchquery.nsf') printing: [ODA] Shutting down the OpenNTF Domino API...
06/24/2019 07:45:43 PM AMgr: Agent ('ProcessMail-InRequests PMIR' in 'batch\batchquery.nsf') printing: [ODA] OpenNTF Domino API shut down
06/24/2019 07:45:43 PM AMgr: Agent ('ProcessMail-InRequests PMIR' in 'batch\batchquery.nsf') printing: [ODA] Starting the OpenNTF Domino API... Using notes.ini: C:\Lotus\Domino\notes.ini
06/24/2019 07:45:43 PM AMgr: Agent ('ProcessMail-InRequests PMIR' in 'batch\batchquery.nsf') printing: [ODA] OpenNTF API Version 10.0.1.201905061230 started
06/24/2019 07:45:43 PM AMgr: Agent ('ProcessMail-InRequests PMIR' in 'batch\batchquery.nsf') printing: Logging: LogConfig successfully initialized from D:\Lotus\Domino\data/IBM_TECHNICAL_SUPPORT/org.openntf.domino.logging.logconfig.properties
06/24/2019 07:45:43 PM AMgr: Agent ('ProcessMail-InRequests PMIR' in 'batch\batchquery.nsf') error message: java.lang.IllegalStateException: org.openntf.domino.utils.Factory is not initialized for this thread!
06/24/2019 07:45:43 PM AMgr: Agent ('ProcessMail-InRequests PMIR' in 'batch\batchquery.nsf') error message: at org.openntf.domino.utils.Factory.getThreadVariables(Factory.java:346)
06/24/2019 07:45:43 PM AMgr: Agent ('ProcessMail-InRequests PMIR' in 'batch\batchquery.nsf') error message: at org.openntf.domino.utils.Factory.getSession(Factory.java:953)
06/24/2019 07:45:43 PM AMgr: Agent ('ProcessMail-InRequests PMIR' in 'batch\batchquery.nsf') error message: at org.openntf.domino.utils.Factory.getSession(Factory.java:859)
06/24/2019 07:45:43 PM AMgr: Agent ('ProcessMail-InRequests PMIR' in 'batch\batchquery.nsf') error message: at ProcessMailInRequests.NotesMain(ProcessMailInRequests.java:89)
06/24/2019 07:45:43 PM AMgr: Agent ('ProcessMail-InRequests PMIR' in 'batch\batchquery.nsf') error message: at lotus.domino.AgentBase.runNotes(Unknown Source)
06/24/2019 07:45:43 PM AMgr: Agent ('ProcessMail-InRequests PMIR' in 'batch\batchquery.nsf') error message: at lotus.domino.NotesThread.run(Unknown Source)
谢谢, 斯科特
答案 0 :(得分:0)
几年前,我们从Factory.getSession()
转到为会话类型传递枚举,例如Factory.getSession(SessionType.CURRENT)
。这可能在代理中起作用,但是我认为这不太可能,因为我们用于初始化会话的是XPages运行时。我不知道在代理中使用ODA的任何开发人员。
从Lotus.domino.Session创建ODA会话的方法可能是final Session sess = Factory.fromLotus(rawSession, Session.SCHEMA, null)
。代理程序会以Lotus.domino会话进行初始化,您可以将其作为参数传递到fromLotus
方法中。