第2章 移行


Seam の旧バージョンがすでにインストールされている場合は本章の説明にしたがって最新バージョン (2.0.0) に移行する必要があります。 最新バージョンは JBoss Enterprise Application Platform に同梱されています。
Seam 2.0 をすでに使用している場合は、直接 「Seam 2.0 から Seam 2.1 または 2.2 への移行」 まで進んでください。現在 Seam 1.2.x を使用している場合は、「Seam 1.2.x から Seam 2.0 への移行」 および 「Seam 2.0 から Seam 2.1 または 2.2 への移行」 の両方の説明に従ってください。

2.1. Seam 1.2.x から Seam 2.0 への移行

本項では Seam 1.2.x から Seam 2.0 に移行する方法について見ていきます。 また、 バージョン間での Seam コンポーネントへの変更点も記載しています。

2.1.1. JavaServer Faces 1.2 への移行

Seam 2.0 は正しく動作するには JSF 1.2 が必要です。 JBoss 4.2 などほとんどの Java EE 5 アプリケーションサーバーに同梱される Sun の JSF Reference Implementation (RI) を推奨します。 JSF RI に切り替えるには web.xml に次の変更を行う必要があります。
  • MyFaces の StartupServletContextListener を削除します。
  • AJAX4JSF フィルタ、 マッピング、 org.ajax4jsf.VIEW_HANDLERS コンテキストパラメータを削除します。
  • org.jboss.seam.web.SeamFilter の名前を org.jboss.seam.servlet.SeamFilter に変更します。
  • org.jboss.seam.servlet.ResourceServlet の名前を org.jboss.seam.servlet.SeamResourceServlet に変更します。
  • web-app のバージョンを 2.4 から 2.5 に変更します。名前空間 URL で j2eejavaee に変更します。 たとえば、
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="
      http://java.sun.com/xml/ns/javaee
      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
      ...
    </web-app>
    
    Copy to Clipboard Toggle word wrap
Seam 1.2 では、 SeamExceptionFilterSeamRedirectFilterweb.xml に明示的に宣言せずに SeamFilterweb.xml に宣言することができます。
クライアント側の状態保存には JSF RI を必要としないため削除が可能です。クライアント側の状態保存は javax.faces.STATE_SAVING_METHOD コンテキストパラメータで定義します。
また、 faces-config.xml に以下の変更が必要になります。
  • TransactionalSeamPhaseListener または SeamPhaseListener の宣言を使用している場合は削除します。
  • SeamELResolver 宣言を使用している場合は削除します。
  • SeamFaceletViewHandler 宣言を標準の com.sun.facelets.FaceletViewHandler に変更してからそれが有効になっていることを確認します。
  • ドキュメント上の DTD を削除して XML Schema 宣言をその <faces-config> ルートタグに追加します。
    <faces-config version="1.2"
       xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
       http://java.sun.com/xml/ns/javaee
       http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
       ...
    </faces-config>
    Copy to Clipboard Toggle word wrap

2.1.2. コードの移行

Seam の組み込みコンポーネントは再編成されより簡単に理解できるようになり、 特定の技術依存と固有パッケージが分離されました。
  • 永続関連のコンポーネントは org.jboss.seam.persistence に移動しました。
  • jBPM 関連のコンポーネントは org.jboss.seam.bpm に移動しました。
  • JSF 関連のコンポーネント、 特に org.jboss.seam.faces.FacesMessagesorg.jboss.seam.faces に移動しました。
  • サーブレット関連のコンポーネントは org.jboss.seam.web に移動しました。
  • 非同期に関連するコンポーネントは org.jboss.seam.async に移動しました。
  • 国際化関連のコンポーネントは org.jboss.seam.international に移動しました。
  • ページフローのコンポーネントは org.jboss.seam.pageflow に移動しました。
  • ページコンポーネントは org.jboss.seam.navigation に移動しました。
