Я пытаюсь создать службу REST, используя сервлет, который находится внутри NSF. Сервлет работает, но я заметил, что он обрабатывает запросы по одному, поэтому, если запрос ожидает завершения запроса к базе данных, все остальные запросы должны ждать. Я знаю, что запросы на сервлеты на Tomcat или Glassfish получают свой собственный поток, но, похоже, этого не происходит на сервере Domino. Чтобы попытаться обойти это, я попытался создать новые потоки внутри сервлета, но продолжал получать ошибки NotesContext, не инициализированные. Я поискал и нашел проект под названием Threads и Jobs, и предназначен для использования кода там для создания Servlet, который порождает новые потоки и дает клиенту requestId и требует от них опроса для получения результатов задания или прослушивания порта, который сервер будет транслировать на когда закончите. Когда я попытался импортировать проект и запустить его как есть, страницы Thread.xsp и Job.xsp отображались, но не работали. Я получаю следующий вывод в консоли:
Тема запущена
>> Работает поток
java.lang.NullPointerException
на com.ibm.domino.xsp.module.nsf.NotesContext.getRunningModule(NotesContext.java:394)
на com.ibm.domino.xsp.module.nsf.NotesContext.checkSignerRightsNonXSP(NotesContext.java:960)
на com.ibm.domino.xsp.module.nsf.ModuleClassLoader$DynamicClassLoader.loadClass(ModuleClassLoader.java:379)
в java.lang.ClassLoader.loadClass(ClassLoader.java:626)
в org.openntf.samples.thread.ThreadSample$MyThread$1.run(ThreadSample.java:86)
в org.openntf.samples.thread.ThreadSample$MyThread$1.run(ThreadSample.java:1)
на com.ibm.domino.xsp.module.nsf.ThreadSessionExecutor$3.run(ThreadSessionExecutor.java:156)
в java.security.AccessController.doPrivileged(AccessController.java:310)
на com.ibm.domino.xsp.module.nsf.ThreadSessionExecutor.run(ThreadSessionExecutor.java:154)
в org.openntf.samples.thread.ThreadSample$MyThread.run(ThreadSample.java:123)
>> Работает поток
java.lang.NoClassDefFoundError: лотос/домино/сеанс
в org.openntf.samples.thread.ThreadSample$MyThread$1.run(ThreadSample.java:86)
в org.openntf.samples.thread.ThreadSample$MyThread$1.run(ThreadSample.java:1)
на com.ibm.domino.xsp.module.nsf.ThreadSessionExecutor$3.run(ThreadSessionExecutor.java:156)
в java.security.AccessController.doPrivileged(AccessController.java:310)
на com.ibm.domino.xsp.module.nsf.ThreadSessionExecutor.run(ThreadSessionExecutor.java:154)
в org.openntf.samples.thread.ThreadSample$MyThread.run(ThreadSample.java:123)
>> Остановка потока
Нить слева