Google Web ToolkitとJava Google App Engineを使用してアプリケーションを作成しています。私は次のことが非常に予想通りに起こる状況を見つけました。私はこのようになります。そのため、サーブレットのapp.yamlのエントリがあります。GWT devmodeを使用すると、奇妙ではあるが予測可能なトリプルとインターリーブされたサーブレットの呼び出し
handlers:
- url: /foo/*
name: FooServlet
servlet: com.waga.server.FooServlet
login: required
をユーザーが(冗長、私は知っている)でログインしていることをこのサーブレットをチェックし、データベース内のユーザーを検索し、見つかった場合は含まれてGWTモジュールをロードするためのjavascriptを含むHTMLページをレンダリングするBar.jspファイル。このBar.jspファイルとGWTモジュールはしばらく働いていますが、サーブレットがBar.jspをレンダリングする前にチェックを行い、Bar.jspファイルの先頭にいくつかのコードを追加してページに含める文字列をいくつか計算します。
私はBar.jspファイルの先頭に、サーブレットの上部にlog.infoを入れ、Bar.jspファイルの一番下にあります。私は、サーブレットに行くためにGWTのDEVMODEを使用すると、私は次の順序でログmesssagesを参照してください。
あるFoo servlet top
Bar.jsp top
Bar.jsp bottom
Foo servlet top
Foo servlet top
Bar.jsp top
Bar.jsp bottom
Bar.jsp top
Bar.jsp bottom
、サーブレットは(ノート同期していないブラウザで3回訪問しているしているようだ、とその最後の2つは重複します)。これは私がそれを実行するたびに発生します。
さらに、Bar.jspファイルは、それがページをレンダリングしていると言いますが、GWTのJavaScriptを決して負荷とクライアント側のアプリケーションをレンダリングします。それは過去にはうまくいくはずです。つまり、GWTのクライアント側コードが機能していたため、urlがサーブレットにどのようにマップされているか、サーブレットに.jspファイルがどのように含まれているかを並べ替えています。さらに、devmodeがクライアントに送信する前にJavaをサーバー上のJavaScriptにコンパイルすると、ラップトップのファンが来て、これを行うために私のCPUのほとんどを私のCPUの大部分を使って見ることができます。私は今それを見ない。
私はサーブレットを取り除き、app.yamlに.jspを直接呼び出すことを試みました(サーブレットは、私が既にログインしていることを知っているので、何もしません)。私はapp.yamlをを作ってみました、であるが、これを言う:
handlers:
- url: /foo/*
jsp: Bar.jsp
login: required
今ログはGWTモジュールがロードされているように見えることはありません。この
Bar.jsp top
Bar.jsp botton
Bar.jsp top
Bar.jsp top
Bar.jsp bottom
Bar.jsp bottom
同じインターリーブと同じ症状は述べています。