EJB3.1非同期処理の再考

前に下記のURLのエントリでサンプルを書きましたが
納得行かなかった部分がいっぱいあったので更新。
http://d.hatena.ne.jp/bose999/20120422/1335076137


Selvet3.0から非同期でEJB3.1のStatlessSessionBeanを呼び出して
そのStatlessSessionBeanが別のStatlessSessionBeanを
非同期で呼び出して非同期処理をハンドリングするように変更。
下記のソースを更新。
https://github.com/bose999/servlet30-ejb31-jboss711-sample


タイムアウトも以前はUserTransactionでごまかしてた部分がありましたが
今回はBMTからCMTに変えて正しいんじゃないかな?
と思われる実装に変更。この辺はまだ調査と試行錯誤中。


実行するとこんな感じで3つのスレッドで処理が実行されます。

36,310 INFO  [jp.techie.sample.servlet.SampleServlet] (http-localhost-127.0.0.1-8080-1) Line:57 Start Servlet Method
08:53:36,310 INFO  [jp.techie.sample.servlet.SampleServlet] (http-localhost-127.0.0.1-8080-1) Line:69 End Servlet Method:0ms.
08:53:36,311 INFO  [jp.techie.sample.action.ActionBeanImpl] (EJB default - 4) Line:69 Start Asynchronous Method
08:53:36,312 INFO  [jp.techie.sample.service.ServiceBeanImpl] (EJB default - 5) Line:67 Start Asynchronous Service Method
08:53:36,312 INFO  [jp.techie.sample.service.ServiceBeanImpl] (EJB default - 5) Line:82 End Asynchronous Service Method:0ms.
08:53:36,313 INFO  [jp.techie.sample.action.ActionBeanImpl] (EJB default - 4) Line:98 End Asynchronous Method:2ms.