getOpenSessions()给出空[]值

时间:2017-04-28 17:54:24

标签: java session websocket

我正在尝试在Set allSession中保存会话,但getOpenSessions()方法创建一个空数组。我的代码看起来像 -

@OnOpen
public void onOpen(Session session){
    System.out.println(session.getId() + " has opened a connection");
    System.out.println(" Session: "+session.getOpenSessions());
    try {
        session.getBasicRemote().sendText("Connection Established");
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

所以,它给了我一个结果 -

1已打开连接

会话[]

有人能说出这里的确切问题吗?

3 个答案:

答案 0 :(得分:1)

对不起延迟回答。该bug是tomcat 8.0版。 Tomcat 7更稳定。我在3,4个月内使用这个,但会话相关问题即将到来。希望这些信息对您有所帮助。

答案 1 :(得分:0)

我遇到了同样的问题...但是当我在@onMessage批注方法中使用该方法时..它工作正常...集合正在显示元素...

答案 2 :(得分:0)

这有效!

    public int GetShopperID(System.String strEmail, System.String strPwd) {
        int result = 0;
        string strSqlCmd = "SELECT ShopperID FROM Shopper WHERE Email = @Email AND Passwd = @Passwd";
        using (var cmd = new System.Data.SqlClient.SqlCommand(strSqlCmd, new System.Data.SqlClient.SqlConnection(_databaseConnection))) {
            cmd.Parameters.Add("@Email", System.Data.SqlDbType.VarChar, 50);
            cmd.Parameters.Add("@Passwd", System.Data.SqlDbType.VarChar, 50);
            cmd.Parameter["@Email"].Value = strEmail;
            cmd.Parameter["@Passwd"].Value = strPwd;
            cmd.Connection.Open();
            using (var reader = cmd.ExecuteReader()) {
                if (reader.Read()) {
                    result = Convert.ToInt32(reader["ShopperID"]);
                }
            }
        }
        return result;
    }