SeamFramework.orgCommunity Documentation

Seam - Contextual Components

A Framework for Enterprise Java

2.1.2


Introduction to JBoss Seam
1. Contribute to Seam
1. Seam Tutorial
1.1. Using the Seam examples
1.1.1. Running the examples on JBoss AS
1.1.2. Running the examples on Tomcat
1.1.3. Running the example tests
1.2. Your first Seam application: the registration example
1.2.1. Understanding the code
1.2.2. How it works
1.3. Clickable lists in Seam: the messages example
1.3.1. Understanding the code
1.3.2. How it works
1.4. Seam and jBPM: the todo list example
1.4.1. Understanding the code
1.4.2. How it works
1.5. Seam pageflow: the numberguess example
1.5.1. Understanding the code
1.5.2. How it works
1.6. A complete Seam application: the Hotel Booking example
1.6.1. Introduction
1.6.2. Overview of the booking example
1.6.3. Understanding Seam conversations
1.6.4. The Seam Debug Page
1.7. Nested conversations: extending the Hotel Booking example
1.7.1. Introduction
1.7.2. Understanding Nested Conversations
1.8. A complete application featuring Seam and jBPM: the DVD Store example
1.9. Bookmarkable URLs with the Blog example
1.9.1. Using "pull"-style MVC
1.9.2. Bookmarkable search results page
1.9.3. Using "push"-style MVC in a RESTful application
2. Getting started with Seam, using seam-gen
2.1. Before you start
2.2. Setting up a new project
2.3. Creating a new action
2.4. Creating a form with an action
2.5. Generating an application from an existing database
2.6. Generating an application from existing JPA/EJB3 entities
2.7. Deploying the application as an EAR
2.8. Seam and incremental hot deployment
2.9. Using Seam with JBoss 4.0
2.9.1. Install JBoss 4.0
2.9.2. Install the JSF 1.2 RI
3. Getting started with Seam, using JBoss Tools
3.1. Before you start
3.2. Setting up a new Seam project
3.3. Creating a new action
3.4. Creating a form with an action
3.5. Generating an application from an existing database
3.6. Seam and incremental hot deployment with JBoss Tools
4. The contextual component model
4.1. Seam contexts
4.1.1. Stateless context
4.1.2. Event context
4.1.3. Page context
4.1.4. Conversation context
4.1.5. Session context
4.1.6. Business process context
4.1.7. Application context
4.1.8. Context variables
4.1.9. Context search priority
4.1.10. Concurrency model
4.2. Seam components
4.2.1. Stateless session beans
4.2.2. Stateful session beans
4.2.3. Entity beans
4.2.4. JavaBeans
4.2.5. Message-driven beans
4.2.6. Interception
4.2.7. Component names
4.2.8. Defining the component scope
4.2.9. Components with multiple roles
4.2.10. Built-in components
4.3. Bijection
4.4. Lifecycle methods
4.5. Conditional installation
4.6. Logging
4.7. The Mutable interface and @ReadOnly
4.8. Factory and manager components
5. Configuring Seam components
5.1. Configuring components via property settings
5.2. Configuring components via components.xml
5.3. Fine-grained configuration files
5.4. Configurable property types
5.5. Using XML Namespaces
6. Events, interceptors and exception handling
6.1. Seam events
6.2. Page actions
6.3. Page parameters
6.3.1. Mapping request parameters to the model
6.4. Propagating request parameters
6.5. URL rewriting with page parameters
6.6. Conversion and Validation
6.7. Navigation
6.8. Fine-grained files for definition of navigation, page actions and parameters
6.9. Component-driven events
6.10. Contextual events
6.11. Seam interceptors
6.12. Managing exceptions
6.12.1. Exceptions and transactions
6.12.2. Enabling Seam exception handling
6.12.3. Using annotations for exception handling
6.12.4. Using XML for exception handling
6.12.5. Some common exceptions
7. Conversations and workspace management
7.1. Seam's conversation model
7.2. Nested conversations
7.3. Starting conversations with GET requests
7.4. Requiring a long-running conversation
7.5. Using <s:link> and <s:button>
7.6. Success messages
7.7. Natural conversation ids
7.8. Creating a natural conversation
7.9. Redirecting to a natural conversation
7.10. Workspace management
7.10.1. Workspace management and JSF navigation
7.10.2. Workspace management and jPDL pageflow
7.10.3. The conversation switcher
7.10.4. The conversation list
7.10.5. Breadcrumbs
7.11. Conversational components and JSF component bindings
7.12. Concurrent calls to conversational components
7.12.1. How should we design our conversational AJAX application?
7.12.2. Dealing with errors
7.12.3. RichFaces (Ajax4jsf)
8. Pageflows and business processes
8.1. Pageflow in Seam
8.1.1. The two navigation models
8.1.2. Seam and the back button
8.2. Using jPDL pageflows
8.2.1. Installing pageflows
8.2.2. Starting pageflows
8.2.3. Page nodes and transitions
8.2.4. Controlling the flow
8.2.5. Ending the flow
8.2.6. Pageflow composition
8.3. Business process management in Seam
8.4. Using jPDL business process definitions
8.4.1. Installing process definitions
8.4.2. Initializing actor ids
8.4.3. Initiating a business process
8.4.4. Task assignment
8.4.5. Task lists
8.4.6. Performing a task
9. Seam and Object/Relational Mapping
9.1. Introduction
9.2. Seam managed transactions
9.2.1. Disabling Seam-managed transactions
9.2.2. Configuring a Seam transaction manager
9.2.3. Transaction synchronization
9.3. Seam-managed persistence contexts
9.3.1. Using a Seam-managed persistence context with JPA
9.3.2. Using a Seam-managed Hibernate session
9.3.3. Seam-managed persistence contexts and atomic conversations
9.4. Using the JPA "delegate"
9.5. Using EL in EJB-QL/HQL
9.6. Using Hibernate filters
10. JSF form validation in Seam
11. Groovy integration
11.1. Groovy introduction
11.2. Writing Seam applications in Groovy
11.2.1. Writing Groovy components
11.2.2. seam-gen
11.3. Deployment
11.3.1. Deploying Groovy code
11.3.2. Native .groovy file deployment at development time
11.3.3. seam-gen
12. Writing your presentation layer using Apache Wicket
12.1. Adding Seam to your wicket application
12.1.1. Bijection
12.1.2. Orchestration
12.2. Setting up your project
12.2.1. Runtime instrumentation
12.2.2. Compile-time instrumentation
12.2.3. The @SeamWicketComponent annotation
12.2.4. Defining the Application
13. The Seam Application Framework
13.1. Introduction
13.2. Home objects
13.3. Query objects
13.4. Controller objects
14. Seam and JBoss Rules
14.1. Installing rules
14.2. Using rules from a Seam component
14.3. Using rules from a jBPM process definition
15. Security
15.1. Overview
15.2. Disabling Security
15.3. Authentication
15.3.1. Configuring an Authenticator component
15.3.2. Writing an authentication method
15.3.3. Writing a login form
15.3.4. Configuration Summary
15.3.5. Remember Me
15.3.6. Handling Security Exceptions
15.3.7. Login Redirection
15.3.8. HTTP Authentication
15.3.9. Advanced Authentication Features
15.4. Identity Management
15.4.1. Configuring IdentityManager
15.4.2. JpaIdentityStore
15.4.3. LdapIdentityStore
15.4.4. Writing your own IdentityStore
15.4.5. Authentication with Identity Management
15.4.6. Using IdentityManager
15.5. Error Messages
15.6. Authorization
15.6.1. Core concepts
15.6.2. Securing components
15.6.3. Security in the user interface
15.6.4. Securing pages
15.6.5. Securing Entities
15.6.6. Typesafe Permission Annotations
15.6.7. Typesafe Role Annotations
15.6.8. The Permission Authorization Model
15.6.9. RuleBasedPermissionResolver
15.6.10. PersistentPermissionResolver
15.7. Permission Management
15.7.1. PermissionManager
15.7.2. Permission checks for PermissionManager operations
15.8. SSL Security
15.8.1. Overriding the default ports
15.9. CAPTCHA
15.9.1. Configuring the CAPTCHA Servlet
15.9.2. Adding a CAPTCHA to a form
15.9.3. Customising the CAPTCHA algorithm
15.10. Security Events
15.11. Run As
15.12. Extending the Identity component
15.13. OpenID
15.13.1. Configuring OpenID
15.13.2. Presenting an OpenIdDLogin form
15.13.3. Logging in immediately
15.13.4. Deferring login
15.13.5. Logging out
16. Internationalization, localization and themes
16.1. Internationalizing your app
16.1.1. Application server configuration
16.1.2. Translated application strings
16.1.3. Other encoding settings
16.2. Locales
16.3.
16.4. Defining labels
16.5. Displaying labels
16.6. Faces messages
16.7. Timezones
16.8. Themes
16.9. Persisting locale and theme preferences via cookies
17. Seam Text
17.1. Basic fomatting
17.2. Entering code and text with special characters
17.3. Links
17.4. Entering HTML
18. iText PDF generation
18.1. Using PDF Support
18.1.1. Creating a document
18.1.2. Basic Text Elements
18.1.3. Headers and Footers
18.1.4. Chapters and Sections
18.1.5. Lists
18.1.6. Tables
18.1.7. Document Constants
18.2. Charting
18.3. Bar codes
18.4. Fill-in-forms
18.5. Rendering Swing/AWT components
18.6. Configuring iText
18.7. Further documentation
19. The Microsoft® Excel® spreadsheet application
19.1. The Microsoft® Excel® spreadsheet application support
19.2. Creating a simple workbook
19.3. Workbooks
19.4. Worksheets
19.5. Columns
19.6. Cells
19.6.1. Validation
19.6.2. Format masks
19.7. Formulas
19.8. Images
19.9. Hyperlinks
19.10. Headers and footers
19.11. Print areas and titles
19.12. Worksheet Commands
19.12.1. Grouping
19.12.2. Page breaks
19.12.3. Merging
19.13. Datatable exporter
19.14. Fonts and layout
19.14.1. Stylesheet links
19.14.2. Fonts
19.14.3. Borders
19.14.4. Background
19.14.5. Column settings
19.14.6. Cell settings
19.14.7. The datatable exporter
19.14.8. Layout examples
19.14.9. Limitations
19.15. Internationalization
19.16. Links and further documentation
20. RSS support
20.1. Installation
20.2. Generating feeds
20.3. Feeds
20.4. Entries
20.5. Links and further documentation
21. Email
21.1. Creating a message
21.1.1. Attachments
21.1.2. HTML/Text alternative part
21.1.3. Multiple recipients
21.1.4. Multiple messages
21.1.5. Templating
21.1.6. Internationalisation
21.1.7. Other Headers
21.2. Receiving emails
21.3. Configuration
21.3.1. mailSession
21.4. Meldware
21.5. Tags
22. Asynchronicity and messaging
22.1. Asynchronicity
22.1.1. Asynchronous methods
22.1.2. Asynchronous methods with the Quartz Dispatcher
22.1.3. Asynchronous events
22.1.4. Handling exceptions from asynchronous calls
22.2. Messaging in Seam
22.2.1. Configuration
22.2.2. Sending messages
22.2.3. Receiving messages using a message-driven bean
22.2.4. Receiving messages in the client
23. Caching
23.1. Using Caching in Seam
23.2. Page fragment caching
24. Web Services
24.1. Configuration and Packaging
24.2. Conversational Web Services
24.2.1. A Recommended Strategy
24.3. An example web service
24.4. RESTful HTTP webservices with RESTEasy
24.4.1. RESTEasy configuration and request serving
24.4.2. Resources and providers as Seam components
24.4.3. Securing resources
24.4.4. Mapping exceptions to HTTP responses
24.4.5. Testing resources and providers
25. Remoting
25.1. Configuration
25.2. The "Seam" object
25.2.1. A Hello World example
25.2.2. Seam.Component
25.2.3. Seam.Remoting
25.3. Evaluating EL Expressions
25.4. Client Interfaces
25.5. The Context
25.5.1. Setting and reading the Conversation ID
25.5.2. Remote calls within the current conversation scope
25.6. Batch Requests
25.7. Working with Data types
25.7.1. Primitives / Basic Types
25.7.2. JavaBeans
25.7.3. Dates and Times
25.7.4. Enums
25.7.5. Collections
25.8. Debugging
25.9. Handling Exceptions
25.10. The Loading Message
25.10.1. Changing the message
25.10.2. Hiding the loading message
25.10.3. A Custom Loading Indicator
25.11. Controlling what data is returned
25.11.1. Constraining normal fields
25.11.2. Constraining Maps and Collections
25.11.3. Constraining objects of a specific type
25.11.4. Combining Constraints
25.12. Transactional Requests
25.13. JMS Messaging
25.13.1. Configuration
25.13.2. Subscribing to a JMS Topic
25.13.3. Unsubscribing from a Topic
25.13.4. Tuning the Polling Process
26. Seam and the Google Web Toolkit
26.1. Configuration
26.2. Preparing your component
26.3. Hooking up a GWT widget to the Seam component
26.4. GWT Ant Targets
27. Spring Framework integration
27.1. Injecting Seam components into Spring beans
27.2. Injecting Spring beans into Seam components
27.3. Making a Spring bean into a Seam component
27.4. Seam-scoped Spring beans
27.5. Using Spring PlatformTransactionManagement
27.6. Using a Seam Managed Persistence Context in Spring
27.7. Using a Seam Managed Hibernate Session in Spring
27.8. Spring Application Context as a Seam Component
27.9. Using a Spring TaskExecutor for @Asynchronous
28. Guice integration
28.1. Creating a hybrid Seam-Guice component
28.2. Configuring an injector
28.3. Using multiple injectors
29. Hibernate Search
29.1. Introduction
29.2. Configuration
29.3. Usage
30. Configuring Seam and packaging Seam applications
30.1. Basic Seam configuration
30.1.1. Integrating Seam with JSF and your servlet container
30.1.2. Using Facelets
30.1.3. Seam Resource Servlet
30.1.4. Seam servlet filters
30.1.5. Integrating Seam with your EJB container
30.1.6. Don't forget!
30.2. Using Alternate JPA Providers
30.3. Configuring Seam in Java EE 5
30.3.1. Packaging
30.4. Configuring Seam in J2EE
30.4.1. Boostrapping Hibernate in Seam
30.4.2. Boostrapping JPA in Seam
30.4.3. Packaging
30.5. Configuring Seam in Java SE, without JBoss Embedded
30.6. Configuring Seam in Java SE, with JBoss Embedded
30.6.1. Installing Embedded JBoss
30.6.2. Packaging
30.7. Configuring jBPM in Seam
30.7.1. Packaging
30.8. Configuring SFSB and Session Timeouts in JBoss AS
30.9. Running Seam in a Portlet
30.10. Deploying custom resources
31. Seam annotations
31.1. Annotations for component definition
31.2. Annotations for bijection
31.3. Annotations for component lifecycle methods
31.4. Annotations for context demarcation
31.5. Annotations for use with Seam JavaBean components in a J2EE environment
31.6. Annotations for exceptions
31.7. Annotations for Seam Remoting
31.8. Annotations for Seam interceptors
31.9. Annotations for asynchronicity
31.10. Annotations for use with JSF
31.10.1. Annotations for use with dataTable
31.11. Meta-annotations for databinding
31.12. Annotations for packaging
31.13. Annotations for integrating with the servlet container
32. Built-in Seam components
32.1. Context injection components
32.2. JSF-related components
32.3. Utility components
32.4. Components for internationalization and themes
32.5. Components for controlling conversations
32.6. jBPM-related components
32.7. Security-related components
32.8. JMS-related components
32.9. Mail-related components
32.10. Infrastructural components
32.11. Miscellaneous components
32.12. Special components
33. Seam JSF controls
33.1. Tags
33.1.1. Navigation Controls
33.1.2. Converters and Validators
33.1.3. Formatting
33.1.4. Seam Text
33.1.5. Form support
33.1.6. Other
33.2. Annotations
34. JBoss EL
34.1. Parameterized Expressions
34.1.1. Usage
34.1.2. Limitations and Hints
34.2. Projection
35. Clustering and EJB Passivation
35.1. Clustering
35.1.1. Programming for clustering
35.1.2. Deploying a Seam application to a JBoss AS cluster with session replication
35.1.3. Validating the distributable services of an application running in a JBoss AS cluster
35.2. EJB Passivation and the ManagedEntityInterceptor
35.2.1. The friction between passivation and persistence
35.2.2. Case #1: Surviving EJB passivation
35.2.3. Case #2: Surviving HTTP session replication
35.2.4. ManagedEntityInterceptor wrap-up
36. Performance Tuning
36.1. Bypassing Interceptors
37. Testing Seam applications
37.1. Unit testing Seam components
37.2. Integration testing Seam components
37.2.1. Using mocks in integration tests
37.3. Integration testing Seam application user interactions
37.3.1. Configuration
37.3.2. Using SeamTest with another test framework
37.3.3. Integration Testing with Mock Data
37.3.4. Integration Testing Seam Mail
38. Seam tools
38.1. jBPM designer and viewer
38.1.1. Business process designer
38.1.2. Pageflow viewer
39. Seam on BEA's Weblogic
39.1. Installation and operation of Weblogic
39.1.1. Installing 10.3
39.1.2. Creating your Weblogic domain
39.1.3. How to Start/Stop/Access your domain
39.1.4. Setting up Weblogic's JSF Support
39.2. The jee5/booking Example
39.2.1. EJB3 Issues with Weblogic
39.2.2. Getting the jee5/booking Working
39.3. The jpa booking example
39.3.1. Building and deploying jpa booking example
39.3.2. What's different with Weblogic 10.x
39.4. Deploying an application created using seam-gen on Weblogic 10.x
39.4.1. Running seam-gen setup
39.4.2. What to change for Weblogic 10.X
39.4.3. Building and Deploying your application
40. Seam on IBM's Websphere AS
40.1. Websphere AS environment and deployment information
40.1.1. Installation versions
40.2. The jee5/booking example
40.2.1. Configuration file changes
40.2.2. Building the jee5/booking example
40.2.3. Deploying the application to Websphere
40.3. The jpa booking example
40.3.1. Building the jpa example
40.3.2. Deploying the jpa example
40.3.3. What's different for Websphere AS V7
40.4. Deploying an application created using seam-gen on Websphere V7
40.4.1. Running seam-gen Setup
40.4.2. Changes needed for deployment to Websphere
41. Seam on GlassFish application server
41.1. GlassFish environment and deployment information
41.1.1. Installation
41.2. The jee5/booking example
41.2.1. Building the jee5/booking example
41.2.2. Deploying the application to GlassFish
41.3. The jpa booking example
41.3.1. Building the jpa example
41.3.2. Deploying the jpa example
41.3.3. What's different for GlassFish v2 UR2
41.4. Deploying an application generated by seam-gen on GlassFish v2 UR2
41.4.1. Running seam-gen Setup
41.4.2. Changes needed for deployment to GlassFish
42. Dependencies
42.1. JDK Dependencies
42.1.1. Sun's JDK 6 Considerations
42.2. Project Dependencies
42.2.1. Core
42.2.2. RichFaces
42.2.3. Seam Mail
42.2.4. Seam PDF
42.2.5. Seam Microsoft® Excel®
42.2.6. Seam RSS support
42.2.7. JBoss Rules
42.2.8. JBPM
42.2.9. GWT
42.2.10. Spring
42.2.11. Groovy
42.3. Dependency Management using Maven