Websockets中的NullPointerException

时间:2014-04-08 14:15:41

标签: java java-ee nullpointerexception websocket

我正在Tomcat 7服务器上实现Websockets。当客户端发送一些参数时,服务器通过Updater类执行某些任务。但是,我希望在连接关闭时停止所有服务器任务。这是我的服务器代码:

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 
        }
    }

然而,当我调用服务器并强制断开连接时,我在end()方法中得到一个NullPointerException,好像“up”变量为null。但我确信它不是null,因为我可以验证update()方法已部分完成。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

部分完成?您无法保证。在执行incoming()方法之前,用户可能会断开连接。放置空检查总是更安全。

    @OnClose
    public void end() {
        if(up != null){
            up.setActive(false);
        }
    }