Google app engine 尝试使用GAE数据存储中的密钥访问实体时出现异常

Google app engine 尝试使用GAE数据存储中的密钥访问实体时出现异常,google-app-engine,google-cloud-datastore,channel-api,Google App Engine,Google Cloud Datastore,Channel Api,实际上,我正在使用GAE构建聊天室。问题是,我正在使用数据存储密钥将clientid和令牌存储在ChatErrorServlet中,并在sayservlet中访问它们,但当我尝试使用密钥从sayservlet访问数据存储时,我得到一个异常,即未找到具有密钥的实体 我的聊天室servlet String clientid = request.getParameter("clientid"); ChannelService channelService = ChannelServic

实际上,我正在使用GAE构建聊天室。问题是,我正在使用数据存储密钥将clientid和令牌存储在ChatErrorServlet中,并在sayservlet中访问它们,但当我尝试使用密钥从sayservlet访问数据存储时,我得到一个异常,即未找到具有密钥的实体

我的聊天室servlet

    String clientid = request.getParameter("clientid");
    ChannelService channelService = ChannelServiceFactory.getChannelService();

    String token = channelService.createChannel(clientid);
    channelService.sendMessage(new ChannelMessage(token, "Hello World"));
    System.out.println("token is ="+token);

    JSONObject job=new JSONObject();
    job.put("token",token);

    Key userkey=KeyFactory.createKey("users", "user1");
    System.out.println("user key in chatroom "+ userkey);
    Entity ent=new Entity("user");
    ent.setProperty("clientid", clientid);
    ent.setProperty("token", token);


    DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
    datastore.put(ent);
    System.out.println(ent);  
假设servlet是

            String message = request.getParameter("message");
            String clientid = request.getParameter("clientid");
            System.out.println(message);

            Key userkey=KeyFactory.createKey("users", "user1");
            Entity entity;
            DatastoreService datastore = DatastoreServiceFactory
                    .getDatastoreService();
            entity = datastore.get(userkey);
            String token = (String) entity.getProperty("token");
            System.out.println("token frm db ="+token);

            ChannelService channelService = ChannelServiceFactory.getChannelService();
            channelService.sendMessage(new ChannelMessage(token, "Hello World"));
            System.out.println("message is ="+message);
            System.out.println("cid is ="+clientid);

如果访问时出现任何错误,请帮助我。

在聊天室servlet中,您似乎创建了一个实体,但未使用生成的密钥。因此,当您在say servlet中按该键进行查找时,数据存储将无法找到实体

您的聊天室servlet应该使用
userkey
创建实体:

Key userkey=KeyFactory.createKey("users", "user1"); System.out.println("user key in chatroom "+ userkey); Entity ent=new Entity(userkey); Key userkey=KeyFactory.createKey(“用户”、“用户1”); System.out.println(“聊天室中的用户密钥”+用户密钥); 实体ent=新实体(用户密钥);