WebLogicでCDI その2

その1は現状無いですが。
#wlstudyでお話ししてきた。 の資料が公開されればその1になる予定です。

#wlstudy での発表内容として、現状のWebLogicだとCDIがうまく動いていないというのがありました。
(そのため、発表中ではCDIの@Injectタグをわざわざ@EJBに置き換えた)
その時発表に使用したアプリケーションはWeb-Profileで作成されたアプリケーションでした。
その後、某お方から、WebLogicはJavaEE6のFull-Profileにしか対応していないから動かないのかもしれないというお話を伺ったので、ちょっと実際に作ってみました。

修正内容としては、Web-Profile用、つまりwar一つにEJBやら何やらまで含める簡易包装から、Web-Profile用、つまりearファイルを作成して、warとEJB用のjarを作成するJavaEE5までの形式に変更。*1
とりあえず、GlassFishで動かしてみて、きちんと動くことは確認しました。*2

修正したコードはこちらから。

で、結果:失敗

今回のアプリケーションではScrumManagerの具象クラスは一つしか無いため、@Defaultを付けなくてもインジェクション出来るのが正しいと思うのですが、ScrumManagerImpl_yle32y_Implというのが自動生成されて誤認識されている?何じゃそりゃーという感じです。
JavaEE6ではEJBのインターフェースが省略された場合はインターフェースを自動生成する仕様があった気がしますが、今回はすでにインターフェースが存在するし、そもそもインターフェースは具象クラスじゃない・・・・・・

CDI自体がWebLogicに実装されたのは最近のため、まだまだこれからということでしょうかねー。

*1:表現おかしい気がするのでツッコミ希望

*2:一部コードの依存関係解消が難しかったため、一部ソースコードコメントアウトしてます。