J2ME(LWUIT)を使用してモバイル アプリケーションを開発しました。サーバー側で更新が完了したという応答をサーバーから受信した後、モバイル RMS の値を更新する必要があります。サーバーにヒットした後、応答を受信する前にモバイルアプリケーションが閉じられ、サーバー側の値が更新されますが、モバイルRMS値はまだ更新されていません.
2 に答える
赤いボタンは通常、アプリケーションを即座に強制終了し、それを修正する機会を実際に残しません。実際にデータをそこにコミットするために、サーバーへのコールバックが必要になる可能性があります。
@arunまあ、あなたができることはです。
1) サーバーで変更を更新します。
2) RMS にプッシュするデータを、uniqueID とともに MIDlet に送信します。一意の ID は、すべてのトランザクションを一意に識別します。
3) この時点で、サーバーは、MIDlet がデータを受信したかどうかにかかわらず、MIDlet からの確認を待ち続けます (20 秒間待機するとします)。
4) MIDlet がデータを受信すると、それをメモリに保存し、受信した uniqueID とともに確認をサーバーにすぐに送信します (そして、..25 秒間待機します)。MIDlet には、サーバーが特定の一意の ID を持つデータを送信した回数も格納されます。したがって、カウントは最初は 0 で、サーバーが同じ一意の ID を持つデータを送信するたびに増分されます。
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 による同様のもの。彼はこのファブについて説明します。