我开发了一个带有 J2ME(LWUIT)的移动应用程序,因为我必须在服务器端接收到服务器端更新完成后的响应后更新移动RMS中的值。当我在点击服务器之后点击我的手机中的呼叫结束按钮红色按钮并且在收到响应之前移动应用程序关闭并且服务器端值更新但移动 RMS 值尚未更新时让我知道是否有人对此有所了解。
答案 0 :(得分:1)
红色按钮通常会立即杀死应用程序,并不会让您有机会解决这个问题。您可能需要回调服务器才能在那里实际提交数据。
答案 1 :(得分:0)
@arun你可以做的就是。
1)更新服务器上的更改。
2)将您希望推送到RMS的数据与唯一ID一起发送到MIDlet。唯一ID唯一标识每个事务。
3)此时,服务器一直等待来自MIDlet的确认MIDlet是否已收到数据(假设等待20秒)
4)一旦MIDlet收到数据,它就会将其存储在内存中,并立即向服务器发送一个确认信息以及收到的uniqueID(并等待..say.25秒)。 MIDlet还存储服务器使用特定唯一ID发送数据的次数。因此,每次服务器发送具有相同唯一ID的数据时,计数最初为0并递增。
5)如果服务器在20秒内收到确认,则不执行任何操作。经过25秒后,MIDlet将数据写入RMS。你的工作已经完成!
5.1)如果服务器没有收到确认,它将再次发送具有相同唯一ID的数据(在第21秒)。 MIDlet识别唯一ID并递增计数器,该计数器跟踪服务器发送相同数据的次数。它再次发送确认并等待25秒。
现在......这个过程可以继续下去。
您需要做的是......决定何时决定退出此流程。
6)最终,如果服务器没有收到确认,它会回滚更改并向MIDlet发送消息“回滚数据以获取唯一ID”
7)如果midlet没有提交该唯一ID的数据,它将忽略消息以及与该唯一ID相关的更改。如果已提交,则只回滚该唯一ID的数据。如果针对相同的唯一ID重复了回滚请求,请忽略并向服务器发送已回滚更改的消息。
8)注意:您需要向服务器发送一条消息,说明已经回滚了对RMS的更改,否则服务器将继续发送消息以回滚更改。
是的,这很复杂。看看这本书。通信网络或作者Behrouz Forouzan类似的东西。他解释了这个工厂。