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


テスト

SeamTest は各クラスの起動時ではなく各スィートの起動時に Seam を起動するようになり、速度が向上します。 デフォルトを変更したい場合はリファレンスガイドをご確認ください。

DTD およびスキーマの形式における変更点

Seam XML ファイルの Document Type Declarations (DTD) には対応しなくなります。 検証には代わりに XML Schema Declaration (XSD) を使用してください。 Seam 2.0 XSD を使用するファイルはすべて Seam 2.1 XSD を参照するよう更新が必要です。

例外処理における変更点

キャッチされた例外が #{org.jboss.seam.caughtException} として EL で見ることができます。 #{org.jboss.seam.exception} 形式ではなくなります。

EntityConverter 設定における変更点

entity-loader コンポーネントから使用されるエンティティマネージャを設定できるようになりました。 詳細についてはドキュメントをご覧ください。

管理 Hibernate セッションにおける変更点

Seam Application Framework など Seam のいくつかの部分は Seam 管理永続コンテキスト (JPA) と Hibernate Session 間での共通命名規則の存在に依存しています。 Seam 2.1 以前のバージョンでは管理 Hibernate Session の名前は session になるとみなされていました。session は Seam や Java Servlet API で過剰使用されているため、 デフォルトを hibernateSession に変更することで曖昧性を軽減しました。 つまり、 Hibernate Session のインジェクトまたはリゾルブを行う場合に適切なセッションの識別が非常に容易になります。

以下のいずれかの方法を使用して Hibernate Session のインジェクトを行うことができます。
        @In private Session hibernateSession;
Copy to Clipboard Toggle word wrap
        @In(name = "hibernateSession") private Session session;
Copy to Clipboard Toggle word wrap
Seam 管理の Hibernate Session がまだ session という名前の場合は、 session プロパティで明示的に参照をインジェクトできます。
<framework:hibernate-entity-home session="#{session}".../>
      <transaction:entity-transaction session="#{session}".../>
Copy to Clipboard Toggle word wrap
代わりに、 次のように Seam Application Framework のすべての永続コントローラで getPersistenceContextName() メソッドを無効化することもできます。
        public String getPersistenceContextName() {
        "session";
        }
Copy to Clipboard Toggle word wrap
セキュリティにおける変更点

components.xml にあるセキュリティルールに関する構成がルールベースのセキュリティを使用するプロジェクトに対して変更されました。 以前は、ルールは identity コンポーネントのプロパティとして設定されていました。

<security:identity security-rules="#{securityRules}" 
      authenticate-method="#{authenticator.authenticate}"/>
Copy to Clipboard Toggle word wrap
Seam 2.1 は ruleBasedPermissionResolver コンポーネントをそのルールベースのパーミッションチェックに使用します。このコンポーネントをアクティブにして identity コンポーネントの代わりにこのコンポーネントでセキュリティルールを登録する必要があります。
<security:rule-based-permission-resolver 
      security-rules="#{securityRules}"/>
Copy to Clipboard Toggle word wrap

重要

パーミッション の定義が変更されました。 Seam 2.1 以前では、パーミッションは 3 つのエレメントから構成されていました。
  • 名前
  • 動作
  • コンテキスト依存のオブジェクト (オプション)
名前 は一般的には Seam のコンポーネントの名前、 エンティティクラスまたはビュー ID になります。動作 はメソッド名、 JSF フェーズ (復元またはレンダリング)、 または動作の意図を表す割り当てられた表現になります。オプションで、ひとつまたは複数のコンテキスト依存のオブジェクトをワーキングメモリに直接挿入してデシジョンメイキングに役立てることができます。 一般的にはこれが動作の目的となります。 たとえば、
s:hasPermission('userManager', 'edit', user)
Copy to Clipboard Toggle word wrap
Seam 2.1 ではパーミッションが簡略化されているため、含むエレメントは 2 つです。
  • ターゲット
  • 動作
ターゲット名前 エレメントを置換してパーミッションの中心となります。動作 は安全化を図る動作の目的と連携します。ルールファイル内で、 ほとんどのチェックが ターゲット オブジェクトを中心とするようになりました。 たとえば、
s:hasPermission(user, 'edit')
Copy to Clipboard Toggle word wrap
この変更によりルールがさらに幅広く適用できるようになるため、 Seam は永続パーミッションリゾルバ (ACL) の他、 ルールベースのリゾルバとも動作するようになります。
また、 既存のルールが奇異な動作をする場合があるので留意してください。 次のパーミッションチェック形式が原因です。
s:hasPermission('userManager', 'edit', user)
Copy to Clipboard Toggle word wrap
Seam は次を置き換えて新しいパーミッション形式を適用します。
s:hasPemrission(user, 'edit')
Copy to Clipboard Toggle word wrap
新しい設計に関する全概要は「セキュリティ」の章をお読みください。
Identity.isLoggedIn() における変更点

