Archive for 2月, 2007

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なのでご自由にどうぞ。

次のページ »