WebLogic で CDI 3+1 #javaee

この記事はJavaEE Advent Calendar 2012の二日目の記事です。

一つ前は [twitter:@making]さんの Java EE 6 ハンズオンラボでJavaEE6を始めよう!(JBoss Forge付き) #javaee #glassfishjp です。
一つ後は[twitter:@backpaper0] さんの Arquillianでインテグレーションテスト最初の第一歩 です。

なんとなく立ててみたJavaEE Advent Calendarも人が集まるのかなーとずっと心配でしたが、気が付けばいつの間にか満員御礼。
皆様ご愛顧のほどよろしくお願い致します。

WebLogicCDI その1

今年の3月にこんな記事を書いていました。

懐かしすぎて涙が出てくるほどですが、WebLogicCDIを使ったアプリケーションを動かしてみた時のお話。
その1を未だに公開していなかったのでついに公開。

当時、GlassFishで動作しているアプリケーションに関しては、WebアプリケーションをそのままWebLogicにデプロイすることで移植が可能とされていたけど、本当のところはどうなのかというのを動かしてみた内容でした。

結果としては残念なことにそんなことは無いという事が判っています。*1

とりあえずCDI周りは非常に怪しかった。

なお、資料の間違いとして、
47ページ目のupdateは90%ぐらい嘘。48ページ目はem.remove(entity)が正しいとツッコミが入っております。
[twitter:@shinsan68k]さん、[twitter:@backpaper0] さんありがとうございました。

WebLogicCDI その3

その1から11ヶ月、その2からも9ヶ月、そろそろ流石に動くだろうということで再度挑戦。
[twitter:@yamadamn]殿からRelease1が一般でもダウンロードできるということを教えていただいたのでGO!*2

直っていれば、何事も無くすぐに行けるはず!結果!

java.lang.IllegalArgumentException: [EJB:011140]The argument jsf2.demo.scrum.infra.repository.JpaRepository is not a valid local client view for the EJB ProjectRepository(Application: scrumtoys, EJBComponent: scrumtoys.war).
	at weblogic.ejb.container.internal.SessionBeanReferenceImpl.getBusinessObject(SessionBeanReferenceImpl.java:25)
・
・
・


・・・・甘かった。
前回と違うエラーになっているのは一応何かしら進んだ証拠?
以前一度[twitter:@yamadamn]殿からRelease1でフィックスされたバグの一覧を教えていただいたことがあったのですが、そちらにはそれっぽいのが載ってなかったんですよね。

一応のエラーについての解説

一応、エラーについて解説させてもらいます。
エラーとなっているJpaRepositoryは abstractなクラスです。
https://github.com/ryoasai/jsf-scrumtoys-refactored/blob/master/src/main/java/jsf2/demo/scrum/infra/repository/JpaRepository.java

JavaEE6では自動的にビジネスインターフェースが生成されます。(local client viewと書かれているもの)
以前、GroovyでEJBを作成した時にハマったところですが、今回もこれが悪さをしている模様。
本来別に作られるべきインターフェースと、abstractクラスが間違えて認識されているみたい。
ぐぬぬ
一応@LocalBeanをつけてもみましたが、どちらにしてもエラー。
残念でした。

修正方法はビジネスインターフェースを作成するとか、abstractなクラスを取り除くとか色々思いつくけれどもそこまでやる気はないです。
一度は動かしてるしね。

結論

残念でした。
今年初めに気にはなっていて、すす払いするつもりで再挑戦しましたが残念。
来年頭にはリリース2が発表されるらしいので、そちらでは直ってると良いですね。

Oracle WebLogic Server 11g構築・運用ガイド

Oracle WebLogic Server 11g構築・運用ガイド

Beginning Java EE 6~GlassFish 3で始めるエンタープライズJava (Programmer's SELECTION)

Beginning Java EE 6~GlassFish 3で始めるエンタープライズJava (Programmer's SELECTION)

*1:そもそも、このスライドを書いたのは先の記事が公開される前だった気がする。そして全然動かないのに動くとか書いてあって色々と毒を吐いていた気もする。

*2:前回より1回バージョンアップされている