このメソッドは資格情報が設定されている場合は認証チェックの試行を行わなくなります。代わりに、 ユーザーが現在未認証の場合は true を返します。 以前の動作を利用する場合は Identity.tryLogin() を使用します。

Seam のトークンベースの Remember-Me 機能を使用する場合、 次のセクションを components.xml に追加してアプリケーションが初めてアクセスされたときにユーザーが自動的にログインされるようにします。
<event type="org.jboss.seam.security.notLoggedIn">
      <action execute="#{redirect.captureCurrentView}"/>
      <action execute="#{identity.tryLogin}"/>
      </event>
      <event type="org.jboss.seam.security.loginSuccessful">
      <action execute="#{redirect.returnToCapturedView}"/>
      </event>
Copy to Clipboard Toggle word wrap
iText (PDF) における変更点

documentStore コンポーネントは外部の pdf/itext モジュールから Seam 自体に移動されました。そのため components.xml にある pdf:document-store への参照はすべて document:document-store で置換されるはずです。 同様に、 web.xmlorg.jboss.seam.pdf.DocumentStoreServlet を参照する場合には、その参照を org.jboss.seam.document.DocumentStoreServlet に変更してください。

クラスタリングにおける変更点

Seam の ManagedEntityInterceptor (以前は ManagedEntityIdentityInterceptor) はデフォルトでは無効です。クラスタ対話のフェールオーバーに ManagedEntityInterceptor が必要な場合、 次のようにして components.xml で有効できます。

<core:init>
      <core:interceptors>
      <value>org.jboss.seam.core.SynchronizationInterceptor</value>
      <value>org.jboss.seam.async.AsynchronousInterceptor</value>
      <value>org.jboss.seam.ejb.RemoveInterceptor</value>
      <value>org.jboss.seam.persistence.HibernateSessionProxyInterceptor</value>
      <value>org.jboss.seam.persistence.EntityManagerProxyInterceptor</value>
      <value>org.jboss.seam.core.MethodContextInterceptor</value>
      <value>org.jboss.seam.core.EventInterceptor</value>
      <value>org.jboss.seam.core.ConversationalInterceptor</value>
      <value>org.jboss.seam.bpm.BusinessProcessInterceptor</value>
      <value>org.jboss.seam.core.ConversationInterceptor</value>
      <value>org.jboss.seam.core.BijectionInterceptor</value>
      <value>org.jboss.seam.transaction.RollbackInterceptor</value>
      <value>org.jboss.seam.transaction.TransactionInterceptor</value>
      <value>org.jboss.seam.webservice.WSSecurityInterceptor</value>
      <value>org.jboss.seam.security.SecurityInterceptor</value>
      <value>org.jboss.seam.persistence.ManagedEntityInterceptor</value>
      </core:interceptors>
      </core:init>
Copy to Clipboard Toggle word wrap
非同期の例外処理における変更点

非同期の呼び出しはすべて例外処理でラップされます。 デフォルトでは非同期の呼び出しから伝播する例外はすべてエラーレベルでキャッチされログ記録されます。 詳細は 21章非同期性とメッセージング を参照してください。

イベントの再デプロイにおける変更点

org.jboss.seam.postInitialization イベントは再デプロイメント時に呼び出されなくなりました。 代わりに org.jboss.seam.postReInitialization が呼び出されます。

キャッシュへの対応における変更点

Seam でのキャッシュへの対応は JBoss Cache 3.2、JBoss Cache 2、Ehcache に対応するよう記述し直されました。詳細は 22章キャッシュ を参照してください。

<s:cache /> には変更はありませんが、pojoCache コンポーネントはインジェクトできなくなりました。
CacheProvider はマップのようなインターフェースを提供します。 getDelegate() メソッドを使って基礎となるキャッシュを取得できます。
Maven 依存性における変更点

提供されているプラットフォームは JBoss AS 5.1.0 であるため、javaassist:javaassistdom4j:dom4jprovided とマークされています。

Seam Application Framework における変更点

いくつかのプロパティが値式を予期するようになりました。

  • entityHome.createdMessage
  • entityHome.updatedMessage
  • entityHome.deletedMessage
  • entityQuery.restrictions
これらのオブジェクトを components.xml で設定すると変更は必要ありません。オブジェクトを JavaScript で設定する場合は、値式を次のように作成する必要があります。
        public ValueExpression getCreatedMessage() {
        return createValueExpression("New person #{person.firstName} 
        #{person.lastName} created");
        }
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat