Не удается получить сеанс openNTF в Java, вызываемый агентом - Версия 10.0.1 - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь получить сеанс в Java, вызываемый агентом. Вызов getSession() в V3 работал нормально, но я получаю, что "org.openntf.domino.utils.Factory не инициализирован для этой темы!" ошибка. В Factory Class есть сообщение об ошибке, которое гласит: «Если вы работаете в агенте, убедитесь, что вы начали с вызова 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 голосов
/ 25 июня 2019

Несколько лет назад мы перешли от Factory.getSession() к передаче enum для типа сеанса, например Factory.getSession(SessionType.CURRENT).Это может работать в агенте, но я думаю, что это маловероятно, потому что это среда выполнения XPages, которую мы используем для инициализации сеансов.Я не знаю ни одного из разработчиков, которые используют ODA в агентах.

Подход к созданию сеанса ODA из lotus.domino.Session может быть final Session sess = Factory.fromLotus(rawSession, Session.SCHEMA, null).Агенты инициализируются сессией lotus.domino, которую вы сможете передать в метод fromLotus в качестве параметра.

...