第23章 Built-in Seam components

This chapter describes Seam's built-in components, and their configuration properties.

Note that you can replace any of the built in components with your own implementations simply by specifying the name of one of the built in components on your own class using @Name.

Note also that even though all the built in components use a qualified name, most of them are aliased to unqualified names by default. These aliases specify auto-create="true", so you do not need to use create=true when injecting built-in components by their unqualified name.

23.1. Context injection components

The first set of built in components exist purely to support injection of various contextual objects. For example, the following component instance variable would have the Seam session context object injected:

@In private Context sessionContext;
org.jboss.seam.core.eventContext

Manager component for the event context object

org.jboss.seam.core.pageContext

Manager component for the page context object

org.jboss.seam.core.conversationContext

Manager component for the conversation context object

org.jboss.seam.core.sessionContext

Manager component for the session context object

org.jboss.seam.core.applicationContext

Manager component for the appication context object

org.jboss.seam.core.businessProcessContext

Manager component for the business process context object

org.jboss.seam.core.facesContext

Manager component for the FacesContext context object (not a true Seam context)

All of these components are always installed.

23.2. Utility components

These components are merely useful.

org.jboss.seam.core.facesMessages

Allows faces success messages to propagate across a browser redirect.

  • add(FacesMessage facesMessage) — add a faces message, which will be displayed during the next render response phase that occurs in the current conversation.

  • add(String messageTemplate) — add a faces message, rendered from the given message template which may contain EL expressions.

  • add(Severity severity, String messageTemplate) — add a faces message, rendered from the given message template which may contain EL expressions.

  • addFromResourceBundle(String key) — add a faces message, rendered from a message template defined in the Seam resource bundle which may contain EL expressions.

  • addFromResourceBundle(Severity severity, String key) — add a faces message, rendered from a message template defined in the Seam resource bundle which may contain EL expressions.

  • clear() — clear all messages.

org.jboss.seam.core.redirect

A convenient API for performing redirects with parameters (this is especially useful for bookmarkable search results screens).

  • redirect.viewId — the JSF view id to redirect to.

  • redirect.conversationPropagationEnabled — determines whether the conversation will propagate across the redirect.

  • redirect.parameters — a map of request parameter name to value, to be passed in the redirect request.

  • execute() — perform the redirect immediately.

  • captureCurrentRequest() — stores the view id and request parameters of the current GET request (in the conversation context), for later use by calling execute().

org.jboss.seam.core.httpError

A convenient API for sending HTTP errors.

org.jboss.seam.core.events

An API for raising events that can be observed via @Observer methods, or method bindings in components.xml.

  • raiseEvent(String type) — raise an event of a particular type and distribute to all observers.

  • raiseAsynchronousEvent(String type) — raise an event to be processed asynchronously by the EJB3 timer service.

  • raiseTimedEvent(String type, ....) — schedule an event to be processed asynchronously by the EJB3 timer service.

  • addListener(String type, String methodBinding) — add an observer for a particular event type.

org.jboss.seam.core.interpolator

An API for interpolating the values of JSF EL expressions in Strings.

  • interpolate(String template) — scan the template for JSF EL expressions of the form #{...} and replace them with their evaluated values.

org.jboss.seam.core.expressions

An API for creating value and method bindings.

  • createValueBinding(String expression) — create a value binding object.

  • createMethodBinding(String expression) — create a method binding object.

org.jboss.seam.core.pojoCache

Manager component for a JBoss Cache PojoCache instance.

  • pojoCache.cfgResourceName — the name of the configuration file. Default to treecache.xml.

org.jboss.seam.core.uiComponent

Allows access to a JSF UIComponent by its id from the EL. For example, we can write @In("#{uiComponent['myForm:address'].value}").

All of these components are always installed.

23.3. Components for internationalization and themes

The next group of components make it easy to build internationalized user interfaces using Seam.

org.jboss.seam.core.locale

The Seam locale. The locale is session scoped.

org.jboss.seam.core.timezone

The Seam timezone. The timezone is session scoped.

org.jboss.seam.core.resourceBundle

The Seam resource bundle. The resource bundle is session scoped. The Seam resource bundle performs a depth-first search for keys in a list of Java resource bundles.

  • resourceBundle.bundleNames — the names of the Java resource bundles to search. Default to messages.

org.jboss.seam.core.localeSelector

