NullPointerException in Websockets



我正在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();
    }
}

而更新程序类具有以下形式:

  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"变量是空一样。但我确信它不是空的,因为我可以验证 update() 方法是否已部分完成。有什么帮助吗?

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

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

相关内容

  • 没有找到相关文章

最新更新