无法从代理调用Java中的openNTF会话-版本10.0.1

时间:2019-06-24 16:58:52

标签: java xpages lotus-domino

我正试图从代理中调用java中的会话。 getSession()调用在V3中运行良好,但是我得到的是“未为此线程初始化org.openntf.domino.utils.Factory!”错误。工厂类中有一条错误消息,指出“如果您正在代理中运行,请确保从对Factory.setSession()的调用开始并传递您的Lotus.domino.Session”,但是该方法似乎已被注释现在就可以在工厂班级了。

我试图从getSession()更改为getAgentSession(),但是我并不希望它能起作用,因为问题是工厂。

在服务器上的lib / ext目录中,我有以下两个jar文件:

  • org.openntf.domino_10.0.1.201905061230.jar
  • org.openntf.formula_10.0.1.201905061230.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)

谢谢, 斯科特

1 个答案:

答案 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方法中。