SeamFramework.orgCommunity Documentation
本章では Seam の組み込みコンポーネント、 その設定プロパティについて説明していきます。 組み込みコンポーネントは components.xml ファイルに記載がなくても作成されますが、 デフォルトのプロパティを上書きするまたは特定タイプの 1 つ以上のコンポーネントを指定する必要がある場合は components.xml を使用します。
@Name を使って独自のクラスで組み込みコンポーネントの名前を指定すると、 組み込みコンポーネントを独自の実装に簡単に置き換えることができます。
最初の組み込みコンポーネントセットは、 単純にさまざまなコンテキスト上のオブジェクトのインジェクトをサポートするために存在しています。 たとえば、 次のコンポーネントインスタンスの変数はインジェクトされた Seam セッションのコンテキストオブジェクトを持つことになります。
@In private Context sessionContext;
org.jboss.seam.core.contextsSeam コンテキストのオブジェクトへのアクセスを提供します。 たとえば、 org.jboss.seam.core.contexts.sessionContext['user'] など。
org.jboss.seam.faces.facesContextFacesContext コンテキストオブジェクト (正確には Seam コンテキストではない) の管理コンポーネント
これらコンポーネントはすべて常にインストールされます。
次のコンポーネントセットはJSFを補うために提供されます。
org.jboss.seam.faces.dateConverterjava.util.Date 型のプロパティのためのデフォルト JSF コンバータを提供します。
このコンバータは自動的に JSF に登録されます。それにより開発者がインプットフィールドやページパラメータに DateTimeConverter を指定する必要がなくなります。デフォルトではその型は (time や date と timeの組み合わせとは対象的に) date であることが仮定され、ユーザーの Locale に合わせて短い形式のインプットスタイルを使います。Locale.US の場合、インプットパターンは mm/DD/yy です。しかし、2000年問題に対処するため、年は 2桁の数字から4桁の数字へ変更されました (すなわち、 mm/DD/yyyy)。
そのインプットパターンはコンポーネント設定を使ってグローバルに上書きすることが可能です。例を見るにはこのクラスの JavaDoc を調べてください。
org.jboss.seam.faces.facesMessagesブラウザへのリダイレクトをまたがった後にもfacesが成功メッセージを伝播できるようにします。
add(FacesMessage facesMessage) — faces メッセージを追加します。 現在の対話内で発生する次の応答のレンダリングフェーズで表示されます。
add(String messageTemplate) — faces メッセージを追加します。引数によって与えられたメッセージテンプレートからレンダリングされ、このメッセージテンプレートにはEL 式を含むことができます。
add(Severity severity, String messageTemplate) — faces メッセージを追加します。引数によって与えられたメッセージテンプレートからレンダリングされ、このメッセージテンプレートにはEL 式を含むことができます。
addFromResourceBundle(String key) — faces メッセージを追加します。 EL 式を含むことができる Seam リソースバンドルで定義されたメッセージテンプレートからレンダリングされます。
addFromResourceBundle(Severity severity, String key) — faces メッセージを追加します。 EL 式を含むことができる Seam リソースバンドルで定義されたメッセージテンプレートからレンダリングされます。
clear() — 全メッセージを消去します。
org.jboss.seam.faces.redirectパラメータつきでリダイレクトを行う場合に便利な API です (特にブックマーク可能な検索結果画面などに役立ちます)。
redirect.viewId — リダイレクト先となる JSF ビュー ID です。
redirect.conversationPropagationEnabled — 対話をリダイレクトをまたがった後にも伝播させるかどうかを決定します。
redirect.parameters — 要求パラメータ名と値のマップです。 リダイレクト要求に渡されます。
execute() — リダイレクトを直ちに実行します。
captureCurrentRequest() — 現在の GET 要求 (対話コンテキスト内) の要求パラメータとビュー ID を格納します。 execute() の呼び出しで使用されます。
org.jboss.seam.faces.httpErrorHTTP エラーを送信する場合に便利な API です。
org.jboss.seam.ui.renderStampStoreレンダースタンプのコレクションを保守する責任があるコンポーネント (デフォルトでセッションスコープ) 。レンダースタンプはどのレンダリングされたフォームがサブミットされたかを示すものです。このストアは JSF のクライアント側のステートを保存するメソッドが使われるときに有用です。なぜなら、それはクライアント側で保持されるコンポーネントツリーではなくサーバー側で制御されるように POST されたフォームがどれかという判定結果を記録します。
セッションとこのチェックを結びつけないためには (セッションを使ってチェックすることは、クライアント側の状態を保存するための主な設計目標の一つではありますが)、レンダースタンプを提供する実装はアプリケーション内(アプリケーションが実行中は有効) またはデータベース内 (サーバー再起動をまたがって有効) に提供されなければなりません。
maxSize — ストアに保持されるスタンプの最大数。デフォルト: 100
これらのコンポーネントはクラス javax.faces.context.FacesContext がクラスパス上で利用可能であるときにインストールされます。
これらのコンポーネントが役に立つ機会はあまりありません。
org.jboss.seam.core.events@Observer のメソッドまたは components.xml 内のメソッドバインディング経由で監視できるイベントを引き起こす API です。
raiseEvent(String type) — 特定タイプのイベントを発生させてすべての監視者に配信します。
raiseAsynchronousEvent(String type) — EJB3 タイマーサービスで非同期に処理されるイベントを発生させます。
raiseTimedEvent(String type, ....) — EJB3 タイマーサービスで非同期に処理されるイベントをスケジュールします。
addListener(String type, String methodBinding) — 特定イベントタイプの監視者を追加します。
org.jboss.seam.core.interpolatorStrings に JFS EL 式の値を補完するための API です。
interpolate(String template) — #{...} 形式の JSF EL 式のテンプレートをスキャンしてその評価値に置換します。
org.jboss.seam.core.expressions値とメソッドのバインティングを作成するための API です。
createValueBinding(String expression) — 値バインディングオブジェクトを作成します。
createMethodBinding(String expression) — メソッドバインディングオブジェクトを作成します。
org.jboss.seam.core.pojoCache JBoss Cache PojoCache インスタンスの管理コンポーネントです。
pojoCache.cfgResourceName — 設定ファイル名です。 デフォルトでは treecache.xml に設定されます。
これらコンポーネントはすべて常にインストールされます。
次のコンポーネントグループは Seam を使用した国際化ユーザーインタフェースのビルドを容易にします。
org.jboss.seam.core.localeSeam ロケールです。
org.jboss.seam.international.timezoneSeam のタイムゾーンです。 タイムゾーンはセッションスコープです。
org.jboss.seam.core.resourceBundleSeam リソースバンドルです。 リソースバンドルはステートレスになります。 Seam リソースバンドルは Java リソースバンドルの一覧内のキーの深さ優先検索を行います。
org.jboss.seam.core.resourceLoaderリソースローダーはアプリケーションリソースおよびリソースバンドルへのアクセスを提供します。
resourceLoader.bundleNames — Seam リソースバンドルを使用する場合に検索する Java リソースバンドル名です。 デフォルトは messages になります。
org.jboss.seam.international.localeSelector設定しているときか、あるいは実行時にユーザーによってかのいずれかで、ロケール選択をサポートします。
select() — 指定されたロケールを選択します。
localeSelector.locale — 実際の java.util.Locale です。
localeSelector.localeString — ロケールの文字列表現です。
localeSelector.language — 指定されたロケールの言語です。
localeSelector.country — 指定されたロケールの国です。
localeSelector.variant — 指定されたロケールのバリアントです。
localeSelector.supportedLocales — jsf-config.xml に記載のサポートロケールを表している SelectItem 一覧です。
localeSelector.cookieEnabled — ロケール選択がクッキーで永続化されることを指定します。
org.jboss.seam.international.timezoneSelector設定しているときか、あるいは実行時にユーザーによってかのいずれかで、タイムゾーン選択をサポートします。
select() — 指定されたロケールを選択します。
timezoneSelector.timezone — 実際の java.util.TimeZone です。
timezoneSelector.timeZoneId — タイムゾーンの文字列表現です。
timezoneSelector.cookieEnabled — タイムゾーン選択がクッキーによって永続化されることを指定します。
org.jboss.seam.international.messagesSeam リソースバンドル内で定義されるメッセージテンプレートからレンダリングされる国際化メッセージを含んでいるマップです。
org.jboss.seam.theme.themeSelector設定しているときか、あるいは実行時にユーザーによってかのいずれかで、テーマ選択をサポートします。
select() — 指定されたテーマを選択します。
theme.availableThemes — 定義されたテーマの一覧です。
themeSelector.theme — 選択されたテーマです。
themeSelector.themes — 定義されたテーマを表している SelectItem の一覧です。
themeSelector.cookieEnabled — テーマ選択がクッキーで永続化されることを指定します。
org.jboss.seam.theme.themeテーマエントリを含んでいるマップです。
これらコンポーネントはすべて常にインストールされます。
次のコンポーネントグループを使うとアプリケーションまたはユーザーインタフェースにより対話の制御を行うことができるようになります。
org.jboss.seam.core.conversation現在の Seam 対話の属性をアプリケーション制御するための API です。
getId() — 現在の対話 ID を返します。
isNested() — 現在の対話はネストされている対話ですか?
isLongRunning() — 現在の対話は長期実行の対話ですか?
getId() — 現在の対話 ID を返します。
getParentId() — 親対話の ID を返します。
getRootId() — ルート対話の ID を返します。
setTimeout(int timeout) — 現在の対話のタイムアウトをセットします。
setViewId(String outcome) — 対話スイッチャー、 対話リストまたはブレッドクラムから現在の対話に切り替えて戻した場合に使用する ビュー ID をセットします。
setDescription(String description) — 対話スイッチャー、 対話リストまたはブレッドクラムで表示される現在の対話の詳細をセットします。
redirect() — この対話用に明確に定義された最後のビュー ID にリダイレクトします (ログインのチャレンジ後に便利)。
leave() — 実際には対話を終了せずにこの対話のスコープを終了します。
begin() — 長期実行の対話を開始します (@Begin と同等)。
beginPageflow(String pageflowName) — ページフローを付けて長期実行の対話を開始します (@Begin(pageflow="...") と同等)。
end() — 長期実行の対話を終了します (@End と同等)。
pop() — 対話スタックをポップして親対話に戻ります。
root() — 対話スタックのルート対話に戻ります。
changeFlushMode(FlushModeType flushMode) — 対話のフラッシュモードを変更します。
org.jboss.seam.core.conversationList対話一覧の管理コンポーネントです。
org.jboss.seam.core.conversationStack対話スタックの管理コンポーネントです (パンくず)。
org.jboss.seam.faces.switcherconversation switcher です。
これらコンポーネントはすべて常にインストールされます。
jBPM と併用するコンポーネントになります。
org.jboss.seam.pageflow.pageflowSeam ページフローの API 制御です。
isInProcess() — 現在プロセス中のページフローがある場合に true を返します。
getProcessInstance() — 現在のページフローの jBPM ProcessInstance を返します。
begin(String pageflowName) — 現在の対話のコンテキスト内でページフローを開始します。
reposition(String nodeName) — 現在のページフローを特定ノードに再配置します。
org.jboss.seam.bpm.actor現在のセッションに関する jBPM actor の属性をアプリケーション制御するための API です。
setId(String actorId) — 現在のユーザーの jBPM アクター ID をセットします。
getGroupActorIds() — 現在のユーザーグループ群用の jBPM アクター ID が追加可能なものに Set を返します。
org.jboss.seam.bpm.transition現在のタスクに対する jBPM 移行のアプリケーション制御を目的とする API です。
setName(String transitionName) — 現在のタスクが @EndTask で終了される場合に使用する jBPM 遷移名をセットします。
org.jboss.seam.bpm.businessProcess対話とビジネスプロセス間の関連性をプログラム制御するための API です。
businessProcess.taskId — 現在の対話に関連づけられたタスクの ID です。
businessProcess.processId — 現在の対話に関連づけられたプロセスの ID です。
businessProcess.hasCurrentTask() — 現在の対話に関連づけられたタスクインスタンスですか?
businessProcess.hasCurrentProcess() — 現在の対話に関連づけられたプロセスインスタンスです。
createProcess(String name) — 指定プロセス定義のインスタンスを作成し現在の対話に関連付けます。
startTask() — 現在の対話に関連づけられたタスクを開始します。
endTask(String transitionName) — 現在の対話に関連づけられたタスクを終了します。
resumeTask(Long id) — 特定の ID を持つタスクを現在の対話に関連付けます。
resumeProcess(Long id) — 特定の ID を持つプロセスを現在の対話に関連付けます。
transition(String transitionName) — 遷移を引き起こします。
org.jboss.seam.bpm.taskInstancejBPM TaskInstance の管理コンポーネントです。
org.jboss.seam.bpm.processInstancejBPM ProcessInstance の管理コンポーネントです。
org.jboss.seam.bpm.jbpmContextイベントスコープ JbpmContext の管理コンポーネントです。
org.jboss.seam.bpm.taskInstanceListjBPM task list の管理コンポーネントです。
org.jboss.seam.bpm.pooledTaskInstanceListjBPM pooled task list の管理コンポーネントです。
org.jboss.seam.bpm.taskInstanceListForTypejBPM タスクリスト集の管理コンポーネントです。
org.jboss.seam.bpm.pooledTaskpooled task 割り当てのアクションハンドラです。
org.jboss.seam.bpm.processInstanceFinderプロセスインスタンスタスク一覧の管理機能です。
org.jboss.seam.bpm.processInstanceListプロセスインスタンスのタスク一覧です。
org.jboss.seam.bpm.jbpm コンポーネントがインストールされるとこれらの全コンポーネントが常にインストールされます。
これらのコンポーネントはウェブ層のセキュリティに関連しています。
org.jboss.seam.web.userPrincipal現在のユーザー Principal の管理コンポーネントです。
org.jboss.seam.web.isUserInRole現在のプリンシパルに使用可能なロールに応じて JSF ページがコントロールのレンダリングを選択できるようにします。 <h:commandButton value="edit" rendered="#{isUserInRole['admin']}"/>
これらのコンポーネントは管理対象の TopicPublisher および QueueSender との併用を目的としています (下記参照)。
org.jboss.seam.jms.queueSessionJMS QueueSession の管理コンポーネントです。
org.jboss.seam.jms.topicSessionJMS TopicSession の管理コンポーネントです。
Seam Email サポートと併用するコンポーネントになります。
org.jboss.seam.mail.mailSessionJavaMail Session の管理コンポーネントです。 セッションを JNDI コンテキスト内で検索させるか (sessionJndiName プロパティを設定)、設定オプションから作成することができます。 後者の場合、 host は必須となります。
org.jboss.seam.mail.mailSession.host — 使用する SMTP サーバーのホスト名です。
org.jboss.seam.mail.mailSession.port — 使用する SMTP サーバーのポートです。
org.jboss.seam.mail.mailSession.username — SMTP サーバーの接続に使用するユーザー−名です。
org.jboss.seam.mail.mailSession.password — SMTP サーバーの接続に使用するパスワードです。
org.jboss.seam.mail.mailSession.debug — JavaMail のデバッグ機能を有効にします (かなり冗長)。
org.jboss.seam.mail.mailSession.ssl — SMTP への SSL 接続を有効にします (デフォルトはポート465)。
org.jboss.seam.mail.mailSession.tls — デフォルトでは true です。 メールセッションで TLS サポートを有効にします。
org.jboss.seam.mail.mailSession.sessionJndiName — JNDI にバインドされる javax.mail.Session と同じ名前です。 これを与えると他のプロパティはすべて無視されます。
これらのコンポーネントは非常に重要なプラットフォームの基盤を提供します。 デフォルトではインストールされないコンポーネントは components.xml 内のそのコンポーネントで install="true" を設定するとインストールすることができます。
org.jboss.seam.core.initSeam の初期化設定です。 常にインストールされます。
org.jboss.seam.core.init.jndiPattern — セッション Bean のルックアップに使用される JNDI パターンです。
org.jboss.seam.core.init.debug — Seam デバッグモードを有効にします。 実稼働では false にセットしてください。 デバッグが有効になっている状態でシステムになんらかの負荷がかかるとエラーが表示される場合があります。
org.jboss.seam.core.init.clientSideConversations — true にセットすると Seam は対話コンテキストの変数を HttpSession 内ではなくクライアント内に保存するようになります。
org.jboss.seam.core.managerSeam ページおよび対話コンテキスト管理用の内部コンポーネントです。 常にインストールされます。
org.jboss.seam.core.manager.conversationTimeout — ミリ秒単位で対話コンテキストのタイムアウトを設定します。
org.jboss.seam.core.manager.concurrentRequestTimeout — 長期実行対話コンテキストでロックの取得を試行しているスレッドの最大待機時間です。
org.jboss.seam.core.manager.conversationIdParameter — 対話 ID の伝播に使用する要求パラメータです。 デフォルトは conversationId です。
org.jboss.seam.core.manager.conversationIsLongRunningParameter — 対話が長期実行であるかどうかについての情報伝播に使用する要求パラメータです。 デフォルトは conversationIsLongRunning です。
org.jboss.seam.core.manager.defaultFlushMode — すべての Seam 管理永続コンテキストにデフォルトでセットされるフラッシュモードを設定します。 デフォルトは AUTO です。
org.jboss.seam.navigation.pagesSeam ワークスペースの管理用の内部コンポーネントです。 常にインストールされます。
org.jboss.seam.navigation.pages.noConversationViewId — 対話エントリがサーバー側に見つからない場合のビュー ID リダイレクト先のグローバル設定です。
org.jboss.seam.navigation.pages.loginViewId — 未承認ユーザーが保護されたビューにアクセスしようとしている場合のビュー ID リダイレクト先のグローバル設定です。
org.jboss.seam.navigation.pages.httpPort — http スキームが要求された場合に使用するポートのグローバル設定です。
org.jboss.seam.navigation.pages.httpsPort — https スキームが要求された場合に使用するポートのグローバル設定です。
org.jboss.seam.navigation.pages.resources — pages.xml スタイルのリソースを検索するリソース一覧です。 デフォルトは WEB-INF/pages.xml です。
org.jboss.seam.bpm.jbpmJbpmConfiguration をブートストラップします。 クラス org.jboss.seam.bpm.Jbpm としてインストールします。
org.jboss.seam.bpm.jbpm.processDefinitions — ビジネスプロセスの編成に使用する jPDL ファイルのリソース名一覧です。
org.jboss.seam.bpm.jbpm.pageflowDefinitions — 対話ページフローの編成に使用する jPDL ファイルのリソース名一覧です。
org.jboss.seam.core.conversationEntries要求間のアクティブな長期の対話を記録するセッションスコープの内部コンポーネントです。
org.jboss.seam.faces.facesPageページに関連付けられる対話コンテキストを記録するページスコープの内部コンポーネントです。
org.jboss.seam.persistence.persistenceContexts現在の対話に使用された永続コンテキストを記録する内部コンポーネントです。
org.jboss.seam.jms.queueConnectionJMS QueueConnection を管理します。 管理された QueueSender がインストールされると必ずインストールされます。
org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName — JMS QueueConnectionFactory の JNDI 名です。 デフォルトは UIL2ConnectionFactory です。
org.jboss.seam.jms.topicConnectionJMS TopicConnection を管理します。 管理された TopicPublisher がインストールされると必ずインストールされます。
org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName — JMS TopicConnectionFactory の JNDI 名です。 デフォルトは UIL2ConnectionFactory です。
org.jboss.seam.persistence.persistenceProviderJPA プロバイダの標準化されていない機能に対する抽出層です。
org.jboss.seam.core.validatorsHibernate Validator ClassValidator のインスタンスをキャッシュします。
org.jboss.seam.faces.validation検証が失敗したのか成功だったのかアプリケーションが判断できるようになります。
org.jboss.seam.debug.introspectorSeam Debug Page のサポートです。
org.jboss.seam.debug.contextsSeam Debug Page のサポートです。
org.jboss.seam.exception.exceptions例外処理用の内部コンポーネントです。
org.jboss.seam.transaction.transactionトランザクションを制御し JTA 互換のインタフェースの背後にある基礎となるトランザクション管理の実装を抽出するための API です。
org.jboss.seam.faces.safeActions要求のあった URL 内のアクション式が安全かどうかを決定します。 アクション式がビュー内に存在することを確認することでこれを行います。
org.jboss.seam.async.dispatcher非同期メソッド用のディスパッチャステートレスセッション Bean
org.jboss.seam.core.imageイメージ操作および問い合わせ
org.jboss.seam.core.pojoCachePojoCache インスタンスの管理コンポーネント
org.jboss.seam.core.uiComponentコンポーネント ID によって与えられる UIComponents のマップを管理します。
特定の特殊な Seam コンポーネントクラスは Seam 設定内で指定される name の配下で複数回のインストールが可能です。 例えば、 components.xml 内の次の行は Seam コンポーネントを 2 つインストールして設定します。
<component name="bookingDatabase"
class="org.jboss.seam.persistence.ManagedPersistenceContext">
<property name="persistenceUnitJndiName"
>java:/comp/emf/bookingPersistence</property>
</component>
<component name="userDatabase"
class="org.jboss.seam.persistence.ManagedPersistenceContext">
<property name="persistenceUnitJndiName"
>java:/comp/emf/userPersistence</property>
</component
>
Seam コンポーネント名は bookingDatabase と userDatabase です。
org.jboss.seam.persistence.ManagedPersistenceContext拡張永続コンテキストを持つ対話スコープで管理対象の EntityManager の管理コンポーネントです。
<entityManager>.entityManagerFactory — EntityManagerFactory のインスタンスに評価を行う値バインディング式です。
<entityManager>.persistenceUnitJndiName — エンティティマネージャファクトリの JNDI 名です。 デフォルトは java:/<managedPersistenceContext> です。
org.jboss.seam.persistence.EntityManagerFactoryJPA EntityManagerFactory を管理します。 EJB 3.0 サポート環境以外で JPA を使用する場合に最適となります。
entityManagerFactory.persistenceUnitName — 永続ユニット名です。
設定プロパティの詳細については API JavaDoc をご覧ください。
org.jboss.seam.persistence.ManagedSession対話スコープで管理対象の Hibernate Session の管理コンポーネントです。
<session>.sessionFactory — SessionFactory のインスタンスに対して評価する値バインディング式です。
<session>.sessionFactoryJndiName — セッションファクトリの JNDI 名です。 デフォルトは java:/<managedSession> です。
org.jboss.seam.persistence.HibernateSessionFactoryHibernate SessionFactory を管理します。
<sessionFactory>.cfgResourceName — 設定ファイルへのパスです。デフォルトは hibernate.cfg.xml です。
設定プロパティの詳細については API JavaDoc をご覧ください。
org.jboss.seam.jms.ManagedQueueSenderイベントスコープで管理対象の JMS QueueSender の管理コンポーネントです。
<managedQueueSender>.queueJndiName — JMS キューの JNDI 名です。
org.jboss.seam.jms.ManagedTopicPublisherイベントスコープで管理対象の JMS TopicPublisher の管理コンポーネントです。
<managedTopicPublisher>.topicJndiName — JMS トピックの JMDI 名です。
org.jboss.seam.drools.ManagedWorkingMemory対話スコープで管理対象の Drools WorkingMemory の管理コンポーネントです。
<managedWorkingMemory>.ruleBase — RuleBase のインスタンスに対して評価する値式です。
org.jboss.seam.drools.RuleBaseアプリケーションスコープの Drools RuleBase の管理コンポーネントです。 新しいルールの動的なインストールには対応しないため、 実稼働での使用は目的としていないので注意してください。
<ruleBase>.ruleFiles — Drools ルールを含むファイルの一覧です。
<ruleBase>.dslFile — Drools DSL 定義です。
org.jboss.seam.framework.EntityHomeorg.jboss.seam.framework.HibernateEntityHomeorg.jboss.seam.framework.EntityQueryorg.jboss.seam.framework.HibernateEntityQuery