Supports selection of the locale either at configuration time, or by the user at runtime.

  • select() — select the specified locale.

  • localeSelector.locale — the actual java.util.Locale.

  • localeSelector.localeString — the stringified representation of the locale.

  • localeSelector.language — the language for the specified locale.

  • localeSelector.country — the country for the specified locale.

  • localeSelector.variant — the variant for the specified locale.

  • localeSelector.supportedLocales — a list of SelectItems representing the supported locales listed in jsf-config.xml.

  • localeSelector.cookieEnabled — specifies that the locale selection should be persisted via a cookie.

org.jboss.seam.core.timezoneSelector

Supports selection of the timezone either at configuration time, or by the user at runtime.

  • select() — select the specified locale.

  • timezoneSelector.timezone — the actual java.util.TimeZone.

  • timezoneSelector.timeZoneId — the stringified representation of the timezone.

  • timezoneSelector.cookieEnabled — specifies that the timezone selection should be persisted via a cookie.

org.jboss.seam.core.messages

A map containing internationalized messages rendered from message templates defined in the Seam resource bundle.

org.jboss.seam.theme.themeSelector

Supports selection of the theme either at configuration time, or by the user at runtime.

  • select() — select the specified theme.

  • theme.availableThemes — the list of defined themes.

  • themeSelector.theme — the selected theme.

  • themeSelector.themes — a list of SelectItems representing the defined themes.

  • themeSelector.cookieEnabled — specifies that the theme selection should be persisted via a cookie.

org.jboss.seam.theme.theme

A map containing theme entries.

All of these components are always installed.

23.4. Components for controlling conversations

The next group of components allow control of conversations by the application or user interface.

org.jboss.seam.core.conversation

API for application control of attributes of the current Seam conversation.

  • getId() — returns the current conversation id

  • isNested() — is the current conversation a nested conversation?

  • isLongRunning() — is the current conversation a long-running conversation?

  • getId() — returns the current conversation id

  • getParentId() — returns the conversation id of the parent conversation

  • getRootId() — returns the conversation id of the root conversation

  • setTimeout(int timeout) — sets the timeout for the current conversation

  • setViewId(String outcome) — sets the view id to be used when switching back to the current conversation from the conversation switcher, conversation list, or breadcrumbs.

  • setDescription(String description) — sets the description of the current conversation to be displayed in the conversation switcher, conversation list, or breadcrumbs.

  • redirect() — redirect to the last well-defined view id for this conversation (useful after login challenges).

  • leave() — exit the scope of this conversation, without actually ending the conversation.

  • begin() — begin a long-running conversation (equivalent to @Begin).

  • beginPageflow(String pageflowName) — begin a long-running conversation with a pageflow (equivalent to @Begin(pageflow="...")).

  • end() — end a long-running conversation (equivalent to @End).

  • pop() — pop the conversation stack, returning to the parent conversation.

  • root() — return to the root conversation of the conversation stack.

  • changeFlushMode(FlushModeType flushMode) — change the flush mode of the conversation.

org.jboss.seam.core.conversationList

Manager component for the conversation list.

org.jboss.seam.core.conversationStack

Manager component for the conversation stack (breadcrumbs).

org.jboss.seam.core.switcher

The conversation switcher.

All of these components are always installed.

23.5. jBPMコンポーネント

jBPMで利用するコンポーネントです

org.jboss.seam.core.pageflow

SeamページフローのAPI制御

  • isInProcess() — もし処理時点のプロセスに ページフローが存在する場合 trueを返します

  • getProcessInstance() — 処理時点での ページフローに関連するjBPMProcessInstanceを返します

  • begin(String pageflowName) — 処理時点での 対話のコンテキストにあるページフローを開始します

  • reposition(String nodeName) — 特定のノードに 処理時点でのページフローを再配置する

org.jboss.seam.core.actor

処理時点でのセッションに関連するjBPMアクタの属性を制御するAPI

  • setId(String actorId) — 処理時点のユーザの jBPMアクターIDをセットします

  • getGroupActorIds() — 処理時点の ユーザグループに追加されるかもしれないjBPMアクターIDの Setを返します

org.jboss.seam.core.transition

処理時点でのタスクに関連する遷移の制御を行うAPI

  • @EndTaskで処理時点でのタスクが終了する時に 使用する遷移名をセットします

org.jboss.seam.core.businessProcess

Seamコンバセーションとビジネスプロセス間の関連を制御する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.core.taskInstance

jBPM TaskInstance管理コンポーネント

org.jboss.seam.core.processInstance

jBPM ProcessInstance管理コンポーネント

org.jboss.seam.core.jbpmContext

イベントスコープなJbpmContext管理コンポーネント

