我在Jboss应用服务器上运行一个Web应用程序,我正在尝试从服务器实现事件库响应.
为了实现这一点,我在servlets类上使用了.wait()和.notify().基本上有一个Ajax请求,servlet阻塞等待,直到服务器上有一个事件,如果是,则在servlet上触发notify.
问题是当我在Servlet上等待(1000 * 60)时,我得到:
Servlet.service() for servlet ProcessesServlet threw exception: java.lang.IllegalMonitorStateException
甚至可以在HttpServlet类上执行wait()吗?
解决方法
在等待对象之前,您必须拥有所有权.
这通常是使用synchronized语句完成的.
synchronized (obj) { try { obj.wait(someTime); } catch (Throwable e) { e.printStackTrace(); } }