こうした API に依存するコードはすべて新しい Java パッケージ名を反映するよう変更する必要があります。
アノテーションについても再編成が行われました。
  • BPM 関連のアノテーションは org.jboss.seam.annotations.bpm パッケージに含まれています。
  • JSF 関連のアノテーションは org.jboss.seam.annotations.faces パッケージに含まれています。
  • インターセプタのアノテーションは org.jboss.seam.annotations.intercept パッケージに含まれています。
  • 非同期に関連するアノテーションは org.jboss.seam.annotations.async パッケージに含まれています。
  • @RequestParameterorg.jboss.seam.annotations.web パッケージに含まれています。
  • @WebRemoteorg.jboss.seam.annotations.remoting パッケージに含まれています。
  • @Restrictorg.jboss.seam.annotations.security パッケージに含まれています。
  • 例外処理のアノテーションは org.jboss.seam.annotations.exception パッケージに含まれています。
  • @Intercept(NEVER) ではなく @BypassInterceptors を使用します。

2.1.3. components.xml の移行

前項で概要を説明した新しいパッケージングシステムにより、components.xml を新しいスキーマと名前空間で更新する必要があります。
名前空間は当初は org.jboss.seam.foobar の形式をとっていました。 新しい名前空間の形式は http://jboss.com/products/seam/foobar になり、 スキーマの形式は http://jboss.com/products/seam/foobar-2.0.xsd です。 components.xml ファイルで名前空間とスキーマの形式を更新する必要があります。 これにより URL は移行先となる Seam のバージョン (2.0 または 2.1) に対応するようになります。
次の宣言はその位置を修正するか完全に削除する必要があります。
  • <core:managed-persistence-context><persistence:managed-persistence-context> で置換します。
  • <core:entity-manager-factory><persistence:entity-manager-factory> で置換します。
  • <core:manager/> エレメントから conversation-is-long-running パラメータを削除します。
  • <core:ejb/> を削除します。
  • <core:microcontainer/> を削除します。
  • <core:transaction-listener/><transaction:ejb-transaction/> で置換します。
  • <core:resource-bundle/><core:resource-loader/> で置換します。

例2.1 components.xml の注記

Seam トランザクション管理はデフォルトで有効です。 faces-config.xml の JSF フェーズリスナー宣言ではなく、components.xml で制御されています。 Seam 管理トランザクションを無効にする場合は次を使用します。
<core:init transaction-management-enabled="false"/>
Copy to Clipboard Toggle word wrap
event action にある expression 属性は廃止され execute になります。 たとえば、
<event type="org.jboss.seam.security.notLoggedIn">
   <action execute="#{redirect.captureCurrentView}"/>
</event>
<event type="org.jboss.seam.loginSuccessful">
   <action execute="#{redirect.returnToCapturedView}"/>
</event>
Copy to Clipboard Toggle word wrap
Seam 2.2 では、セキュリティイベントは org.jboss.seam ではなく org.jboss.seam.security> プレフィックスを使用します (例えば org.jboss.seam.security.notLoggedIn)。

注記

org.jboss.seam.postAuthenticate イベントの代わりに、 org.jboss.seam.security.loginSuccessful イベントを使ってキャプチャしたビューに戻ります。

2.1.4. Embedded JBoss への移行

Embedded JBoss は JBoss Embeddable EJB3 または JBoss Microcontainer の使用に対応しなくなりました。代わりに、 新しい Embedded JBoss ディストリビューションにより簡略化されたデプロイメントを持つ Java EE 互換の API セットが提供されます。
テスト行う場合には次をクラスパスに含ませる必要があります。
  • Seam の lib/ ディレクトリにある jar
  • bootstrap/ ディレクトリ
embeddded-ejb ディレクトリや jboss-beans.xml など JBoss Embeddable EJB3 関連の参照やアーティファクトはすべて削除します。 (Seam のサンプルを参照として使用できます。)
Tomcat デプロイメントに関する特殊な設定やパッケージング要件はすべてなくなりました。Tomcat でデプロイする場合はユーザーガイドの説明にしたがってください。

注記

Embedded JBoss はデータソースを -ds.xml ファイルからブートストラップできるため、 jboss-beans.xml ファイルは必要なくなりました。

2.1.5. jBPM 3.2 への移行

