extjsからJerseyのRESTfulサービスを利用するサンプル

extjsからJAX-RS(Jersey)のRESTfulサービスを利用するサンプルをappengineにディプロイしています。extjsの方はほとんどサンプルそのままです。JsonStoreの生成時に"restful: true"という設定を追加するだけでRESTfulなサービスを利用可能で便利です。

extjsのファイルはstaticファイルなのでインスタンスの起動の影響は受けないですが、初回のアクセスはファイルダウンロードも発生するのでUIの描画自体が遅いですね(ここでもローディング画面をいれるべきですね)。そして、Gridに表示するデータを取得する際にはじめてインスタンスが起動する(はず)なので、このリクエストを送信する時点でローディング画面を表示するようにしています。インスタンスが起動していなくても意外と我慢できる速度じゃないかと思います。

(もし、上記のURLにアクセスしてすぐに画面がGridが表示されたらインスタンスがすでに起動した状態です。インスタンスが起動していない場合には最終的に表示が完了するまでに5秒くらいかかります。)

※サーバ側はデータストアではなくMapにデータを保存しているだけの手抜きなので、インスタンスが増えて別インスタンスにリクエストが行ってしまうと、結果がおかしいです。

補足

ローカルでは問題なかったのですが、Appengineにディプロイしたところ削除が正常に動作していません。原因は↓にあるとおり、Appengineの本番環境ではDELETEリクエストにボディが存在すると、レスポンスのステータスが400 Bad Requestとなるようです。ですので、extjsの方でボディを送信しないよう対応する必要があります。curlからDELETEすると正常に動作しました。