Seam - Contextual Components

A Framework for Java EE 5

1.2.0.GA


Table of Contents

Introduction to JBoss 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.1.1. The entity bean: User.java
1.2.1.2. The stateless session bean class: RegisterAction.java
1.2.1.3. The session bean local interface: Register.java
1.2.1.4. The Seam component deployment descriptor: components.xml
1.2.1.5. The web deployment description: web.xml
1.2.1.6. The JSF configration: faces-config.xml
1.2.1.7. The EJB deployment descriptor: ejb-jar.xml
1.2.1.8. The EJB persistence deployment descriptor: persistence.xml
1.2.1.9. The view: register.jsp and registered.jsp
1.2.1.10. The EAR deployment descriptor: application.xml
1.2.2. How it works
1.3. Clickable lists in Seam: the messages example
1.3.1. Understanding the code
1.3.1.1. The entity bean: Message.java
1.3.1.2. The stateful session bean: MessageManagerBean.java
1.3.1.3. The session bean local interface: MessageManager.java
1.3.1.4. The view: messages.jsp
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. A complete application featuring Seam workspace management: the Issue Tracker example
1.9. An example of Seam with Hibernate: the Hibernate Booking example
1.10. A RESTful Seam application: the Blog example
1.10.1. Using "pull"-style MVC
1.10.2. Bookmarkable search results page
1.10.3. Using "push"-style MVC in a RESTful application
1.11. Running the Seam examples in JBoss using the JSF 1.2 RI
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. Deploying the application as an EAR
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.1.1. Page actions
5.1.1.1. Page parameters
5.1.1.2. Navigation
5.1.1.3. Fine-grained files for definition of navigation, page actions and parameters
5.1.2. Component-driven events
5.1.3. Contextual events
5.2. Seam interceptors
5.3. Managing exceptions
5.3.1. Exceptions and transactions
5.3.2. Enabling Seam exception handling
5.3.3. Using annotations for exception handling
5.3.4. Using XML for exception handling
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. Using an "explicit" conversation id
6.7. Workspace management
6.7.1. Workspace management and JSF navigation
6.7.2. Workspace management and jPDL pageflow
6.7.3. The conversation switcher
6.7.4. The conversation list
6.7.5. Breadcrumbs
6.8. Conversational components and JSF component bindings
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.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. Enabling Seam-managed transactions
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. The Seam Application Framework
10.1. Introduction
10.2. Home objects
10.3. Query objects
10.4. Controller objects
11. Seam and JBoss Rules
11.1. Installing rules
11.2. Using rules from a Seam component
11.3. Using rules from a jBPM process definition
12. Security
12.1. Overview
12.1.1. Which mode is right for my application?
12.2. Requirements
12.3. Authentication
12.3.1. Configuration
12.3.2. Writing an authentication method
12.3.3. Writing a login form
12.3.4. Simplified Configuration - Summary
12.3.5. Handling Security Exceptions
12.3.6. Login Redirection
12.3.7. Advanced Authentication Features
12.3.7.1. Using your container's JAAS configuration
12.4. Authorization
12.4.1. Core concepts
12.4.2. Securing components
12.4.2.1. The @Restrict annotation
12.4.2.2. Inline restrictions
12.4.3. Security in the user interface
12.4.4. Securing pages
12.4.5. Securing Entities
12.4.5.1. Entity security with JPA
12.4.5.2. Entity security with Hibernate
12.5. Writing Security Rules
12.5.1. Permissions Overview
12.5.2. Configuring a rules file
12.5.3. Creating a security rules file
12.6. SSL Security
12.7. Implementing a Captcha Test
12.7.1. Configuring the Captcha Servlet
12.7.2. Adding a Captcha to a page
13. Internationalization and themes
13.1. Locales
13.2. Labels
13.2.1. Defining labels
13.2.2. Displaying labels
13.2.3. Faces messages
13.3. Timezones
13.4. Themes
13.5. Persisting locale and theme preferences via cookies
14. Seam Text
14.1. Basic fomatting
14.2. Entering code and text with special characters
14.3. Links
14.4. Entering HTML
15. iText PDF generation
15.1. Using PDF Support
15.2. Creating a document
15.2.1. p:document
15.3. Basic Text Elements
15.3.1. p:paragraph
15.3.2. p:text
15.3.3. p:font
15.3.4. p:newPage
15.3.5. p:image
15.3.6. p:anchor
15.4. Headers and Footers
15.4.1. p:header and p:footer
15.4.2. p:pageNumber
15.5. Chapters and Sections
15.5.1. p:chapter and p:section
15.5.2. p:title
15.6. Lists
15.6.1. p:list
15.6.2. p:listItem
15.7. Tables
15.7.1. p:table
15.7.2. p:cell
15.8. Document Constants
15.8.1. Color Values
15.8.2. Alignment Values
15.9. Configuring iText
15.10. iText links
16. Email
16.1. Creating a message
16.1.1. Attachments
16.1.2. HTML/Text alternative part
16.1.3. Multiple recipients
16.1.4. Multiple messages
16.1.5. Templating
16.1.6. Other Headers
16.2. Receiving emails
16.3. Configuration
16.3.1. mailSession
16.3.1.1. JNDI lookup in JBoss AS
16.3.1.2. Seam configured Session
16.4. Tags
17. Asynchronicity and messaging
17.1. Asynchronicity
17.1.1. Asynchronous methods
17.1.2. Asynchronous events
17.2. Messaging in Seam
17.2.1. Configuration
17.2.2. Sending messages
17.2.3. Receiving messages using a message-driven bean
17.2.4. Receiving messages in the client
18. Caching
18.1. Using JBossCache in Seam
18.2. Page fragment caching
19. Remoting
19.1. Configuration
19.2. The "Seam" object
19.2.1. A Hello World example
19.2.2. Seam.Component
19.2.2.1. Seam.Component.newInstance()
19.2.2.2. Seam.Component.getInstance()
19.2.2.3. Seam.Component.getComponentName()
19.2.3. Seam.Remoting
19.2.3.1. Seam.Remoting.createType()
19.2.3.2. Seam.Remoting.getTypeName()
19.3. Client Interfaces
19.4. The Context
19.4.1. Setting and reading the Conversation ID
19.5. Batch Requests
19.6. Working with Data types
19.6.1. Primitives / Basic Types
19.6.1.1. String
19.6.1.2. Number
19.6.1.3. Boolean
19.6.2. JavaBeans
19.6.3. Dates and Times
19.6.4. Enums
19.6.5. Collections
19.6.5.1. Bags
19.6.5.2. Maps
19.7. Debugging
19.8. The Loading Message
19.8.1. Changing the message
19.8.2. Hiding the loading message
19.8.3. A Custom Loading Indicator
19.9. Controlling what data is returned
19.9.1. Constraining normal fields
19.9.2. Constraining Maps and Collections
19.9.3. Constraining objects of a specific type
19.9.4. Combining Constraints
19.10. JMS Messaging
19.10.1. Configuration
19.10.2. Subscribing to a JMS Topic
19.10.3. Unsubscribing from a Topic
19.10.4. Tuning the Polling Process
20. Spring Framework integration
20.1. Injecting Seam components into Spring beans
20.2. Injecting Spring beans into Seam components
20.3. Making a Spring bean into a Seam component
20.4. Seam-scoped Spring beans
21. Configuring Seam and packaging Seam applications
21.1. Basic Seam configuration
21.1.1. Integrating Seam with JSF and your servlet container
21.1.2. Seam servlet filters
21.1.2.1. Exception handling
21.1.2.2. Conversation propagation with redirects
21.1.2.3. Multipart form submissions
21.1.2.4. Character encoding
21.1.2.5. Context management for custom servlets
21.1.3. Integrating Seam with your EJB container
21.1.4. Using facelets
21.1.5. Don't forget!
21.2. Configuring Seam in Java EE 5
21.2.1. Packaging
21.3. Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container
21.3.1. Installing the Embeddable EJB3 container
21.3.2. Configuring a datasource with the Embeddable EJB3 container
21.3.3. Packaging
21.4. Configuring Seam in J2EE
21.4.1. Boostrapping Hibernate in Seam
21.4.2. Boostrapping JPA in Seam
21.4.3. Packaging
21.5. Configuring Seam in Java SE, with the JBoss Microcontainer
21.5.1. Using Hibernate and the JBoss Microcontainer
21.5.2. Packaging
21.6. Configuring jBPM in Seam
21.6.1. Packaging
21.7. Configuring Seam in a Portal
22. Seam annotations
22.1. Annotations for component definition
22.2. Annotations for bijection
22.3. Annotations for component lifecycle methods
22.4. Annotations for context demarcation
22.5. Annotations for transaction demarcation
22.6. Annotations for exceptions
22.7. Annotations for validation
22.8. Annotations for Seam Remoting
22.9. Annotations for Seam interceptors
22.10. Annotations for asynchronicity
22.11. Annotations for use with JSF dataTable
22.12. Meta-annotations for databinding
22.13. Annotations for packaging
23. Built-in Seam components
23.1. Context injection components
23.2. Utility components
23.3. Components for internationalization and themes
23.4. Components for controlling conversations
23.5. jBPM-related components
23.6. Security-related components
23.7. JMS-related components
23.8. Mail-related components
23.9. Infrastructural components
23.10. Special components
24. Seam JSF controls
25. Expression language enhancements
25.1. Configuration
25.2. Usage
25.3. Limitations
25.3.1. Incompatibility with JSP 2.1
25.3.2. Calling a MethodExpression from Java code
26. Testing Seam applications
26.1. Unit testing Seam components
26.2. Integration testing Seam applications
27. Seam tools
27.1. jBPM designer and viewer
27.1.1. Business process designer
27.1.2. Pageflow viewer
27.2. CRUD-application generator
27.2.1. Creating a Hibernate configuration file
27.2.2. Creating a Hibernate Console configuration
27.2.3. Reverse engineering and code generation
27.2.3.1. Code Generation Launcher
27.2.3.2. Exporters
27.2.3.3. Generating and using the code