ビジネスプロセスに対する jBPM およびページフローを使用している場合は tx サービスを jbpm.cfg.xml に追加する必要があります。
<service name="tx" factory="org.jbpm.tx.TxServiceFactory" />
Copy to Clipboard Toggle word wrap

2.1.6. RichFaces 3.1 への移行

RichFaces および AJAX4JSF にはコードベースの大幅な再編成が行われました。 ajax4jsf.jarrichfaces.jarjarrichfaces-api.jar (EAR の lib/ ディレクトリに配置される)、 richfaces-impl.jar および richfaces-ui.jar (WEB-INF/lib に配置される) で置き換えられました。
<s:selectDate> は廃止され <rich:calendar> になります。 <s:selectDate> の開発は行われなくなります。 ご使用のスタイルシートからデータピッカー関連のスタイルを削除してバンド幅の使用を減らします。
名前空間およびパラメータ名に対する変更については RichFaces のドキュメントを確認してください。

2.1.7. コンポーネントにおける変更点

パッケージングの変更点

application.xml でモジュールとしてこれまで宣言されていた依存性は、jboss-seam.jar除き すべて EAR の lib/ ディレクトリに配置されるようになるはずです。 jboss-seam.jar は EJB モジュールとして application.xml に宣言されるはずです。

Seam のユーザーインターフェースにおける変更点

<s:decorate> は命名コンテナになりました。 したがってクライアント ID は fooForm:fooInput から fooForm:foo:fooInput に変更になり、 次の宣言を前提としています。

<h:form id="fooForm">
  <s:decorate id="foo">
     <h:inputText id="fooInput" value="#{bean.property}"/>
   </s:decorate>
</h:form>
Copy to Clipboard Toggle word wrap
ID を <s:decorate> に与えないと JSF は ID を自動的に生成します。
seam-gen における変更点

Seam 2.0.0.CR2 からは、 generate-entities が実行されるときに seam-gen で生成されたクラスの編成に変更が発生しました。

元々はクラス郡は次のように生成されました。
        src/model/com/domain/projectname/model/EntityName.java
        src/action/com/domain/projectname/model/EntityNameHome.java
        src/action/com/domain/projectname/model/EntityNameList.java
Copy to Clipboard Toggle word wrap
現在では次のように生成されます。
        src/model/com/domain/projectname/model/EntityName.java
        src/action/com/domain/projectname/action/EntityNameHome.java
        src/action/com/domain/projectname/action/EntityNameList.java
Copy to Clipboard Toggle word wrap
Home および Query のオブジェクトは モデル コンポーネントではなく アクション コンポーネントになるため、 action パッケージに配置されます。 これにより generate-entities 対話が new-entity コマンドのそれと整合性を持ちます。
モデルのクラスはホット再ロードができないため別々に記載されます。
テストシステムの JBoss Embeddable EJB3 から Embedded JBoss への変更に伴い、 Seam 2.x の seam-gen でプロジェクトを生成し、その build.xml ファイルを新しいプロジェクトのベースとして使用することをお勧めします。 build.xml に大幅な変更を行っている場合は、テスト関連の対象のみの移行に焦点を絞ることが可能です。
Embedded JBoss で動作するかのテストでは、resources/META-INF/persistence-test.xml (または persistence-test-war.xml) の <datasource> エレメントの値を java:/DefaultDS に変更する必要があります。 代わりに -ds.xml ファイルを bootstrap/deploy フォルダにデプロイして、そのファイルで定義される JNDI 名を使用する方法もあります。
説明のとおり Seam 2.x build.xml を使用する場合は deployed-*.list ファイルも必要になります。 これらのファイルは EAR または WAR アーカイブにパッケージ化される jar ファイル群を指定します。 build.xml ファイルから jar セットを取り除くために導入されました。
次の CSS をスタイルシートに追加してスタイルシートが RichFaces パネルでの変更に対応できるようにします。 このコードの追加に失敗すると generate-entities で作成されるすべてのページで 検索基準 ブロックが 結果表 に流出することになります。
.rich-stglpanel-body {
        overflow: auto;
        }
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat