NSF 内にあるサーブレットを使用して REST サービスを作成しようとしています。サーブレットは実行されますが、一度に 1 つずつリクエストを処理することに気付きました。そのため、データベース クエリの完了をリクエストが待機している場合、他のすべてのリクエストは待機する必要があります。Tomcat または Glassfish のサーブレットのリクエストが独自のスレッドを取得することは知っていますが、Domino サーバーでは発生していないようです。これを回避するために、サーブレット内で新しいスレッドを生成しようとしましたが、NotesContext が初期化されていないというエラーが発生し続けました。私は周りを検索し、 Threads and Jobsというプロジェクトを見つけました、そしてそこにあるコードを使用して、新しいスレッドを生成し、クライアントに 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) で
>> スレッド停止
スレッド左