4
再生!その非同期HTTPハンドリング機能を唱えていますが、本当に非同期(非ブロッキングとのスレッド切り替えなし)はあまり明確ではありません。私が読んだ非同期の例では、Play!フレームワーククックブック:Playの非同期のレベルは何ですか?フレームワーク
public static void generateInvoice(Long orderId) { Order order = Order.findById(orderId); // #a InputStream is = await(new OrderAsPdfJob(order).now()); // #b renderBinary(is); }
彼らは#Bでの長い/高価な「ビジネスロジック」ステップに焦点を当てているが、DBは#Aで呼び出すで私の懸念があります。
public static void generateInvoice(Long orderId) { Order order = Order.findById(orderId); // #a render(order); }
私は「スレッドの数が少ない」を使用しての主張について特に心配:実際には、多くのアプリケーション内のコントローラメソッドの大半は同じように、DBに複数のCRUDをしようとしますこのDBアクセスパターンを提供するとき
だから、質問は
- 再生されますです! JDBCコールをブロックしますか?
- future/promise/awaitでこのような呼び出しをラップすると、(DB呼び出しの普及に起因する不便さの他に)スレッドの切り替えが正しく行われますか?
- これに照らして、このDBアクセスパターンを処理する際に、NIOコネクタを持つサーブレットサーバ(たとえば、Tomcat + NIOコネクタ、ただし新しいイベントハンドラを使用しない)と比較してどのように非同期性がありますか?
- http://code.google.com/p/adbcj/のような非同期DBドライバをサポートする計画はありますか?
タイポのタイトル。 'レベル'でなければなりません。 – babytune