org.jboss.seam.core.taskInstanceList

JBPMタスクリスト管理コンポーネント

org.jboss.seam.core.pooledTaskInstanceList

JBPMプールタスクリスト管理コンポーネント

org.jboss.seam.core.taskInstanceListForType

JBPMタスクリスト管理コンポーネント

org.jboss.seam.core.pooledTask

プールされているタスク割り当てのためのアクションハンドラ

これらすべてのコンポーネントは、org.jboss.seam.core.jbpm コンポーネントが初期設定されていれば同時に設定されます

23.6. Security-related components

These components relate to web-tier security.

org.jboss.seam.core.userPrincipal

Manager component for the current user Principal.

org.jboss.seam.core.isUserInRole

Allows JSF pages to choose to render a control, depending upon the roles available to the current principal. <h:commandButton value="edit" rendered="#{isUserInRole['admin']}"/>.

23.7. JMS-related components

These components are for use with managed TopicPublishers and QueueSenders (see below).

org.jboss.seam.jms.queueSession

Manager component for a JMS QueueSession .

org.jboss.seam.jms.topicSession

Manager component for a JMS TopicSession .

23.8. Mail-related components

These components are for use with Seam's Email support

org.jboss.seam.mail.mailSession

Manager component for a JavaMail Session .

  • org.jboss.seam.mail.mailSession.host — the hostname of the SMTP server to use

  • org.jboss.seam.mail.mailSession.port — the port of the SMTP server to use

  • org.jboss.seam.mail.mailSession.username — the username to use to connect to the SMTP server.

  • org.jboss.seam.mail.mailSession.password — the password to use to connect to the SMTP server

  • org.jboss.seam.mail.mailSession.debug — enable JavaMail debugging (very verbose)

  • org.jboss.seam.mail.mailSession.sessionJndiName — name under which a javax.mail.Session is bound to JNDI

23.9. Infrastructural components

These components provide critical platform infrastructure. You can install a component by including its class name in the org.jboss.seam.core.init.componentClasses configuration property.

org.jboss.seam.core.init

Initialization settings for Seam. Always installed.

  • org.jboss.seam.core.init.jndiPattern — the JNDI pattern used for looking up session beans

  • org.jboss.seam.core.init.debug — enable Seam debug mode

  • org.jboss.seam.core.init.clientSideConversations — if set to true, Seam will save conversation context variables in the client instead of in the HttpSession.

  • org.jboss.seam.core.init.userTransactionName — the JNDI name to use when looking up the JTA UserTransaction object.

org.jboss.seam.core.manager

Internal component for Seam page and conversation context management. Always installed.

  • org.jboss.seam.core.manager.conversationTimeout — the conversation context timeout in milliseconds.

  • org.jboss.seam.core.manager.concurrentRequestTimeout — maximum wait time for a thread attempting to gain a lock on the long-running conversation context.

  • org.jboss.seam.core.manager.conversationIdParameter — the request parameter used to propagate the conversation id, default to conversationId.

  • org.jboss.seam.core.manager.conversationIsLongRunningParameter — the request parameter used to propagate information about whether the conversation is long-running, default to conversationIsLongRunning.

org.jboss.seam.core.pages

Internal component for Seam workspace management. Always installed.

  • org.jboss.seam.core.pages.noConversationViewId — global setting for the view id to redirect to when a conversation entry is not found on the server side.

org.jboss.seam.core.ejb

Bootstraps the JBoss Embeddable EJB3 container. Install as class org.jboss.seam.core.Ejb. This is useful when using Seam with EJB components outside the context of a Java EE 5 application server.

The basic Embedded EJB configuration is defined in jboss-embedded-beans.xml. Additional microcontainer configuration (for example, extra datasources) may be specified by jboss-beans.xml or META-INF/jboss-beans.xml in the classpath.

org.jboss.seam.core.microcontainer

Bootstraps the JBoss microcontainer. Install as class org.jboss.seam.core.Microcontainer. This is useful when using Seam with Hibernate and no EJB components outside the context of a Java EE application server. The microcontainer can provide a partial EE environment with JNDI, JTA, a JCA datasource and Hibernate.

The microcontainer configuration may be specified by jboss-beans.xml or META-INF/jboss-beans.xml in the classpath.

org.jboss.seam.core.jbpm

Bootstraps a JbpmConfiguration. Install as class org.jboss.seam.core.Jbpm.

  • org.jboss.seam.core.jbpm.processDefinitions — a list of resource names of jPDL files to be used for orchestration of business processes.

  • org.jboss.seam.core.jbpm.pageflowDefinitions — a list of resource names of jPDL files to be used for orchestration of conversation page flows.

