ローカル開発モードでは、次のコードを使用して (すべての try/catch 要素を削除して)、war/ ディレクトリ内の ~7.4MB のファイルからオブジェクトに読み取ることができます。
FileInputStream fis;
fis = new FileInputStream("myObject.dat");
ObjectInputStream ois;
ois = new ObjectInputStream(fis);
myObject = (ArrayList<ArrayList<ArrayList<float[]>>>) ois.readObject(); //-- ! prod mode gets stuck here! but dev mode is fine
ローカル開発モードでは、うまく機能し、数秒でオブジェクトを読み取ります。
AppEngine にデプロイすると、ファイルの読み取り中にタイムアウト エラーが発生します。ファイルを見つけて読み取りを開始しますが、時間内に終了できません。エラースタックの一部を次に示します。
java.lang.ExceptionInInitializerError ...
原因: com.google.apphosting.api.DeadlineExceededException: このリクエスト (...) は 2012/06/21 02:19:57.368 UTC に開始され、2012/06/ にまだ実行されていました21 02:20:56.928 UTC。at java.io.FileInputStream.read(Native Method) ...
「myObject.dat」ファイルを小さくすると、プロダクション モードで動作するため、コード自体は問題ありません。GAE はローカル モードのように大きなファイルを十分に高速に読み取ることができません。GAE サーバーが私の小さなローカル マシンよりも遅いのはなぜですか?