4.3.8. Seam 2.2 Booking アプリケーションの移行時に加えられる変更概要の確認
事前に依存関係を判断し、暗黙的な依存関係を一度に追加した方が効率的ですが、この例では問題がどのようにログに表示されるか説明し、デバッグや解決方法に関する情報を提供します。JBoss Enterprise Application Platform 6 へ移行する時にアプリケーションに加えられる変更の概要は次の通りです。
重要
この例は、最初にアプリケーションを JBoss Enterprise Application Platform 6 上で実行できるようにすることを目的としています。この設定はサポート対象ではなく、Hibernate 4 を使用するよう次の手順でアプリケーションをアップグレードする必要があります。
- EAR の
META-INF/
ディレクトリにjboss-deployment-structure.xml
ファイルを作成しました。ClassNotFoundExceptions
を解決するため、<dependencies>
と<exclusions>
を追加しました。このファイルには次のデータが含まれています。<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0"> <deployment> <dependencies> <module name="javax.faces.api" slot="1.2" export="true"/> <module name="com.sun.jsf-impl" slot="1.2" export="true"/> <module name="org.apache.commons.logging" export="true"/> <module name="org.dom4j" export="true"/> <module name="org.apache.commons.collections" export="true"/> </dependencies> </deployment> <sub-deployment name="jboss-seam-booking.war"> <exclusions> <module name="javax.faces.api" slot="main"/> <module name="com.sun.jsf-impl" slot="main"/> </exclusions> <dependencies> <module name="javax.faces.api" slot="1.2"/> <module name="com.sun.jsf-impl" slot="1.2"/> </dependencies> </sub-deployment> </jboss-deployment-structure>
ClassNotFoundExceptions
を解決するため、次の JAR をEAP5_HOME/jboss-eap-5.1/seam/lib/
ディレクトリからjboss-seam-booking.ear/lib/
ディレクトリへコピーしました。- hibernate-core.jar
- hibernate-validator.jar
- 次のように
jboss-seam-booking.jar/META-INF/persistence.xml
ファイルを変更しました。- JBoss Enterprise Application Platform 6 に同梱されるデータベースの例を使用するよう
jta-data-source
要素を変更しました。<!-- <jta-data-source>java:/bookingDatasource</jta-data-source> --> <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
- hibernate.cache.provider_class プロパティーをコメントアウトしました。
<!-- <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/> -->
- 新しい JNDI バインディングを使用するよう、WAR の
lib/components.xml
ファイルを変更しました。core:init
既存要素を次のように置き換えました。<!-- <core:init jndi-pattern="jboss-seam-booking/#{ejbName}/local" debug="true" distributable="false"/> --> <core:init jndi-pattern="java:app/jboss-seam-booking.jar/#{ejbName}" debug="true" distributable="false"/>
- "EjbSynchronizations" および "TimerServiceDispatcher" JNDI バインディングのコンポーネント要素を追加しました。
<component class="org.jboss.seam.transaction.EjbSynchronizations" jndi-name="java:app/jboss-seam/EjbSynchronizations"/> <component class="org.jboss.seam.async.TimerServiceDispatcher" jndi-name="java:app/jboss-seam/TimerServiceDispatcher"/>