Red Hat JBoss Web Framework Kit 2.7

Seam Guide

for use with Red Hat JBoss Enterprise Application Platform

Red Hat Customer Content Services

Abstract

This book is a reference guide for the Seam framework shipped with Red Hat JBoss Web Framework Kit, and its patch releases.
1. Seam Deprecation
2. Introduction to Red Hat JBoss Web Framework Kit
2.1. About Red Hat JBoss Web Framework Kit
2.2. About the JBoss Web Framework Kit Tiers
2.3. About the JBoss Web Framework Kit Distribution
3. Seam Tutorial
3.1. Using the Seam examples
3.1.1. Running the examples on Red Hat JBoss Enterprise Application Platform
3.1.2. Running the example tests
3.2. Your first Seam application: the registration example
3.2.1. Understanding the code
3.2.2. How it works
3.3. Clickable lists in Seam: the messages example
3.3.1. Understanding the code
3.3.2. How it works
3.4. A complete Seam application: the Hotel Booking example
3.4.1. Introduction
3.4.2. Overview of the booking example
3.4.3. Understanding Seam conversations
3.4.4. The Seam Debug Page
3.5. Nested conversations: extending the Hotel Booking example
3.5.1. Introduction
3.5.2. Understanding Nested Conversations
3.6. Bookmarkable URLs with the Blog example
3.6.1. Using "pull"-style MVC
3.6.2. Bookmarkable search results page
3.6.3. Using "push"-style MVC in a RESTful application
4. Migration from 2.2 to 2.3
4.1. Migration of XML Schemas
4.1.1. Seam schema migration
4.1.2. Java EE 6 schema changes
4.2. Java EE 6 upgrade
4.2.1. Using Bean Validation standard instead of Hibernate Validator
4.2.2. Migration of JSF 1 to JSF 2 Facelets templates
4.2.3. Using s:validate and s:validateAll in JSF 2
4.2.4. Migration to JPA 2.0
4.2.5. Using compatible JNDI for resources
4.3. Red Hat JBoss Enterprise Application Platform 6 deployment
4.3.1. Deployment changes
4.3.2. Datasource migration
4.4. Changes in the testing framework
4.5. Moving from JBoss Cache to Infinispan Tree
4.6. Dependency changes when using Maven
4.6.1. Seam Bill of Materials
5. Getting started with seam-gen
5.1. Before you start
5.2. Setting up a new project
5.3. Creating a new action
5.4. Creating a form with an action
5.5. Generating an application from an existing database
5.6. Generating an application from existing JPA/EJB3 entities
5.7. Deploying the application as an EAR
5.8. Seam and incremental hot deployment
6. The contextual component model
6.1. Seam contexts
6.1.1. Stateless context
6.1.2. Event context
6.1.3. Page context
6.1.4. Conversation context
6.1.5. Session context
6.1.6. Application context
6.1.7. Context variables
6.1.8. Context search priority
6.1.9. Concurrency model
6.2. Seam components
6.2.1. Stateless session beans
6.2.2. Stateful session beans
6.2.3. Entity beans
6.2.4. JavaBeans
6.2.5. Message-driven beans
6.2.6. Interception
6.2.7. Component names
6.2.8. Defining the component scope
6.2.9. Components with multiple roles
6.2.10. Built-in components
6.3. Bijection
6.4. Life cycle methods
6.5. Conditional installation
6.6. Logging
6.7. The Mutable interface and @ReadOnly
6.8. Factory and manager components
7. Configuring Seam components
7.1. Configuring components through property settings
7.2. Configuring components via components.xml
7.3. Fine-grained configuration files
7.4. Configurable property types
7.5. Using XML Namespaces
8. Events, interceptors and exception handling
8.1. Seam events
8.2. Page actions
8.3. Page parameters
8.3.1. Mapping request parameters to the model
8.4. Propagating request parameters
8.5. URL rewriting with page parameters
8.6. Conversion and Validation
8.7. Navigation
8.8. Fine-grained files for defining navigation, page actions and parameters
8.9. Component-driven events
8.10. Contextual events
8.11. Seam interceptors
8.12. Managing exceptions
8.12.1. Exceptions and transactions
8.12.2. Enabling Seam exception handling
8.12.3. Using annotations for exception handling
8.12.4. Using XML for exception handling
8.12.5. Some common exceptions
9. Conversations and workspace management
9.1. Seam's conversation model
9.2. Nested conversations
9.3. Starting conversations with GET requests
9.4. Requiring a long-running conversation
9.5. Using <s:link> and <s:button>
9.6. Success messages
9.7. Natural conversation IDs
9.8. Creating a natural conversation
9.9. Redirecting to a natural conversation
9.10. Workspace management
9.10.1. Workspace management and JSF navigation
9.10.2. The conversation switcher
9.10.3. The conversation list
9.10.4. Breadcrumbs
9.11. Conversational components and JSF component bindings
9.12. Concurrent calls to conversational components
9.12.1. How should we design our conversational AJAX application?
9.12.2. Dealing with errors
9.12.3. RichFaces (Ajax4jsf)
10. Seam and Object/Relational Mapping
10.1. Introduction
10.2. Seam managed transactions
10.2.1. Disabling Seam-managed transactions
10.2.2. Configuring a Seam transaction manager
10.2.3. Transaction synchronization
10.3. Seam-managed persistence contexts
10.3.1. Using a Seam-managed persistence context with JPA
10.3.2. Using a Seam-managed Hibernate session
10.3.3. Seam-managed persistence contexts and atomic conversations
10.4. Using the JPA "delegate"
10.5. Using EL in EJB-QL/HQL
10.6. Using Hibernate filters
11. JSF form validation in Seam
12. Groovy integration
12.1. Groovy introduction
12.2. Writing Seam applications in Groovy
12.2.1. Writing Groovy components
12.2.2. Seam component
12.2.3. seam-gen
12.3. Deployment
12.3.1. Deploying Groovy code
12.3.2. Native .groovy file deployment at development time
12.3.3. seam-gen
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
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. Customizing 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 OpenIdLogin form
15.13.3. Logging in immediately
15.13.4. Deferring log in
15.13.5. Logging out
16. Internationalization, localization and themes
16.1. Internationalizing your application
16.1.1. Application server configuration
16.1.2. Translated application strings
16.1.3. Other encoding settings
16.2. Locales
16.3. Labels
16.3.1. Defining labels
16.3.2. Displaying labels
16.3.3. Faces messages
16.4. Timezones
16.5. Themes
16.6. Persisting locale and theme preferences via cookies
17. Seam Text
17.1. Basic formatting
17.2. Entering code and text with special characters
17.3. Links
17.4. Entering HTML
17.5. Using the SeamTextParser
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. Microsoft Excel 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. Limitations
19.15. Internationalization
19.16. Links and further documentation
20. Email
20.1. Creating a message
20.1.1. Attachments
20.1.2. HTML/Text alternative part
20.1.3. Multiple recipients
20.1.4. Multiple messages
20.1.5. Templating
20.1.6. Internationalization
20.1.7. Other Headers
20.2. Configuration
20.2.1. mailSession
20.3. Tags
21. Asynchronicity and messaging
21.1. Asynchronicity
21.1.1. Asynchronous methods
21.1.2. Asynchronous methods with the Quartz Dispatcher
21.1.3. Asynchronous events
21.1.4. Handling exceptions from asynchronous calls
21.2. Messaging in Seam
21.2.1. Configuration
21.2.2. Sending messages
21.2.3. Receiving messages using a message-driven bean
21.2.4. Receiving messages in the client
22. Caching
22.1. Using Caching in Seam
22.2. Page fragment caching
23. Web Services
23.1. Configuration and Packaging
23.2. Conversational Web Services
23.2.1. A Recommended Strategy
23.3. An example web service
23.4. RESTful HTTP web services with RESTEasy
23.4.1. RESTEasy configuration and request serving
23.4.2. Resources and providers as Seam components
23.4.3. Securing resources
23.4.4. Mapping exceptions to HTTP responses
23.4.5. Exposing entities via RESTful API
24. Remoting
24.1. Configuration
24.2. The Seam object
24.2.1. A Hello World example
24.2.2. Seam.Component
24.2.3. Seam.Remoting
24.3. Evaluating EL Expressions
24.4. Client Interfaces
24.5. The Context
24.5.1. Setting and reading the Conversation ID
24.5.2. Remote calls within the current conversation scope
24.6. Batch Requests
24.7. Working with Data types
24.7.1. Primitives / Basic Types
24.7.2. JavaBeans
24.7.3. Dates and Times
24.7.4. Enums
24.7.5. Collections
24.8. Debugging
24.9. Handling Exceptions
24.10. The Loading Message
24.10.1. Changing the message
24.10.2. Hiding the loading message
24.10.3. A Custom Loading Indicator
24.11. Controlling what data is returned
24.11.1. Constraining normal fields
24.11.2. Constraining Maps and Collections
24.11.3. Constraining objects of a specific type
24.11.4. Combining Constraints
24.12. Transactional Requests
24.13. JMS Messaging
24.13.1. Configuration
24.13.2. Subscribing to a JMS Topic
24.13.3. Unsubscribing from a Topic
24.13.4. Tuning the Polling Process
25. Seam and the Google Web Toolkit
25.1. Configuration
25.2. Preparing your component
25.3. Hooking up a GWT widget to the Seam component
25.4. GWT Ant Targets
25.5. GWT Maven plugin
26. Spring Framework integration
26.1. Injecting Seam components into Spring beans
26.2. Injecting Spring beans into Seam components
26.3. Making a Spring bean into a Seam component
26.4. Seam-scoped Spring beans
26.5. Using Spring PlatformTransactionManagement
26.6. Using a Seam-Managed Persistence Context in Spring
26.7. Using a Seam-Managed Hibernate Session in Spring
26.8. Spring Application Context as a Seam Component
26.9. Using a Spring TaskExecutor for @Asynchronous
27. Hibernate Search
27.1. Introduction
27.2. Configuration
27.3. Usage
28. Configuring Seam and packaging Seam applications
28.1. Basic Seam configuration
28.1.1. Integrating Seam with JSF and your servlet container
28.1.2. Seam Resource Servlet
28.1.3. Seam Servlet filters
28.1.4. Integrating Seam with your EJB container
28.1.5. Remember
28.2. Using Alternate JPA Providers
28.3. Configuring Seam in Java EE 6
28.3.1. Packaging
28.4. Configuring Seam without EJB
28.4.1. Boostrapping Hibernate in Seam
28.4.2. Boostrapping JPA in Seam
28.4.3. Packaging
28.5. Configuring Seam in Java SE
28.6. Deployment in Red Hat JBoss Enterprise Application Platform 6
28.7. Configuring SFSB and Session Timeouts in Red Hat JBoss Enterprise Application Platform 6
28.8. Running Seam in a Portlet
28.9. Deploying custom resources
29. Seam annotations
29.1. Annotations for component definition
29.2. Annotations for bijection
29.3. Annotations for component life cycle methods
29.4. Annotations for context demarcation
29.5. Annotations for use with Seam JavaBean components in a J2EE environment
29.6. Annotations for exceptions
29.7. Annotations for Seam Remoting
29.8. Annotations for Seam interceptors
29.9. Annotations for asynchronicity
29.10. Annotations for use with JSF
29.10.1. Annotations for use with dataTable
29.11. Meta-annotations for databinding
29.12. Annotations for packaging
29.13. Annotations for integrating with the Servlet container
30. Built-in Seam components
30.1. Context injection components
30.2. JSF-related components
30.3. Utility components
30.4. Components for internationalization and themes
30.5. Components for controlling conversations
30.6. Security-related components
30.7. JMS-related components
30.8. Mail-related components
30.9. Infrastructural components
30.10. Miscellaneous components
30.11. Special components
31. Seam JSF controls
31.1. Tags
31.1.1. Navigation Controls
31.1.2. Converters and Validators
31.1.3. Formatting
31.1.4. Seam Text
31.1.5. Form support
31.1.6. Other
31.2. Annotations
32. JBoss EL
32.1. Parameterized Expressions
32.1.1. Usage
32.1.2. Limitations and Hints
32.2. Projection
33. Performance Tuning
33.1. Bypassing Interceptors
34. Testing Seam applications
34.1. Unit testing Seam components
34.2. Integration testing Seam components
34.2.1. Configuration
34.2.2. Using JUnitSeamTest with Arquillian
34.2.3. Integration testing Seam application user interactions
35. Dependencies
35.1. JDK Dependencies
35.1.1. Oracle's JDK 6 Considerations
35.2. Project Dependencies
35.2.1. Core
35.2.2. RichFaces
35.2.3. Seam PDF
35.2.4. Seam Microsoft®Excel®
35.2.5. Drools
35.2.6. GWT
35.2.7. Groovy
35.3. Dependency Management using Maven
36. Migration from Seam 2 to Java EE and Alternatives
36.1. Initialization and life cycle callbacks
36.2. Scopes and contexts
36.3. @Install
36.4. Entities
36.5. @Startup
36.6. Special injection
36.6.1. @RequestParameter
36.6.2. Logger
36.6.3. @DataModel
36.7. XML Configuration
36.7.1. Other methods of configuration
36.8. Events
36.9. Interceptors
36.10. Seam Navigation migration to JSF
36.11. Seam 2 UI controls migration to JSF
36.12. Seam 2 components
36.12.1. Asynchronicity
36.12.2. Bijection
36.13. Security
36.13.1. Authentication
36.13.2. Authorization
36.13.3. Identity Management
36.13.4. Captcha support
36.13.5. Migrating Seam 2 Security annotations
A. Revision History