0

我已经使用J2ME(LWUIT)开发了一个移动应用程序,因为在收到来自服务器的响应并在服务器端完成更新后,我必须更新我的移动 RMS 中的值,在这种情况下,当我点击呼叫结束按钮时 - 红色在点击服务器后和收到响应之前,我的手机中的按钮,移动应用程序被关闭并且服务器端值已更新,但移动RMS值尚未更新,请告诉我是否有人对此有所了解。

4

2 回答 2

1

红色按钮通常会立即终止应用程序,并且不会真正让您有机会修复它。您可能需要回调到服务器以实际在那里提交数据。

于 2012-06-14T12:59:33.953 回答
0

@arun好吧,您可以做的是。

1)更新服务器上的更改。

2) 将您希望推送到 RMS 的数据连同唯一 ID 一起发送到 MIDlet。唯一 ID 唯一标识每笔交易。

3)此时,服务器一直在等待 MIDlet 确认 MIDlet 是否收到数据(假设等待 20 秒)

4)一旦 MIDlet 接收到数据,它将数据存储在内存中,并立即将确认连同收到的 uniqueID 一起发送到服务器(并等待 ..say.25 秒)。MIDlet 还存储服务器发送具有特定唯一 ID 数据的次数的计数。因此,计数最初为 0,并且每次服务器发送具有相同唯一 ID 的数据时递增。

5)如果服务器在 20 秒内收到确认,它什么也不做。25 秒后,MIDlet 会将数据写入 RMS。你的工作完成了!

5.1)如果服务器没有收到确认,它将再次发送具有相同唯一ID的数据(在第21秒)。MIDlet 识别唯一 id 并递增计数器,该计数器跟踪服务器发送相同数据的次数。它再次发送确认并等待 25 秒。

现在……这个过程可以继续下去。

您需要做的是……决定何时决定退出此过程。

6)最终,如果服务器没有收到确认,它会回滚更改并向MIDlet发送消息“roll back data for unique id so so”

7) 如果 midlet 没有提交该唯一 id 的数据,它会忽略消息以及与该唯一 id 关联的更改。如果已经提交,它只会回滚该唯一 ID 的数据。如果对相同的唯一 id 重复回滚请求,则忽略并向服务器发送更改已回滚的消息。

8)注意:您需要向服务器发送一条消息,说明对 RMS 的更改已回滚,否则服务器将继续发送消息以回滚更改。

是的,这很复杂。看看这本书。作者 Behrouz Forouzan 的通信网络或类似的东西。他解释了这个工厂。

于 2012-06-20T10:54:49.637 回答