4.3.3. Seam 2.2 Booking サンプルの JBoss EAP 6 への移行
Seam 2.2 Booking EAR の移行は Seam 2.2 JPA WAR サンプルの移行よりも複雑です。Seam 2.2 JPA WAR サンプルの移行に関するドキュメントについては、「Seam 2.2 JPA サンプルの JBoss EAP 6 への移行」を参照してください。アプリケーションを移行するには、以下を実行する必要があります。
- デフォルトの JSF 2 の代わりに JSF 1.2 を初期化します。
- JBoss EAP 6 に同梱された Hibernate JAR を使用せずに、古いバージョンの Hibernate JAR をバンドルします。
- 新しい Java EE 6 JNDI の移植可能な構文を使用するよう JNDI バインディングを変更します。
重要
手順4.7 Seam 2.2 Booking サンプルの移行
jboss-deployment-structure.xmlファイルを作成するjboss-deployment-structure.xmlという名前の新しいファイルをjboss-seam-booking.ear/META-INF/で作成し、以下の内容を追加します。<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.log4j" export="true"/> <module name="org.dom4j" export="true"/> <module name="org.apache.commons.logging" export="true"/> <module name="org.apache.commons.collections" export="true"/> </dependencies> <exclusions> <module name="org.hibernate" slot="main"/> </exclusions> </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>以下のように
jboss-seam-booking.jar/META-INF/persistence.xmlファイルを変更する- キャッシュプロバイダークラスの hibernate プロパティーを削除またはコメントアウトします。
<!-- <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/> -->
- プロバイダーモジュールプロパティーを
jboss-seam-booking.jar/META-INF/persistence.xmlファイルに追加します。<property name="jboss.as.jpa.providerModule" value="hibernate3-bundled" />
jta-data-sourceプロパティーを変更し、デフォルトの JDBC データソース JNDI 名を使用するようにします。<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
Seam 2.2 ディストリビューションより JAR をコピーする
以下の JAR を Seam 2.2 ディストリビューションのEAP5.x_HOME/jboss-eap5.x/seam/lib/からjboss-seam-booking.ear/libディレクトリーにコピーします。antlr.jar slf4j-api.jar slf4j-log4j12.jar hibernate-core.jar hibernate-entitymanager.jar hibernate-validator.jar hibernate-annotations.jar hibernate-commons-annotations.jar
JNDI ルックアップ名を変更する
jboss-seam-booking.war/WEB-INF/components.xmlファイルの JNDI ルックアップ文字列を変更します。新しい移植可能な JNDI のルールが導入されたため、JBoss EAP 6 は 移植可能な JNDI の構文ルールを使用して EJB をバインドします。JBoss EAP 5 で使用された単一の jndiPattern を使用することはできません。JBoss EAP 6 では、アプリケーションの EJB JNDI ルックアップ文字列を次のように変更する必要があります。java:global/jboss-seam-booking/jboss-seam-booking/HotelSearchingAction!org.jboss.seam.example.booking.HotelSearching java:app/jboss-seam-booking/HotelSearchingAction!org.jboss.seam.example.booking.HotelSearching java:module/HotelSearchingAction!org.jboss.seam.example.booking.HotelSearching java:global/jboss-seam-booking/jboss-seam-booking/HotelSearchingAction java:app/jboss-seam-booking/HotelSearchingAction java:module/HotelSearchingAction
Seam 2.2 フレームワーク EJB に対する JNDI ルックアップ文字列は、以下のように変更する必要があります。java:global/jboss-seam-booking/jboss-seam/EjbSynchronizations!org.jboss.seam.transaction.LocalEjbSynchronizations java:app/jboss-seam/EjbSynchronizations!org.jboss.seam.transaction.LocalEjbSynchronizations java:module/EjbSynchronizations!org.jboss.seam.transaction.LocalEjbSynchronizations java:global/jboss-seam-booking/jboss-seam/EjbSynchronizations java:app/jboss-seam/EjbSynchronizations java:module/EjbSynchronizations
以下のどちらかの方法を使用できます。コンポーネント要素を追加する
各 EJB に対するjndi-nameをWEB-INF/components.xmlに追加できます。<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"/> <component class="org.jboss.seam.example.booking.AuthenticatorAction" jndi-name="java:app/jboss-seam-booking/AuthenticatorAction" /> <component class="org.jboss.seam.example.booking.BookingListAction" jndi-name="java:app/jboss-seam-booking/BookingListAction" /> <component class="org.jboss.seam.example.booking.RegisterAction" jndi-name="java:app/jboss-seam-booking/RegisterAction" /> <component class="org.jboss.seam.example.booking.HotelSearchingAction" jndi-name="java:app/jboss-seam-booking/HotelSearchingAction" /> <component class="org.jboss.seam.example.booking.HotelBookingAction" jndi-name="java:app/jboss-seam-booking/HotelBookingAction" /> <component class="org.jboss.seam.example.booking.ChangePasswordAction" jndi-name="java:app/jboss-seam-booking/ChangePasswordAction" />- JNDI パスを指定する
@JNDIName(value="")アノテーションを追加してコードを変更することができます。変更されたステートレスセッション Bean のコード例は次のとおりです。この処理の詳細については、Seam 2.2 のリファレンスドキュメントを参照してください。@Stateless @Name("authenticator") @JndiName(value="java:app/jboss-seam-booking/AuthenticatorAction") public class AuthenticatorAction implements Authenticator { ... }
Seam 2.2 JAP の Booking アプリケーションが JBoss EAP 6 上にデプロイされ、正常に実行されます。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.