0
我在Tomcat 7服务器上实现Websockets。当客户端发送一些参数时,服务器通过Updater类执行一些任务。不过,我希望在连接关闭时停止所有服务器任务。这是我的服务器代码:Websockets中的NullPointerException
public class FastServlet {
private Updater up;
private Session session;
public FastServlet() {
}
@OnOpen
public void start(Session session) {
this.session = session;
}
@OnClose
public void end() {
up.setActive(false);
}
@OnMessage
public void incoming(String query) {
\\ some code ...
up = new Updater(parameters, uploadedFile, session);
up.update();
}
}
而Updater类具有这种形式:
public class Updater {
private boolean active;
public Updater(Map<String, String> parameters, java.io.File uploadedFile, Session session) {
\\constructor
this.active = true;
}
public void update() {
while (active) {
\\ do stuff
}
}
然而,当我打电话的服务器,我强制断开连接,我得到一个NullPointerException末()方法,就好像“up”变量为空。但我确定它不是null,因为我可以验证update()方法已部分完成。任何帮助?
你能展示update()方法代码并发布完整的堆栈跟踪吗? – sakura
你必须同步访问“up”字段;像其他人发布的那样,不能保证'@ OnMessage'在调用'@ OnClose'之前完成执行。此外,完成后,会话字段需要变化。 –