1

ユーザーリクエストが新しいインスタンスにリダイレクトされると、私のGoogleエンジンJavaアプリはすべてのユーザーデータを失います:

このリクエストにより、アプリケーションの新しいプロセスが開始されたため、アプリケーション コードが初めてロードされました。したがって、このリクエストは、アプリケーションの通常のリクエストよりも時間がかかり、より多くの CPU を使用する可能性があります。

非常に不便な動作なので、 1 つの常駐インスタンスをセットアップしようとしたので、「アイドル インスタンス」を 1-1 に設定しましたが、これで問題が解決しません。1 つの常駐インスタンスを取得していて、常に新しい (動的) インスタンスが作成されています。これはいくつかのリクエストを処理します... (この男は同じ問題を抱えています: GAE が Max Idle Instances を 1 に設定して 2 番目のインスタンスを起動した理由)

動的インスタンスをまったく使用したくありません (私のアプリは常に負荷が低く、多くのユーザーはいません)。ユーザーに常駐インスタンスを 1 つだけ提供する必要があります。GAEで設定することは可能ですか?そうでない場合、ページ間でデータを保存する便利で信頼できる方法はありますか (たとえば、データストアに保存しますか?)。ページ間で多くの POST パラメータを渡しています。

4

1 に答える 1

1

Google App Engine はクラウド プラットフォームです。動的インスタンスがなければ、アプリの設計でクラウド プラットフォームのすべてのメリットを享受することはできません。

データ転送の問題を解決するには、次のいずれかの方法を使用できます。

  1. 標準の Java EE セッション オブジェクトを使用します。セッションはデータストアに保存されるため、失われることはありません。ただし、DataStore エンティティのサイズ制限のため、セッション オブジェクトは SERIALIZABLE で 1MB 未満である必要があることを忘れないでください。

  2. 手動で DataStore にデータを保存し、エンティティ ID をページ間で転送します。同じ 1MB エンティティ サイズ制限が適用されます。

  3. BlobStore または Cloud Storage を使用してデータをファイルとして保存し、ページ間でファイル識別子を転送します。1Mb の制限をなくすのに役立ちます。

この方法のいずれでも、リクエスト間でデータを保持できますが、独自の制限があります。明確な回答を得るには、要件の詳細を提供する必要があります。

于 2013-01-29T02:34:46.397 に答える