【发布时间】:2013-10-02 22:07:19
【问题描述】:
我正在尝试使用 NSF 中的 Servlet 创建 REST 服务。 Servlet 运行,但我注意到它一次处理一个请求,因此如果一个请求正在等待数据库查询完成,则所有其他请求都必须等待。我知道对 Tomcat 或 Glassfish 上的 Servlet 的请求有自己的线程,但这似乎并没有在 Domino 服务器上发生。 为了尝试解决这个问题,我尝试在 Servlet 中生成新线程,但不断收到 NotesContext not initialized 错误。我四处搜索,发现了一个名为 Threads and Jobs 的项目,并打算使用那里的代码创建一个 Servlet,该 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: lotus/domino/Session
在 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)
>> 线程停止
线程离开
【问题讨论】:
标签: xpages lotus-domino xpages-extlib