我想在java中编写服务器代码,它将接受来自许多设备的信息并将信息存储在数据库中。设备将继续发送数据包。第一个数据包将包含唯一的deviceId,之后只包含与设备相关的数据。我想与deviceId一起保存数据。 到目前为止,我可以开发一个可以为许多客户端服务的多线程服务器。但是当我获取数据时,我要么丢失deviceId,要么得到错误的deviceId。 有人可以帮忙吗?
提前致谢。
答案 0 :(得分:0)
Java不是我最好的编码领域,但我希望这些想法会有所帮助。
可以使用hibernate或其他一些OR-Mappe完成数据库访问,因此您可以像对象一样操作数据库。 对于数据包中的信息,您可以在成功连接到服务器时发送信息,如:
public void connect(string servername)
{
ConnectionMethod();
if(connected)
{
SendObject(/*Enter information here*/);
}
}
然后在接收线程中,您可以检查传入消息的某个类并相应地处理它,就像将其存储在数据库中或类似的东西。 对于错误的设备ID,您必须在获取数据包时检查您是否在正确的线程中
答案 1 :(得分:0)
如果要开发无状态协议,则必须向每个设备发送ID,例如HTTP会话,并且设备必须与服务器给出的SessionID连接。
答案 2 :(得分:0)
如果使用单线程每连接模式,则可以将deviceId保存为线程对象的字段,并将其传递给它调用的每个方法,或者可以将deviceid存储在ThreadLocal中: / p>
private static ThreadLocal<String> deviceId = new ThreadLocal<String>();
public static String getDeviceId() {
return deviceId.get();
}
public static void setDeviceId(String newValue) {
deviceId.set(newValue);
}