第29章 Seam アノテーション


Seam ではアノテーションを使用して宣言的なプログラミングを実現することができます。アノテーションのほとんどは EJB 3.0 仕様で定義されています。 また、 データ検証用のアノテーションは Hibernate Validator パッケージで定義されています。 ただし、 Seam は Seam 独自のアノテーションセットを持っており、 これは本章で説明します。
これらのアノテーションはすべてパッケージ org.jboss.seam.annotations で定義されます。

29.1. コンポーネント定義のためのアノテーション

このアノテーショングループは Seam コンポーネントの定義に使用されます。 これらのアノテーションはコンポーネントクラスで見られます。
@Name
@Name("componentName")
Copy to Clipboard Toggle word wrap
クラスに対して Seam コンポーネント名を定義します。 このアノテーションは Seam の全コンポーネントに必要です。
@Scope
@Scope(ScopeType.CONVERSATION)
Copy to Clipboard Toggle word wrap
コンポーネントのデフォルトコンテキストを定義します。EVENTPAGECONVERSATIONSESSIONBUSINESS_PROCESSAPPLICATIONSTATELESS などの ScopeType を列挙することで可能な値を定義します。
スコープが明示的に指定されていない場合、 デフォルトはコンポーネントタイプにより異なります。 ステートレスセッション Bean の場合、 デフォルトは STATELESS です。 エンティティ Bean およびステートフルセッション Bean なら、 デフォルトは CONVERSATION です。JavaBeans のデフォルトは EVENT です。
@Role
@Role(name="roleName", scope=ScopeType.SESSION)
Copy to Clipboard Toggle word wrap
Seam コンポーネントを複数のコンテキスト変数に結合できるようにします。 @Name@Scope のアノテーションは デフォルトロール を定義します。 各 @Role アノテーションは追加のロールを定義します。
  • name − コンテキスト変数名です。
  • scope − コンテキスト変数のスコープです。 スコープが明示的に指定されない場合、 デフォルトは上記のとおりコンポーネントタイプにより異なります。
@Roles
@Roles({ @Role(name="user", scope=ScopeType.CONVERSATION), @Role(name="currentUser", scope=ScopeType.SESSION) })
Copy to Clipboard Toggle word wrap
複数の追加ロールを指定することができます。
@BypassInterceptors
@BypassInterceptors
Copy to Clipboard Toggle word wrap
特定のコンポーネントまたはコンポーネントメソッドにおける Seam インターセプタをすべて無効にします。
@JndiName
@JndiName("my/jndi/name")
Copy to Clipboard Toggle word wrap
Seam が EJB コンポーネントの検索に使用する JNDI 名を指定します。 JNDI 名が明示的に指定されない場合、 Seam は org.jboss.seam.core.init.jndiPattern で指定される JNDI パターンを使用します。
@Conversational
@Conversational
Copy to Clipboard Toggle word wrap
対話スコープのコンポーネントが対話用であることを指定します。 つまり長期実行の対話が起こっていない限り、 そのコンポーネントのメソッドは呼び出されません。
@PerNestedConversation
@PerNestedConversation
Copy to Clipboard Toggle word wrap
対話スコープのコンポーネントのスコープを、 そのコンポーネントがインスタンス化された親対話だけに制限します。 そのコンポーネントのインスタンスは独自のインスタンス内で動作するネストされた子対話からは見えません。

警告

これは推奨されるアプリケーション機能ではありません。 要求サイクルの特定部分にしかコンポーネントは見えないということになります。
@Startup
@Scope(APPLICATION) @Startup(depends="org.jboss.seam.bpm.jbpm")
Copy to Clipboard Toggle word wrap
アプリケーションスコープのコンポーネントが初期化時に直ちに開始されることを指定します。 JNDI、 データソースなど重要なインフラストラクチャをブートストラップする組み込みコンポーネントに使用されます。
@Scope(SESSION) @Startup
Copy to Clipboard Toggle word wrap
セッションスコープのコンポーネントがセッション作成時に直ちに開始されることを指定します。
  • depends − 指定されたコンポーネントがインストールされている場合は、 そのコンポーネントを先に開始しなければならないことを指定します。
@Install
@Install(false)
Copy to Clipboard Toggle word wrap
コンポーネントがデフォルトでインストールされないよう指定します (このアノテーションを指定しない場合はコンポーネントがインストールされます)。
@Install(dependencies="org.jboss.seam.bpm.jbpm")
Copy to Clipboard Toggle word wrap
依存関係として表示されているコンポーネント群もあわせてインストールされる場合にのみ、このコンポーネントをインストールすることを指定します。
@Install(genericDependencies=ManagedQueueSender.class)
Copy to Clipboard Toggle word wrap
特定のクラスで実装されるコンポーネントがインストールされる場合にのみ、 コンポーネントがインストールされることを指定します。必要な依存関係の名前が不定である場合に便利です。
@Install(classDependencies="org.hibernate.Session")
Copy to Clipboard Toggle word wrap
指定されたクラスがクラスパス内にある場合にのみ、コンポーネントをインストールするよう指定します。
@Install(precedence=BUILT_IN)
Copy to Clipboard Toggle word wrap
コンポーネントの優先度を指定します。 同じ名前のコンポーネントが複数存在する場合、 より高い優先度を持つコンポーネントがインストールされます。 定義される優先度の値は次の通りです (昇順)。
  • BUILT_IN − すべての組み込み Seam コンポーネントの優先度
  • FRAMEWORK − Seam を拡張するフレームワークのコンポーネントを使うための優先度
  • APPLICATION − アプリケーションコンポーネントの優先度 (デフォルトの優先度)
  • DEPLOYMENT − 特定のデプロイメントにおいてアプリケーションコンポーネントを上書きするコンポーネントを使うための優先度
  • MOCK − テスト時に使うモックオブジェクトに対する優先度
@Synchronized
@Synchronized(timeout=1000)
Copy to Clipboard Toggle word wrap
コンポーネントが複数のクライアントによって同時にアクセスされること、 Seam が要求をシリアライズすることを指定します。 要求が特定のタイムアウト期間内にコンポーネントでロックを取得できないと例外が発生します。
@ReadOnly
@ReadOnly
Copy to Clipboard Toggle word wrap
JavaBean コンポーネントまたはコンポーネントメソッドが呼び出しの終わりで状態の複製を必要としないことを指定します。
@AutoCreate
@AutoCreate
Copy to Clipboard Toggle word wrap
コンポーネントが自動的に作成されるよう指定します。クライアントが create=true を指定していなくても作成されます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat