JBoss.org Community Documentation

Seam - Contextual Components

A Framework for Enterprise Java

by Gavin King (Project Lead), Pete Muir, Norman Richards, Shane Bryzak, Michael Yuan, Mike Youngstrom, Christian Bauer, Jay Balunas, Dan Allen, Max Rydahl Andersen, and Emmanuel Bernard
edited by Samson Kittoli
and thanks to James Cobb (Graphic Design), Cheyenne Weaver (Graphic Design), Mark Newton, and Steve Ebersole

2.0.2.CR1


Introduction to JBoss Seam
1. Contribute to Seam
1. Seam Tutorial
1.1. Try the 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 UI control library
1.6.5. The Seam Debug Page
1.7. A complete application featuring Seam and jBPM: the DVD Store example
1.8. An example of Seam with Hibernate: the Hibernate Booking example
1.9. A RESTful Seam application: 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 Eclipse 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. The contextual component model
3.1. Seam contexts
3.1.1. Stateless context
3.1.2. Event context
3.1.3. Page context
3.1.4. Conversation context
3.1.5. Session context
3.1.6. Business process context
3.1.7. Application context
3.1.8. Context variables
3.1.9. Context search priority
3.1.10. Concurrency model
3.2. Seam components
3.2.1. Stateless session beans
3.2.2. Stateful session beans
3.2.3. Entity beans
3.2.4. JavaBeans
3.2.5. Message-driven beans
3.2.6. Interception
3.2.7. Component names
3.2.8. Defining the component scope
3.2.9. Components with multiple roles
3.2.10. Built-in components
3.3. Bijection
3.4. Lifecycle methods
3.5. Conditional installation
3.6. Logging
3.7. The Mutable interface and @ReadOnly
3.8. Factory and manager components
4. Configuring Seam components
4.1. Configuring components via property settings
4.2. Configuring components via components.xml
4.3. Fine-grained configuration files
4.4. Configurable property types
4.5. Using XML Namespaces
5. Events, interceptors and exception handling
5.1. Seam events
5.2. Page actions
5.3. Page parameters
5.3.1. Mapping request parameters to the model
5.4. Propagating request parameters
5.5. Conversion and Validation
5.6. Navigation
5.7. Fine-grained files for definition of navigation, page actions and parameters
5.8. Component-driven events
5.9. Contextual events
5.10. Seam interceptors
5.11. Managing exceptions
5.11.1. Exceptions and transactions
5.11.2. Enabling Seam exception handling
5.11.3. Using annotations for exception handling
5.11.4. Using XML for exception handling
5.11.5. Some common exceptions
6. Conversations and workspace management
6.1. Seam's conversation model
6.2. Nested conversations
6.3. Starting conversations with GET requests
6.4. Using <s:link> and <s:button>
6.5. Success messages
6.6. Natural conversation ids
6.7. Creating a natural conversation
6.8. Redirecting to a natural conversation
6.9. Workspace management
6.9.1. Workspace management and JSF navigation
6.9.2. Workspace management and jPDL pageflow
6.9.3. The conversation switcher
6.9.4. The conversation list
6.9.5. Breadcrumbs
6.10. Conversational components and JSF component bindings
6.11. Concurrent calls to conversational components
6.11.1. RichFaces Ajax
7. Pageflows and business processes
7.1. Pageflow in Seam
7.1.1. The two navigation models
7.1.2. Seam and the back button
7.2. Using jPDL pageflows
7.2.1. Installing pageflows
7.2.2. Starting pageflows
7.2.3. Page nodes and transitions
7.2.4. Controlling the flow
7.2.5. Ending the flow
7.2.6. Pageflow composition
7.3. Business process management in Seam
7.4. Using jPDL business process definitions
7.4.1. Installing process definitions
7.4.2. Initializing actor ids
7.4.3. Initiating a business process
7.4.4. Task assignment
7.4.5. Task lists
7.4.6. Performing a task
8. Seam and Object/Relational Mapping
8.1. Introduction
8.2. Seam managed transactions
8.2.1. Disabling Seam-managed transactions
8.2.2. Configuring a Seam transaction manager
8.2.3. Transaction synchronization
8.3. Seam-managed persistence contexts
8.3.1. Using a Seam-managed persistence context with JPA
8.3.2. Using a Seam-managed Hibernate session
8.3.3. Seam-managed persistence contexts and atomic conversations
8.4. Using the JPA "delegate"
8.5. Using EL in EJB-QL/HQL
8.6. Using Hibernate filters
9. JSF form validation in Seam
10. Groovy integration
10.1. Groovy introduction
10.2. Writing Seam applications in Groovy
10.2.1. Writing Groovy components
10.2.2. seam-gen
10.3. Deployment
10.3.1. Deploying Groovy code
10.3.2. Native .groovy file deployment at development time
10.3.3. seam-gen
11. The Seam Application Framework
11.1. Introduction
11.2. Home objects
11.3. Query objects
11.4. Controller objects
12. Seam and JBoss Rules
12.1. Installing rules
12.2. Using rules from a Seam component
12.3. Using rules from a jBPM process definition
13. Security
13.1. Overview
13.1.1. Which mode is right for my application?
13.2. Requirements
13.3. Disabling Security
13.4. Authentication
13.4.1. Configuration
13.4.2. Writing an authentication method
13.4.3. Writing a login form
13.4.4. Simplified Configuration - Summary
13.4.5. Handling Security Exceptions
13.4.6. Login Redirection
13.4.7. HTTP Authentication
13.4.8. Advanced Authentication Features
13.5. Error Messages
13.6. Authorization
13.6.1. Core concepts
13.6.2. Securing components
13.6.3. Security in the user interface
13.6.4. Securing pages
13.6.5. Securing Entities
13.7. Writing Security Rules
13.7.1. Permissions Overview
13.7.2. Configuring a rules file
13.7.3. Creating a security rules file
13.8. SSL Security
13.9. CAPTCHA
13.9.1. Configuring the CAPTCHA Servlet
13.9.2. Adding a CAPTCHA to a form
13.9.3. Customising the CAPTCHA algorithm
13.10. Security Events
13.11. Run As
13.12. Extending the Identity component
13.13. Identity Management
13.13.1. Configuration
13.13.2. JPAIdentityStore
13.13.3. Authentication with the Identity Management API
13.13.4. Using the IdentityManager API
13.13.5. Seam-gen and Identity Management
14. Internationalization and themes
14.1. Locales
14.2. Labels
14.2.1. Defining labels
14.2.2. Displaying labels
14.2.3. Faces messages
14.3. Timezones
14.4. Themes
14.5. Persisting locale and theme preferences via cookies
15. Seam Text
15.1. Basic fomatting
15.2. Entering code and text with special characters
15.3. Links
15.4. Entering HTML
16. iText PDF generation
16.1. Using PDF Support
16.1.1. Creating a document
16.1.2. Basic Text Elements
16.1.3. Headers and Footers
16.1.4. Chapters and Sections
16.1.5. Lists
16.1.6. Tables
16.1.7. Document Constants
16.1.8. Configuring iText
16.2. Charting
16.3. Bar codes
16.4. Rendering Swing/AWT components
16.5. Further documentation
17. Email
17.1. Creating a message
17.1.1. Attachments
17.1.2. HTML/Text alternative part
17.1.3. Multiple recipients
17.1.4. Multiple messages
17.1.5. Templating
17.1.6. Internationalisation
17.1.7. Other Headers
17.2. Receiving emails
17.3. Configuration
17.3.1. mailSession
17.4. Meldware
17.5. Tags
18. Asynchronicity and messaging
18.1. Asynchronicity
18.1.1. Asynchronous methods
18.1.2. Asynchronous methods with the Quartz Dispatcher
18.1.3. Asynchronous events
18.2. Messaging in Seam
18.2.1. Configuration
18.2.2. Sending messages
18.2.3. Receiving messages using a message-driven bean
18.2.4. Receiving messages in the client
19. Caching
19.1. Using JBossCache in Seam
19.2. Page fragment caching
20. Web Services
20.1. Configuration and Packaging
20.2. Conversational Web Services
20.2.1. A Recommended Strategy
20.3. An example web service
21. Remoting
21.1. Configuration
21.2. The "Seam" object
21.2.1. A Hello World example
21.2.2. Seam.Component
21.2.3. Seam.Remoting
21.3. Evaluating EL Expressions
21.4. Client Interfaces
21.5. The Context
21.5.1. Setting and reading the Conversation ID
21.5.2. Remote calls within the current conversation scope
21.6. Batch Requests
21.7. Working with Data types
21.7.1. Primitives / Basic Types
21.7.2. JavaBeans
21.7.3. Dates and Times
21.7.4. Enums
21.7.5. Collections
21.8. Debugging
21.9. The Loading Message
21.9.1. Changing the message
21.9.2. Hiding the loading message
21.9.3. A Custom Loading Indicator
21.10. Controlling what data is returned
21.10.1. Constraining normal fields
21.10.2. Constraining Maps and Collections
21.10.3. Constraining objects of a specific type
21.10.4. Combining Constraints
21.11. JMS Messaging
21.11.1. Configuration
21.11.2. Subscribing to a JMS Topic
21.11.3. Unsubscribing from a Topic
21.11.4. Tuning the Polling Process
22. Seam and the Google Web Toolkit
22.1. Configuration
22.2. Preparing your component
22.3. Hooking up a GWT widget to the Seam component
22.4. GWT Ant Targets
23. Spring Framework integration
23.1. Injecting Seam components into Spring beans
23.2. Injecting Spring beans into Seam components
23.3. Making a Spring bean into a Seam component
23.4. Seam-scoped Spring beans
23.5. Using Spring PlatformTransactionManagement
23.6. Using a Seam Managed Persistence Context in Spring
23.7. Using a Seam Managed Hibernate Session in Spring
23.8. Spring Application Context as a Seam Component
23.9. Using a Spring TaskExecutor for @Asynchronous
24. Hibernate Search
24.1. Introduction
24.2. Configuration
24.3. Usage
25. Configuring Seam and packaging Seam applications
25.1. Basic Seam configuration
25.1.1. Integrating Seam with JSF and your servlet container
25.1.2. Using facelets
25.1.3. Seam Resource Servlet
25.1.4. Seam servlet filters
25.1.5. Integrating Seam with your EJB container
25.1.6. Don't forget!
25.2. Using Alternate JPA Providers
25.3. Configuring Seam in Java EE 5
25.3.1. Packaging
25.4. Configuring Seam in J2EE
25.4.1. Boostrapping Hibernate in Seam
25.4.2. Boostrapping JPA in Seam
25.4.3. Packaging
25.5. Configuring Seam in Java SE, without JBoss Embedded
25.6. Configuring Seam in Java SE, with JBoss Embedded
25.6.1. Installing Embedded JBoss
25.6.2. Packaging
25.7. Configuring jBPM in Seam
25.7.1. Packaging
25.8. Configuring SFSB and Session Timeouts in JBoss AS
25.9. Running Seam in a Portlet
26. Seam annotations
26.1. Annotations for component definition
26.2. Annotations for bijection
26.3. Annotations for component lifecycle methods
26.4. Annotations for context demarcation
26.5. Annotations for use with Seam JavaBean components in a J2EE environment
26.6. Annotations for exceptions
26.7. Annotations for Seam Remoting
26.8. Annotations for Seam interceptors
26.9. Annotations for asynchronicity
26.10. Annotations for use with JSF
26.10.1. Annotations for use with dataTable
26.11. Meta-annotations for databinding
26.12. Annotations for packaging
26.13. Annotations for integrating with the servlet container
27. Built-in Seam components
27.1. Context injection components
27.2. Utility components
27.3. Components for internationalization and themes
27.4. Components for controlling conversations
27.5. jBPM-related components
27.6. Security-related components
27.7. JMS-related components
27.8. Mail-related components
27.9. Infrastructural components
27.10. Miscellaneous components
27.11. Special components
28. Seam JSF controls
28.1. Tags
28.2. Annotations
29. JBoss EL
29.1. Parameterized Expressions
29.1.1. Usage
29.1.2. Limitations and Hints
29.2. Projection
30. Testing Seam applications
30.1. Unit testing Seam components
30.2. Integration testing Seam components
30.2.1. Using mocks in integration tests
30.3. Integration testing Seam application user interactions
30.3.1. Configuration
30.3.2. Using SeamTest with another test framework
30.3.3. Integration Testing with Mock Data
30.3.4. Integration Testing Seam Mail
31. Seam tools
31.1. jBPM designer and viewer
31.1.1. Business process designer
31.1.2. Pageflow viewer
32. Seam on OC4J
32.1. Installation and operation of OC4J
32.2. The jee5/booking example
32.2.1. Booking Example Dependencies
32.2.2. Configuration file changes
32.2.3. Building the jee5/booking example
32.3. Deploying the Seam application to OC4J
32.4. Deploying an application created using seam-gen to OC4J
32.4.1. Generating a basic seam-gen application
32.4.2. Changes needed for deployment to OC4J
32.4.3. Building and deploying the seam-gen'd application to OC4J
32.4.4. Extending example with reverse engineered CRUD and Drools
32.5. Finishing up
33. Seam on BEA's Weblogic
33.1. Installation and operation of Weblogic
33.1.1. Installing 10.3.TP
33.1.2. Creating your Weblogic domain
33.1.3. How to Start/Stop/Access your domain
33.2. The jee5/booking example
33.2.1. EJB Blockers with Weblogic
33.2.2. The jee5/booking example
33.3. The jpa booking example
33.3.1. Building and deploying jpa booking example
33.3.2. What's different with Weblogic 10.x
33.4. Deploying an application created using seam-gen on Weblogic 10.x
33.4.1. Running seam-gen setup
33.4.2. What to change for Weblogic 10.X
33.4.3. Building and Deploying your application
34. Seam on IBM's Websphere
34.1. Websphere environment and deployment information
34.1.1. Installation versions and tips
34.1.2. Required custom properties
34.2. The jee5/booking example
34.2.1. Configuration file changes
34.2.2. Building the jee5/booking example
34.2.3. Deploying the application to Websphere
34.3. The jpa booking example
34.3.1. Building the jpa example
34.3.2. Deploying the jpa example
34.3.3. Whats different for Websphere 6.1
34.4. Deploying an application created using seam-gen on Websphere 6.1.0.13
34.4.1. Running seam-gen Setup
34.4.2. Changes needed for deployment to Websphere
35. Dependencies
35.1. Project Dependencies
35.1.1. Core
35.1.2. RichFaces
35.1.3. Seam Mail
35.1.4. Seam PDF
35.1.5. JBoss Rules
35.1.6. JBPM
35.1.7. GWT
35.1.8. Spring
35.1.9. Groovy
35.2. Dependency Management using Maven