wicket-contrib-javaee
前回のエントリでご紹介したWicketとJavaEEを統合するためのライブラリ、wicket-contrib-javaeeを使ってみました。
このライブラリ、Wicket2.0からはwicket-springのようにWicketStuffから卒業しWicketプロジェクトに昇格するようです。
さて、環境としてはNetBeans 5.5およびEnterprise Pack 5.5にバンドルされてるSun Java System Application Server Platform Edition 9.0UR1を使い、データベースはPostgreSQL 8.2を使いました。
まず、wicket-contrib-javaeeでWicketとJavaEEを統合する際には、EntityManagerFactoryをDIする方法とセッションBeanをDIする方法があります。
EntityManagerFactoryをDIするには@PersistenceUnitを、セッションBeanをDIする際には@EJBを使います。
1.@PersistenceUnit
この場合、NetBeansのプロジェクトとしてはWebアプリケーションプロジェクトを作成します。
手順としては、DBテーブル作成→データベースからエンティティクラス自動生成→Web層の作成なのですが、ポイントがいくつかあります。
- PostgreSQLのJDBCドライバをSun Java System Application Serverのlibディレクトリに入れる。
- wicket-springのwicket-spring.jarが必要。
- PostgreSQLを使う場合、Sun Java System Application Server Platform Edition 9.0UR1に同封されているTopLinkライブラリにはバグがあるので、GlassFishV2系のTopLinkライブラリをコピーして上書きする。
- テーブル作成時に、PostgreSQLの場合主キーをSERIALにする。そうするとシーケンスが一つ作成されるので、そのシーケンス名(users_id_seqとする)を、自動生成されたエンティティクラスの@Idがついてるとこに、@GeneratedValue(strategy=GenerationType.SEQUENCE, generator=”users_id_seq”)を指定する。
- 持続性ユニットの編集(persistence.xml)で、含めるエンティティークラスに自動生成されたクラスを加える。
- Pageクラス内で、HeaderContributor.forCss()を使ってCSSを指定しても反映されることとされないことがある(原因不明)。
2.@EJB
この場合、NetBeansのプロジェクトとしてはエンタープライズアプリケーションプロジェクトを作成します。
ポイントは@PersistenceUnitのときとほぼ同じなのですが、作成するセッションBeanについて
- Localじゃないとだめ?
- Localインタフェースはインナークラスじゃだめ?
という制約があるかもしれません。
あとは、HPのサイプルを見れば出来るでしょう。
一応、前回同様作成したNetBeansプロジェクトをDLできるようにしております。
WicketEJB.zip(4.22MB)
WicketEJB2.zip(4.18MB)
DLして展開し、NetBeansでプロジェクトとして開き、WicketEJBというライブラリを
Wicket-1.2.4.jar
wicket-extensions-1.2.4.jar
wicket-contrib-javaee-1.0.jar
wicket-spring-1.2.4.jar
commons-logging-1.0.4.jar
cglib-nodep-1.2_3.jar
を含めて作ればOKです。
前回同様Public Domainなのでご自由にどうぞ。
Comments(0)