org.jboss.seam.core.conversationEntries

Internal session-scoped component recording the active long-running conversations between requests.

org.jboss.seam.core.facesPage

Internal page-scoped component recording the conversation context associated with a page.

org.jboss.seam.core.persistenceContexts

Internal component recording the persistence contexts which were used in the current conversation.

org.jboss.seam.jms.queueConnection

Manages a JMS QueueConnection. Installed whenever managed managed QueueSender is installed.

  • org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName — the JNDI name of a JMS QueueConnectionFactory. Default to UIL2ConnectionFactory

org.jboss.seam.jms.topicConnection

Manages a JMS TopicConnection. Installed whenever managed managed TopicPublisher is installed.

  • org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName — the JNDI name of a JMS TopicConnectionFactory. Default to UIL2ConnectionFactory

org.jboss.seam.persistence.persistenceProvider

Abstraction layer for non-standardized features of JPA provider.

org.jboss.seam.core.validation

Internal component for Hibernate Validator support.

org.jboss.seam.debug.introspector

Support for the Seam Debug Page.

org.jboss.seam.debug.contexts

Support for the Seam Debug Page.

23.10. Special components

Certain special Seam component classes are installable multiple times under names specified in the Seam configuration. For example, the following lines in components.xml install and configure two Seam components:

<component name="bookingDatabase"
          class="org.jboss.seam.core.ManagedPersistenceContext">
    <property name="persistenceUnitJndiName">java:/comp/emf/bookingPersistence</property>
</component>

<component name="userDatabase"
          class="org.jboss.seam.core.ManagedPersistenceContext">
    <property name="persistenceUnitJndiName">java:/comp/emf/userPersistence</property>
</component>

The Seam component names are bookingDatabase and userDatabase.

<entityManager>, org.jboss.seam.core.ManagedPersistenceContext

Manager component for a conversation scoped managed EntityManager with an extended persistence context.

  • <entityManager>.entityManagerFactory — a value binding expression that evaluates to an instance of EntityManagerFactory.

    <entityManager>.persistenceUnitJndiName — the JNDI name of the entity manager factory, default to java:/<managedPersistenceContext>.

<entityManagerFactory>, org.jboss.seam.core.EntityManagerFactory

Manages a JPA EntityManagerFactory. This is most useful when using JPA outside of an EJB 3.0 supporting environment.

  • entityManagerFactory.persistenceUnitName — the name of the persistence unit.

See the API JavaDoc for further configuration properties.

<session>, org.jboss.seam.core.ManagedSession

Manager component for a conversation scoped managed Hibernate Session.

  • <session>.sessionFactory — a value binding expression that evaluates to an instance of SessionFactory.

    <session>.sessionFactoryJndiName — the JNDI name of the session factory, default to java:/<managedSession>.

<sessionFactory>, org.jboss.seam.core.HibernateSessionFactory

Manages a Hibernate SessionFactory.

  • <sessionFactory>.cfgResourceName — the path to the configuration file. Default to hibernate.cfg.xml.

See the API JavaDoc for further configuration properties.

<managedQueueSender>, org.jboss.seam.jms.ManagedQueueSender

Manager component for an event scoped managed JMS QueueSender.

  • <managedQueueSender>.queueJndiName — the JNDI name of the JMS queue.

<managedTopicPublisher>, org.jboss.seam.jms.ManagedTopicPublisher

Manager component for an event scoped managed JMS TopicPublisher.

  • <managedTopicPublisher>.topicJndiName — the JNDI name of the JMS topic.

<managedWorkingMemory>, org.jboss.seam.drools.ManagedWorkingMemory

Manager component for a conversation scoped managed Drools WorkingMemory.

  • <managedWorkingMemory>.ruleBase — a value expression that evaluates to an instance of RuleBase.

<ruleBase>, org.jboss.seam.drools.RuleBase

Manager component for an application scoped Drools RuleBase. Note that this is not really intended for production usage, since it does not support dynamic installation of new rules.

  • <ruleBase>.ruleFiles — a list of files containing Drools rules.

    <ruleBase>.dslFile — a Drools DSL definition.

<entityHome>, org.jboss.seam.framework.EntityHome
<hibernateEntityHome>, org.jboss.seam.framework.HibernateEntityHome
<entityQuery>, org.jboss.seam.framework.EntityQuery
<hibernateEntityQuery>, org.jboss.seam.framework.HibernateEntityQuery