2.2.2. コンポーネントにおける変更点
SeamTest は各クラスの起動時ではなく各スィートの起動時に Seam を起動するようになり、速度が向上します。 デフォルトを変更したい場合はリファレンスガイドをご確認ください。
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} 形式ではなくなります。
entity-loader コンポーネントから使用されるエンティティマネージャを設定できるようになりました。 詳細についてはドキュメントをご覧ください。
Seam Application Framework など Seam のいくつかの部分は Seam 管理永続コンテキスト (JPA) と Hibernate Session 間での共通命名規則の存在に依存しています。 Seam 2.1 以前のバージョンでは管理 Hibernate Session の名前は session になるとみなされていました。session は Seam や Java Servlet API で過剰使用されているため、 デフォルトを hibernateSession に変更することで曖昧性を軽減しました。 つまり、 Hibernate Session のインジェクトまたはリゾルブを行う場合に適切なセッションの識別が非常に容易になります。
@In private Session hibernateSession;
@In private Session hibernateSession;
@In(name = "hibernateSession") private Session session;
@In(name = "hibernateSession") private Session session;
session という名前の場合は、 session プロパティで明示的に参照をインジェクトできます。
<framework:hibernate-entity-home session="#{session}".../>
<transaction:entity-transaction session="#{session}".../>
<framework:hibernate-entity-home session="#{session}".../>
<transaction:entity-transaction session="#{session}".../>
getPersistenceContextName() メソッドを無効化することもできます。
public String getPersistenceContextName() {
"session";
}
public String getPersistenceContextName() {
"session";
}
components.xml にあるセキュリティルールに関する構成がルールベースのセキュリティを使用するプロジェクトに対して変更されました。 以前は、ルールは identity コンポーネントのプロパティとして設定されていました。
<security:identity security-rules="#{securityRules}"
authenticate-method="#{authenticator.authenticate}"/>
<security:identity security-rules="#{securityRules}"
authenticate-method="#{authenticator.authenticate}"/>
ruleBasedPermissionResolver コンポーネントをそのルールベースのパーミッションチェックに使用します。このコンポーネントをアクティブにして identity コンポーネントの代わりにこのコンポーネントでセキュリティルールを登録する必要があります。
<security:rule-based-permission-resolver
security-rules="#{securityRules}"/>
<security:rule-based-permission-resolver
security-rules="#{securityRules}"/>
重要
- 名前
- 動作
- コンテキスト依存のオブジェクト (オプション)
s:hasPermission('userManager', 'edit', user)
s:hasPermission('userManager', 'edit', user)
- ターゲット
- 動作
s:hasPermission(user, 'edit')
s:hasPermission(user, 'edit')
s:hasPermission('userManager', 'edit', user)
s:hasPermission('userManager', 'edit', user)
s:hasPemrission(user, 'edit')
s:hasPemrission(user, 'edit')
このメソッドは資格情報が設定されている場合は認証チェックの試行を行わなくなります。代わりに、 ユーザーが現在未認証の場合は true を返します。 以前の動作を利用する場合は Identity.tryLogin() を使用します。
components.xml に追加してアプリケーションが初めてアクセスされたときにユーザーが自動的にログインされるようにします。
documentStore コンポーネントは外部の pdf/itext モジュールから Seam 自体に移動されました。そのため components.xml にある pdf:document-store への参照はすべて document:document-store で置換されるはずです。 同様に、 web.xml が org.jboss.seam.pdf.DocumentStoreServlet を参照する場合には、その参照を org.jboss.seam.document.DocumentStoreServlet に変更してください。
Seam の ManagedEntityInterceptor (以前は ManagedEntityIdentityInterceptor) はデフォルトでは無効です。クラスタ対話のフェールオーバーに ManagedEntityInterceptor が必要な場合、 次のようにして components.xml で有効できます。
非同期の呼び出しはすべて例外処理でラップされます。 デフォルトでは非同期の呼び出しから伝播する例外はすべてエラーレベルでキャッチされログ記録されます。 詳細は 21章非同期性とメッセージング を参照してください。
org.jboss.seam.postInitialization イベントは再デプロイメント時に呼び出されなくなりました。 代わりに org.jboss.seam.postReInitialization が呼び出されます。
Seam でのキャッシュへの対応は JBoss Cache 3.2、JBoss Cache 2、Ehcache に対応するよう記述し直されました。詳細は 22章キャッシュ を参照してください。
<s:cache /> には変更はありませんが、pojoCache コンポーネントはインジェクトできなくなりました。
CacheProvider はマップのようなインターフェースを提供します。 getDelegate() メソッドを使って基礎となるキャッシュを取得できます。
提供されているプラットフォームは JBoss AS 5.1.0 であるため、javaassist:javaassist と dom4j:dom4j は provided とマークされています。
いくつかのプロパティが値式を予期するようになりました。
entityHome.createdMessageentityHome.updatedMessageentityHome.deletedMessageentityQuery.restrictions
components.xml で設定すると変更は必要ありません。オブジェクトを JavaScript で設定する場合は、値式を次のように作成する必要があります。
public ValueExpression getCreatedMessage() {
return createValueExpression("New person #{person.firstName}
#{person.lastName} created");
}
public ValueExpression getCreatedMessage() {
return createValueExpression("New person #{person.firstName}
#{person.lastName} created");
}