
Free
Book Description
Table of Contents
- Contents
- Preface
- Audience
- Documentation Accessibility
- Before You Read This Book
- Related Documentation
- Conventions
- Default Paths and File Names
- Part I Introduction
- 1 Overview
- 1.1 Java EE 7 Platform Highlights
- 1.2 Java EE Application Model
- 1.3 Distributed Multitiered Applications
- 1.3.1 Security
- 1.3.2 Java EE Components
- 1.3.3 Java EE Clients
- 1.3.3.1 Web Clients
- 1.3.3.2 Application Clients
- 1.3.3.3 Applets
- 1.3.3.4 The JavaBeans Component Architecture
- 1.3.3.5 Java EE Server Communications
- 1.3.4 Web Components
- 1.3.5 Business Components
- 1.3.6 Enterprise Information System Tier
- 1.4 Java EE Containers
- 1.4.1 Container Services
- 1.4.2 Container Types
- 1.5 Web Services Support
- 1.5.1 XML
- 1.5.2 SOAP Transport Protocol
- 1.5.3 WSDL Standard Format
- 1.6 Java EE Application Assembly and Deployment
- 1.7 Java EE 7 APIs
- 1.7.1 Enterprise JavaBeans Technology
- 1.7.2 Java Servlet Technology
- 1.7.3 JavaServer Faces Technology
- 1.7.4 JavaServer Pages Technology
- 1.7.5 JavaServer Pages Standard Tag Library
- 1.7.6 Java Persistence API
- 1.7.7 Java Transaction API
- 1.7.8 Java API for RESTful Web Services
- 1.7.9 Managed Beans
- 1.7.10 Contexts and Dependency Injection for Java EE
- 1.7.11 Dependency Injection for Java
- 1.7.12 Bean Validation
- 1.7.13 Java Message Service API
- 1.7.14 Java EE Connector Architecture
- 1.7.15 JavaMail API
- 1.7.16 Java Authorization Contract for Containers
- 1.7.17 Java Authentication Service Provider Interface for Containers
- 1.7.18 Java API for WebSocket
- 1.7.19 Java API for JSON Processing
- 1.7.20 Concurrency Utilities for Java EE
- 1.7.21 Batch Applications for the Java Platform
- 1.8 Java EE 7 APIs in the Java Platform, Standard Edition 7
- 1.8.1 Java Database Connectivity API
- 1.8.2 Java Naming and Directory Interface API
- 1.8.3 JavaBeans Activation Framework
- 1.8.4 Java API for XML Processing
- 1.8.5 Java Architecture for XML Binding
- 1.8.6 Java API for XML Web Services
- 1.8.7 SOAP with Attachments API for Java
- 1.8.8 Java Authentication and Authorization Service
- 1.8.9 Common Annotations for the Java Platform
- 1.9 GlassFish Server Tools
- 2 Using the Tutorial Examples
- 2.1 Required Software
- 2.1.1 Java Platform, Standard Edition
- 2.1.2 Java EE 7 Software Development Kit
- 2.1.2.1 SDK Installation Tips
- 2.1.3 Java EE 7 Tutorial Component
- 2.1.4 NetBeans IDE
- 2.1.4.1 To Install NetBeans IDE without GlassFish Server
- 2.1.4.2 To Add GlassFish Server as a Server Using NetBeans IDE
- 2.1.5 Apache Maven
- 2.2 Starting and Stopping GlassFish Server
- 2.2.1 To Start GlassFish Server Using NetBeans IDE
- 2.2.2 To Stop GlassFish Server Using NetBeans IDE
- 2.2.3 To Start GlassFish Server Using the Command Line
- 2.2.4 To Stop GlassFish Server Using the Command Line
- 2.3 Starting the Administration Console
- 2.3.1 To Start the Administration Console Using NetBeans IDE
- 2.4 Starting and Stopping the Java DB Server
- 2.4.1 To Start the Database Server Using NetBeans IDE
- 2.5 Building the Examples
- 2.6 Tutorial Example Directory Structure
- 2.7 Java EE 7 Maven Archetypes in the Tutorial
- 2.7.1 Installing the Tutorial Archetypes
- 2.7.1.1 Installing the Tutorial Archetypes Using NetBeans IDE
- 2.7.1.2 Installing the Tutorial Archetypes Using Maven
- 2.7.1 Installing the Tutorial Archetypes
- 2.8 Getting the Latest Updates to the Tutorial
- 2.8.1 To Update the Tutorial Using NetBeans IDE
- 2.8.2 To Update the Tutorial Using the Command Line
- 2.9 Debugging Java EE Applications
- 2.9.1 Using the Server Log
- 2.9.1.1 To Use the Administration Console Log Viewer
- 2.9.2 Using a Debugger
- 2.9.2.1 To Debug an Application Using a Debugger
- 2.9.1 Using the Server Log
- 2.1 Required Software
- Part II Platform Basics
- 3 Resource Creation
- 3.1 Resources and JNDI Naming
- 3.2 DataSource Objects and Connection Pools
- 3.3 Creating Resources Administratively
- 4 Injection
- 4.1 Resource Injection
- 4.2 Dependency Injection
- 4.3 The Main Differences between Resource Injection and Dependency Injection
- 5 Packaging
- 5.1 Packaging Applications
- 5.2 Packaging Enterprise Beans
- 5.2.1 Packaging Enterprise Beans in EJB JAR Modules
- 5.2.2 Packaging Enterprise Beans in WAR Modules
- 5.3 Packaging Web Archives
- 5.4 Packaging Resource Adapter Archives
- Part III The Web Tier
- 6 Getting Started with Web Applications
- 6.1 Web Applications
- 6.2 Web Application Lifecycle
- 6.3 A Web Module That Uses JavaServer Faces Technology: The hello1 Example
- 6.3.1 To View the hello1 Web Module Using NetBeans IDE
- 6.3.1.1 Introduction to Scopes
- 6.3.2 Packaging and Deploying the hello1 Web Module
- 6.3.2.1 To Build and Package the hello1 Web Module Using NetBeans IDE
- 6.3.2.2 To Build and Package the hello1 Web Module Using Maven
- 6.3.3 Viewing Deployed Web Modules
- 6.3.3.1 To View Deployed Web Modules Using the Administration Console
- 6.3.3.2 To View Deployed Web Modules Using the asadmin Command
- 6.3.3.3 To View Deployed Web Modules Using NetBeans IDE
- 6.3.4 Running the Deployed hello1 Web Module
- 6.3.4.1 Dynamic Reloading of Deployed Modules
- 6.3.5 Undeploying the hello1 Web Module
- 6.3.5.1 To Undeploy the hello1 Web Module Using NetBeans IDE
- 6.3.5.2 To Undeploy the hello1 Web Module Using Maven
- 6.3.1 To View the hello1 Web Module Using NetBeans IDE
- 6.4 A Web Module That Uses Java Servlet Technology: The hello2 Example
- 6.4.1 Mapping URLs to Web Components
- 6.4.2 Examining the hello2 Web Module
- 6.4.2.1 To View the hello2 Web Module Using NetBeans IDE
- 6.4.3 Running the hello2 Example
- 6.4.3.1 To Run the hello2 Example Using NetBeans IDE
- 6.4.3.2 To Run the hello2 Example Using Maven
- 6.5 Configuring Web Applications
- 6.5.1 Setting Context Parameters
- 6.5.1.1 To Add a Context Parameter Using NetBeans IDE
- 6.5.1.2 To Create a web.xml File Using NetBeans IDE
- 6.5.2 Declaring Welcome Files
- 6.5.3 Mapping Errors to Error Screens
- 6.5.3.1 To Set Up Error Mapping Using NetBeans IDE
- 6.5.4 Declaring Resource References
- 6.5.4.1 Declaring a Reference to a Resource
- 6.5.4.2 Declaring a Reference to a Web Service
- 6.5.1 Setting Context Parameters
- 6.6 Further Information about Web Applications
- 7 JavaServer Faces Technology
- 7.1 What Is a JavaServer Faces Application?
- 7.2 JavaServer Faces Technology Benefits
- 7.3 A Simple JavaServer Faces Application
- 7.4 User Interface Component Model
- 7.4.1 User Interface Component Classes
- 7.4.2 Component Rendering Model
- 7.4.3 Conversion Model
- 7.4.4 Event and Listener Model
- 7.4.5 Validation Model
- 7.5 Navigation Model
- 7.6 The Lifecycle of a JavaServer Faces Application
- 7.6.1 Overview of the JavaServer Faces Lifecycle
- 7.6.2 Restore View Phase
- 7.6.3 Apply Request Values Phase
- 7.6.4 Process Validations Phase
- 7.6.5 Update Model Values Phase
- 7.6.6 Invoke Application Phase
- 7.6.7 Render Response Phase
- 7.7 Partial Processing and Partial Rendering
- 7.8 Further Information about JavaServer Faces Technology
- 8 Introduction to Facelets
- 8.1 What Is Facelets?
- 8.2 The Lifecycle of a Facelets Application
- 8.3 Developing a Simple Facelets Application: The guessnumber-jsf Example Application
- 8.3.1 Creating a Facelets Application
- 8.3.1.1 Developing a Managed Bean
- 8.3.1.2 Creating Facelets Views
- 8.3.2 Configuring the Application
- 8.3.3 Running the guessnumber-jsf Facelets Example
- 8.3.3.1 To Build, Package, and Deploy the guessnumber-jsf Example Using NetBeans IDE
- 8.3.3.2 To Build, Package, and Deploy the guessnumber-jsf Example Using Maven
- 8.3.3.3 To Run the guessnumber-jsf Example
- 8.3.1 Creating a Facelets Application
- 8.4 Using Facelets Templates
- 8.5 Composite Components
- 8.6 Web Resources
- 8.7 Relocatable Resources
- 8.8 Resource Library Contracts
- 8.8.1 The hello1-rlc Example Application
- 8.8.1.1 Configuring the hello1-rlc Example
- 8.8.1.2 The Facelets Pages for the hello1-rlc Example
- 8.8.1.3 To Build, Package, and Deploy the hello1-rlc Example Using NetBeans IDE
- 8.8.1.4 To Build, Package, and Deploy the hello1-rlc Example Using Maven
- 8.8.1.5 To Run the hello1-rlc Example
- 8.8.1 The hello1-rlc Example Application
- 8.9 HTML5-Friendly Markup
- 8.9.1 Using Pass-Through Elements
- 8.9.2 Using Pass-Through Attributes
- 8.9.3 The reservation Example Application
- 8.9.3.1 The Facelets Pages for the reservation Application
- 8.9.3.2 The Managed Bean for the reservation Application
- 8.9.3.3 To Build, Package, and Deploy the reservation Example Using NetBeans IDE
- 8.9.3.4 To Build, Package, and Deploy the reservation Example Using Maven
- 8.9.3.5 To Run the reservation Example
- 9 Expression Language
- 9.1 Overview of the EL
- 9.2 Immediate and Deferred Evaluation Syntax
- 9.2.1 Immediate Evaluation
- 9.2.2 Deferred Evaluation
- 9.3 Value and Method Expressions
- 9.3.1 Value Expressions
- 9.3.1.1 Referencing Objects
- 9.3.1.2 Referencing Object Properties or Collection Elements
- 9.3.1.3 Referencing Literals
- 9.3.1.4 Parameterized Method Calls
- 9.3.1.5 Where Value Expressions Can Be Used
- 9.3.2 Method Expressions
- 9.3.3 Lambda Expressions
- 9.3.1 Value Expressions
- 9.4 Operations on Collection Objects
- 9.5 Operators
- 9.6 Reserved Words
- 9.7 Examples of EL Expressions
- 9.8 Further Information about the Expression Language
- 10 Using JavaServer Faces Technology in Web Pages
- 10.1 Setting Up a Page
- 10.2 Adding Components to a Page Using HTML Tag Library Tags
- 10.2.1 Common Component Tag Attributes
- 10.2.1.1 The id Attribute
- 10.2.1.2 The immediate Attribute
- 10.2.1.3 The rendered Attribute
- 10.2.1.4 The style and styleClass Attributes
- 10.2.1.5 The value and binding Attributes
- 10.2.2 Adding HTML Head and Body Tags
- 10.2.3 Adding a Form Component
- 10.2.4 Using Text Components
- 10.2.4.1 Rendering a Field with the h:inputText Tag
- 10.2.4.2 Rendering a Password Field with the h:inputSecret Tag
- 10.2.4.3 Rendering a Label with the h:outputLabel Tag
- 10.2.4.4 Rendering a Link with the h:outputLink Tag
- 10.2.4.5 Displaying a Formatted Message with the h:outputFormat Tag
- 10.2.5 Using Command Component Tags for Performing Actions and Navigation
- 10.2.5.1 Rendering a Button with the h:commandButton Tag
- 10.2.5.2 Rendering a Link with the h:commandLink Tag
- 10.2.6 Adding Graphics and Images with the h:graphicImage Tag
- 10.2.7 Laying Out Components with the h:panelGrid and h:panelGroup Tags
- 10.2.8 Displaying Components for Selecting One Value
- 10.2.8.1 Displaying a Check Box Using the h:selectBooleanCheckbox Tag
- 10.2.8.2 Displaying a Menu Using the h:selectOneMenu Tag
- 10.2.9 Displaying Components for Selecting Multiple Values
- 10.2.10 Using the f:selectItem and f:selectItems Tags
- 10.2.10.1 Using the f:selectItems Tag
- 10.2.10.2 Using the f:selectItem Tag
- 10.2.11 Displaying the Results from Selection Components
- 10.2.12 Using Data-Bound Table Components
- 10.2.13 Displaying Error Messages with the h:message and h:messages Tags
- 10.2.14 Creating Bookmarkable URLs with the h:button and h:link Tags
- 10.2.15 Using View Parameters to Configure Bookmarkable URLs
- 10.2.16 The bookmarks Example Application
- 10.2.16.1 To Build, Package, and Deploy the bookmarks Example Using NetBeans IDE
- 10.2.16.2 To Build, Package, and Deploy the bookmarks Example Using Maven
- 10.2.16.3 To Run the bookmarks Example
- 10.2.17 Resource Relocation Using h:outputScript and h:outputStylesheet Tags
- 10.2.1 Common Component Tag Attributes
- 10.3 Using Core Tags
- 11 Using Converters, Listeners, and Validators
- 11.1 Using the Standard Converters
- 11.1.1 Converting a Component's Value
- 11.1.2 Using DateTimeConverter
- 11.1.3 Using NumberConverter
- 11.2 Registering Listeners on Components
- 11.2.1 Registering a Value-Change Listener on a Component
- 11.2.2 Registering an Action Listener on a Component
- 11.3 Using the Standard Validators
- 11.3.1 Validating a Component's Value
- 11.3.2 Using Validator Tags
- 11.4 Referencing a Managed Bean Method
- 11.4.1 Referencing a Method That Performs Navigation
- 11.4.2 Referencing a Method That Handles an Action Event
- 11.4.3 Referencing a Method That Performs Validation
- 11.4.4 Referencing a Method That Handles a Value-Change Event
- 11.1 Using the Standard Converters
- 12 Developing with JavaServer Faces Technology
- 12.1 Managed Beans in JavaServer Faces Technology
- 12.1.1 Creating a Managed Bean
- 12.1.2 Using the EL to Reference Managed Beans
- 12.2 Writing Bean Properties
- 12.2.1 Writing Properties Bound to Component Values
- 12.2.1.1 UIInput and UIOutput Properties
- 12.2.1.2 UIData Properties
- 12.2.1.3 UISelectBoolean Properties
- 12.2.1.4 UISelectMany Properties
- 12.2.1.5 UISelectOne Properties
- 12.2.1.6 UISelectItem Properties
- 12.2.1.7 UISelectItems Properties
- 12.2.2 Writing Properties Bound to Component Instances
- 12.2.3 Writing Properties Bound to Converters, Listeners, or Validators
- 12.2.1 Writing Properties Bound to Component Values
- 12.3 Writing Managed Bean Methods
- 12.3.1 Writing a Method to Handle Navigation
- 12.3.2 Writing a Method to Handle an Action Event
- 12.3.3 Writing a Method to Perform Validation
- 12.3.4 Writing a Method to Handle a Value-Change Event
- 12.1 Managed Beans in JavaServer Faces Technology
- 13 Using Ajax with JavaServer Faces Technology
- 13.1 Overview of Ajax
- 13.2 Using Ajax Functionality with JavaServer Faces Technology
- 13.3 Using Ajax with Facelets
- 13.3.1 Using the f:ajax Tag
- 13.4 Sending an Ajax Request
- 13.4.1 Using the event Attribute
- 13.4.2 Using the execute Attribute
- 13.4.3 Using the immediate Attribute
- 13.4.4 Using the listener Attribute
- 13.5 Monitoring Events on the Client
- 13.6 Handling Errors
- 13.7 Receiving an Ajax Response
- 13.8 Ajax Request Lifecycle
- 13.9 Grouping of Components
- 13.10 Loading JavaScript as a Resource
- 13.10.1 Using JavaScript API in a Facelets Application
- 13.10.2 Using the @ResourceDependency Annotation in a Bean Class
- 13.11 The ajaxguessnumber Example Application
- 13.11.1 The ajaxguessnumber Source Files
- 13.11.1.1 The ajaxgreeting.xhtml Facelets Page
- 13.11.1.2 The UserNumberBean Backing Bean
- 13.11.1.3 The DukesNumberBean CDI Managed Bean
- 13.11.2 Running the ajaxguessnumber Example
- 13.11.2.1 To Build, Package, and Deploy the ajaxguessnumber Example Using NetBeans IDE
- 13.11.2.2 To Build, Package, and Deploy the ajaxguessnumber Example Using Maven
- 13.11.2.3 To Run the ajaxguessnumber Example
- 13.11.1 The ajaxguessnumber Source Files
- 13.12 Further Information about Ajax in JavaServer Faces Technology
- 14 Composite Components: Advanced Topics and an Example
- 14.1 Attributes of a Composite Component
- 14.2 Invoking a Managed Bean
- 14.3 Validating Composite Component Values
- 14.4 The compositecomponentexample Example Application
- 14.4.1 The Composite Component File
- 14.4.2 The Using Page
- 14.4.3 The Managed Bean
- 14.4.4 Running the compositecomponentexample Example
- 14.4.4.1 To Build, Package, and Deploy the compositecomponentexample Example Using NetBeans IDE
- 14.4.4.2 To Build, Package, and Deploy the compositecomponentexample Example Using Maven
- 14.4.4.3 To Run the compositecomponentexample Example
- 15 Creating Custom UI Components and Other Custom Objects
- 15.1 Determining Whether You Need a Custom Component or Renderer
- 15.1.1 When to Use a Custom Component
- 15.1.2 When to Use a Custom Renderer
- 15.1.3 Component, Renderer, and Tag Combinations
- 15.2 Understanding the Image Map Example
- 15.2.1 Why Use JavaServer Faces Technology to Implement an Image Map?
- 15.2.2 Understanding the Rendered HTML
- 15.2.3 Understanding the Facelets Page
- 15.2.4 Configuring Model Data
- 15.2.5 Summary of the Image Map Application Classes
- 15.3 Steps for Creating a Custom Component
- 15.4 Creating Custom Component Classes
- 15.4.1 Specifying the Component Family
- 15.4.2 Performing Encoding
- 15.4.3 Performing Decoding
- 15.4.4 Enabling Component Properties to Accept Expressions
- 15.4.5 Saving and Restoring State
- 15.5 Delegating Rendering to a Renderer
- 15.5.1 Creating the Renderer Class
- 15.5.2 Identifying the Renderer Type
- 15.6 Implementing an Event Listener
- 15.6.1 Implementing Value-Change Listeners
- 15.6.2 Implementing Action Listeners
- 15.7 Handling Events for Custom Components
- 15.8 Defining the Custom Component Tag in a Tag Library Descriptor
- 15.9 Using a Custom Component
- 15.10 Creating and Using a Custom Converter
- 15.10.1 Creating a Custom Converter
- 15.10.2 Using a Custom Converter
- 15.11 Creating and Using a Custom Validator
- 15.11.1 Implementing the Validator Interface
- 15.11.2 Specifying a Custom Tag
- 15.11.3 Using a Custom Validator
- 15.12 Binding Component Values and Instances to Managed Bean Properties
- 15.12.1 Binding a Component Value to a Property
- 15.12.2 Binding a Component Value to an Implicit Object
- 15.12.3 Binding a Component Instance to a Bean Property
- 15.13 Binding Converters, Listeners, and Validators to Managed Bean Properties
- 15.1 Determining Whether You Need a Custom Component or Renderer
- 16 Configuring JavaServer Faces Applications
- 16.1 Using Annotations to Configure Managed Beans
- 16.1.1 Using Managed Bean Scopes
- 16.2 Application Configuration Resource File
- 16.2.1 Configuring Eager Application-Scoped Managed Beans
- 16.2.2 Ordering of Application Configuration Resource Files
- 16.3 Using Faces Flows
- 16.3.1 Packaging Flows in an Application
- 16.3.2 The Simplest Possible Flow: The simple-flow Example Application
- 16.3.2.1 To Build, Package, and Deploy the simple-flow Example Using NetBeans IDE
- 16.3.2.2 To Build, Package, and Deploy the simple-flow Example Using Maven
- 16.3.2.3 To Run the simple-flow Example
- 16.3.3 The checkout-module Example Application
- 16.3.3.1 The Facelets Pages for the checkout-module Example
- 16.3.3.2 Using a Configuration File to Configure a Flow
- 16.3.3.3 Using a Java Class to Configure a Flow
- 16.3.3.4 The Flow-Scoped Managed Beans
- 16.3.3.5 To Build, Package, and Deploy the checkout-module Example Using NetBeans IDE
- 16.3.3.6 To Build, Package, and Deploy the checkout-module Example Using Maven
- 16.3.3.7 To Run the checkout-module Example
- 16.4 Configuring Managed Beans
- 16.4.1 Using the managed-bean Element
- 16.4.2 Initializing Properties Using the managed-property Element
- 16.4.2.1 Referencing a Java Enum Type
- 16.4.2.2 Referencing a Context Initialization Parameter
- 16.4.2.3 Initializing Map Properties
- 16.4.2.4 Initializing Array and List Properties
- 16.4.2.5 Initializing Managed Bean Properties
- 16.4.3 Initializing Maps and Lists
- 16.5 Registering Application Messages
- 16.5.1 Using FacesMessage to Create a Message
- 16.5.2 Referencing Error Messages
- 16.6 Using Default Validators
- 16.7 Registering a Custom Validator
- 16.8 Registering a Custom Converter
- 16.9 Configuring Navigation Rules
- 16.10 Registering a Custom Renderer with a Render Kit
- 16.11 Registering a Custom Component
- 16.12 Basic Requirements of a JavaServer Faces Application
- 16.12.1 Configuring an Application with a Web Deployment Descriptor
- 16.12.1.1 Identifying the Servlet for Lifecycle Processing
- 16.12.1.2 To Specify a Path to an Application Configuration Resource File
- 16.12.1.3 To Specify Where State Is Saved
- 16.12.2 Configuring Project Stage
- 16.12.3 Including the Classes, Pages, and Other Resources
- 16.12.1 Configuring an Application with a Web Deployment Descriptor
- 16.1 Using Annotations to Configure Managed Beans
- 17 Java Servlet Technology
- 17.1 What Is a Servlet?
- 17.2 Servlet Lifecycle
- 17.2.1 Handling Servlet Lifecycle Events
- 17.2.1.1 Defining the Listener Class
- 17.2.2 Handling Servlet Errors
- 17.2.1 Handling Servlet Lifecycle Events
- 17.3 Sharing Information
- 17.3.1 Using Scope Objects
- 17.3.2 Controlling Concurrent Access to Shared Resources
- 17.4 Creating and Initializing a Servlet
- 17.5 Writing Service Methods
- 17.5.1 Getting Information from Requests
- 17.5.2 Constructing Responses
- 17.6 Filtering Requests and Responses
- 17.6.1 Programming Filters
- 17.6.2 Programming Customized Requests and Responses
- 17.6.3 Specifying Filter Mappings
- 17.6.3.1 To Specify Filter Mappings Using NetBeans IDE
- 17.7 Invoking Other Web Resources
- 17.7.1 Including Other Resources in the Response
- 17.7.2 Transferring Control to Another Web Component
- 17.8 Accessing the Web Context
- 17.9 Maintaining Client State
- 17.9.1 Accessing a Session
- 17.9.2 Associating Objects with a Session
- 17.9.3 Session Management
- 17.9.3.1 To Set the Timeout Period Using NetBeans IDE
- 17.9.4 Session Tracking
- 17.10 Finalizing a Servlet
- 17.10.1 Tracking Service Requests
- 17.10.2 Notifying Methods to Shut Down
- 17.10.3 Creating Polite Long-Running Methods
- 17.11 Uploading Files with Java Servlet Technology
- 17.11.1 The @MultipartConfig Annotation
- 17.11.2 The getParts and getPart Methods
- 17.12 Asynchronous Processing
- 17.12.1 Asynchronous Processing in Servlets
- 17.12.2 Waiting for a Resource
- 17.13 Nonblocking I/O
- 17.13.1 Reading a Large HTTP POST Request Using Nonblocking I/O
- 17.14 Protocol Upgrade Processing
- 17.15 The mood Example Application
- 17.15.1 Components of the mood Example Application
- 17.15.2 Running the mood Example
- 17.15.2.1 To Run the mood Example Using NetBeans IDE
- 17.15.2.2 To Run the mood Example Using Maven
- 17.16 The fileupload Example Application
- 17.16.1 Architecture of the fileupload Example Application
- 17.16.2 Running the fileupload Example
- 17.16.2.1 To Build, Package, and Deploy the fileupload Example Using NetBeans IDE
- 17.16.2.2 To Build, Package, and Deploy the fileupload Example Using Maven
- 17.16.2.3 To Run the fileupload Example
- 17.17 The dukeetf Example Application
- 17.17.1 Architecture of the dukeetf Example Application
- 17.17.1.1 The Servlet
- 17.17.1.2 The Enterprise Bean
- 17.17.1.3 The HTML Page
- 17.17.2 Running the dukeetf Example Application
- 17.17.2.1 To Run the dukeetf Example Application Using NetBeans IDE
- 17.17.2.2 To Run the dukeetf Example Application Using Maven
- 17.17.1 Architecture of the dukeetf Example Application
- 17.18 Further Information about Java Servlet Technology
- 18 Java API for WebSocket
- 18.1 Introduction to WebSocket
- 18.2 Creating WebSocket Applications in the Java EE Platform
- 18.3 Programmatic Endpoints
- 18.4 Annotated Endpoints
- 18.5 Sending and Receiving Messages
- 18.5.1 Sending Messages
- 18.5.1.1 Sending Messages to All Peers Connected to an Endpoint
- 18.5.2 Receiving Messages
- 18.5.1 Sending Messages
- 18.6 Maintaining Client State
- 18.7 Using Encoders and Decoders
- 18.7.1 Implementing Encoders to Convert Java Objects into WebSocket Messages
- 18.7.2 Implementing Decoders to Convert WebSocket Messages into Java Objects
- 18.8 Path Parameters
- 18.9 Handling Errors
- 18.10 Specifying an Endpoint Configurator Class
- 18.11 The dukeetf2 Example Application
- 18.11.1 Architecture of the dukeetf2 Sample Application
- 18.11.1.1 The Endpoint
- 18.11.1.2 The Enterprise Bean
- 18.11.1.3 The HTML Page
- 18.11.2 Running the dukeetf2 Example Application
- 18.11.2.1 To Run the dukeetf2 Example Application Using NetBeans IDE
- 18.11.2.2 To Run the dukeetf2 Example Application Using Maven
- 18.11.1 Architecture of the dukeetf2 Sample Application
- 18.12 The websocketbot Example Application
- 18.12.1 Architecture of the websocketbot Example Application
- 18.12.1.1 The CDI Bean
- 18.12.1.2 The WebSocket Endpoint
- 18.12.1.3 The Application Messages
- 18.12.1.4 The Encoder Classes
- 18.12.1.5 The Message Decoder
- 18.12.1.6 The HTML Page
- 18.12.2 Running the websocketbot Example Application
- 18.12.2.1 To Run the websocketbot Example Application Using NetBeans IDE
- 18.12.2.2 To Run the websocketbot Example Application Using Maven
- 18.12.2.3 To Test the websocketbot Example Application
- 18.12.1 Architecture of the websocketbot Example Application
- 18.13 Further Information about WebSocket
- 19 JSON Processing
- 19.1 Introduction to JSON
- 19.1.1 JSON Syntax
- 19.1.2 Uses of JSON
- 19.1.3 Generating and Parsing JSON Data
- 19.2 JSON Processing in the Java EE Platform
- 19.3 Using the Object Model API
- 19.3.1 Creating an Object Model from JSON Data
- 19.3.2 Creating an Object Model from Application Code
- 19.3.3 Navigating an Object Model
- 19.3.4 Writing an Object Model to a Stream
- 19.4 Using the Streaming API
- 19.4.1 Reading JSON Data Using a Parser
- 19.4.2 Writing JSON Data Using a Generator
- 19.5 JSON in Java EE RESTful Web Services
- 19.6 The jsonpmodel Example Application
- 19.6.1 Components of the jsonpmodel Example Application
- 19.6.2 Running the jsonpmodel Example Application
- 19.6.2.1 To Run the jsonpmodel Example Application Using NetBeans IDE
- 19.6.2.2 To Run the jsonpmodel Example Application Using Maven
- 19.7 The jsonpstreaming Example Application
- 19.7.1 Components of the jsonpstreaming Example Application
- 19.7.2 Running the jsonpstreaming Example Application
- 19.7.2.1 To Run the jsonpstreaming Example Application Using NetBeans IDE
- 19.7.2.2 To Run the jsonpstreaming Example Application Using Maven
- 19.8 Further Information about the Java API for JSON Processing
- 19.1 Introduction to JSON
- 20 Internationalizing and Localizing Web Applications
- 20.1 Java Platform Localization Classes
- 20.2 Providing Localized Messages and Labels
- 20.2.1 Establishing the Locale
- 20.2.2 Setting the Resource Bundle
- 20.2.3 Retrieving Localized Messages
- 20.3 Date and Number Formatting
- 20.4 Character Sets and Encodings
- 20.4.1 Character Sets
- 20.4.2 Character Encoding
- Part IV Bean Validation
- 21 Introduction to Bean Validation
- 21.1 Using Bean Validation Constraints
- 21.2 Validating Null and Empty Strings
- 21.3 Validating Constructors and Methods
- 21.3.1 Cross-Parameter Constraints
- 21.3.2 Identifying Parameter Constraint Violations
- 21.3.3 Adding Constraints to Method Return Values
- 21.4 Further Information about Bean Validation
- 22 Bean Validation: Advanced Topics
- 22.1 Creating Custom Constraints
- 22.1.1 Using the Built-In Constraints to Make a New Constraint
- 22.1.2 Removing Ambiguity in Constraint Targets
- 22.2 Customizing Validator Messages
- 22.2.1 The ValidationMessages Resource Bundle
- 22.2.1.1 Localizing Validation Messages
- 22.2.1 The ValidationMessages Resource Bundle
- 22.3 Grouping Constraints
- 22.3.1 Customizing Group Validation Order
- 22.4 Using Method Constraints in Type Hierarchies
- 22.4.1 Rules for Using Method Constraints in Type Hierarchies
- 22.1 Creating Custom Constraints
- Part V Contexts and Dependency Injection for Java EE
- 23 Introduction to Contexts and Dependency Injection for Java EE
- 23.1 Getting Started
- 23.2 Overview of CDI
- 23.3 About Beans
- 23.4 About CDI Managed Beans
- 23.5 Beans as Injectable Objects
- 23.6 Using Qualifiers
- 23.7 Injecting Beans
- 23.8 Using Scopes
- 23.9 Giving Beans EL Names
- 23.10 Adding Setter and Getter Methods
- 23.11 Using a Managed Bean in a Facelets Page
- 23.12 Injecting Objects by Using Producer Methods
- 23.13 Configuring a CDI Application
- 23.14 Using the @PostConstruct and @PreDestroy Annotations with CDI Managed Bean Classes
- 23.14.1 To Initialize a Managed Bean Using the @PostConstruct Annotation
- 23.14.2 To Prepare for the Destruction of a Managed Bean Using the @PreDestroy Annotation
- 23.15 Further Information about CDI
- 24 Running the Basic Contexts and Dependency Injection Examples
- 24.1 The simplegreeting CDI Example
- 24.1.1 The simplegreeting Source Files
- 24.1.2 The Facelets Template and Page
- 24.1.3 Running the simplegreeting Example
- 24.1.3.1 To Build, Package, and Run the simplegreeting Example Using NetBeans IDE
- 24.1.3.2 To Build, Package, and Deploy the simplegreeting Example Using Maven
- 24.1.3.3 To Run the simplegreeting Example
- 24.2 The guessnumber-cdi CDI Example
- 24.2.1 The guessnumber-cdi Source Files
- 24.2.1.1 The @MaxNumber and @Random Qualifier Interfaces
- 24.2.1.2 The Generator Managed Bean
- 24.2.1.3 The UserNumberBean Managed Bean
- 24.2.2 The Facelets Page
- 24.2.3 Running the guessnumber-cdi Example
- 24.2.3.1 To Build, Package, and Deploy the guessnumber-cdi Example Using NetBeans IDE
- 24.2.3.2 To Build, Package, and Deploy the guessnumber-cdi Example Using Maven
- 24.2.3.3 To Run the guessnumber Example
- 24.2.1 The guessnumber-cdi Source Files
- 24.1 The simplegreeting CDI Example
- 25 Contexts and Dependency Injection for Java EE: Advanced Topics
- 25.1 Packaging CDI Applications
- 25.2 Using Alternatives in CDI Applications
- 25.2.1 Using Specialization
- 25.3 Using Producer Methods, Producer Fields, and Disposer Methods in CDI Applications
- 25.3.1 Using Producer Methods
- 25.3.2 Using Producer Fields to Generate Resources
- 25.3.3 Using a Disposer Method
- 25.4 Using Predefined Beans in CDI Applications
- 25.5 Using Events in CDI Applications
- 25.5.1 Defining Events
- 25.5.2 Using Observer Methods to Handle Events
- 25.5.3 Firing Events
- 25.6 Using Interceptors in CDI Applications
- 25.7 Using Decorators in CDI Applications
- 25.8 Using Stereotypes in CDI Applications
- 26 Running the Advanced Contexts and Dependency Injection Examples
- 26.1 The encoder Example: Using Alternatives
- 26.1.1 The Coder Interface and Implementations
- 26.1.2 The encoder Facelets Page and Managed Bean
- 26.1.3 Running the encoder Example
- 26.1.3.1 To Build, Package, and Deploy the encoder Example Using NetBeans IDE
- 26.1.3.2 To Run the encoder Example Using NetBeans IDE
- 26.1.3.3 To Build, Package, and Deploy the encoder Example Using Maven
- 26.1.3.4 To Run the encoder Example Using Maven
- 26.2 The producermethods Example: Using a Producer Method to Choose a Bean Implementation
- 26.2.1 Components of the producermethods Example
- 26.2.2 Running the producermethods Example
- 26.2.2.1 To Build, Package, and Deploy the producermethods Example Using NetBeans IDE
- 26.2.2.2 To Build, Package, and Deploy the producermethods Example Using Maven
- 26.2.2.3 To Run the producermethods Example
- 26.3 The producerfields Example: Using Producer Fields to Generate Resources
- 26.3.1 The Producer Field for the producerfields Example
- 26.3.2 The producerfields Entity and Session Bean
- 26.3.3 The producerfields Facelets Pages and Managed Bean
- 26.3.4 Running the producerfields Example
- 26.3.4.1 To Build, Package, and Deploy the producerfields Example Using NetBeans IDE
- 26.3.4.2 To Build, Package, and Deploy the producerfields Example Using Maven
- 26.3.4.3 To Run the producerfields Example
- 26.4 The billpayment Example: Using Events and Interceptors
- 26.4.1 The PaymentEvent Event Class
- 26.4.2 The PaymentHandler Event Listener
- 26.4.3 The billpayment Facelets Pages and Managed Bean
- 26.4.4 The LoggedInterceptor Interceptor Class
- 26.4.5 Running the billpayment Example
- 26.4.5.1 To Build, Package, and Deploy the billpayment Example Using NetBeans IDE
- 26.4.5.2 To Build, Package, and Deploy the billpayment Example Using Maven
- 26.4.5.3 To Run the billpayment Example
- 26.5 The decorators Example: Decorating a Bean
- 26.5.1 Components of the decorators Example
- 26.5.2 Running the decorators Example
- 26.5.2.1 To Build, Package, and Deploy the decorators Example Using NetBeans IDE
- 26.5.2.2 To Build, Package, and Deploy the decorators Example Using Maven
- 26.5.2.3 To Run the decorators Example
- 26.1 The encoder Example: Using Alternatives
- Part VI Web Services
- 27 Introduction to Web Services
- 27.1 What Are Web Services?
- 27.2 Types of Web Services
- 27.2.1 "Big" Web Services
- 27.2.2 RESTful Web Services
- 27.3 Deciding Which Type of Web Service to Use
- 28 Building Web Services with JAX-WS
- 28.1 Creating a Simple Web Service and Clients with JAX-WS
- 28.1.1 Requirements of a JAX-WS Endpoint
- 28.1.2 Coding the Service Endpoint Implementation Class
- 28.1.3 Building, Packaging, and Deploying the Service
- 28.1.3.1 To Build, Package, and Deploy the Service Using NetBeans IDE
- 28.1.3.2 To Build, Package, and Deploy the Service Using Maven
- 28.1.4 Testing the Methods of a Web Service Endpoint
- 28.1.4.1 To Test the Service without a Client
- 28.1.5 A Simple JAX-WS Application Client
- 28.1.5.1 Coding the Application Client
- 28.1.5.2 Running the Application Client
- 28.1.6 A Simple JAX-WS Web Client
- 28.1.6.1 Coding the Servlet
- 28.1.6.2 Running the Web Client
- 28.2 Types Supported by JAX-WS
- 28.2.1 Schema-to-Java Mapping
- 28.2.2 Java-to-Schema Mapping
- 28.3 Web Services Interoperability and JAX-WS
- 28.4 Further Information about JAX-WS
- 28.1 Creating a Simple Web Service and Clients with JAX-WS
- 29 Building RESTful Web Services with JAX-RS
- 29.1 What Are RESTful Web Services?
- 29.2 Creating a RESTful Root Resource Class
- 29.2.1 Developing RESTful Web Services with JAX-RS
- 29.2.2 Overview of a JAX-RS Application
- 29.2.3 The @Path Annotation and URI Path Templates
- 29.2.4 Responding to HTTP Methods and Requests
- 29.2.4.1 The Request Method Designator Annotations
- 29.2.4.2 Using Entity Providers to Map HTTP Response and Request Entity Bodies
- 29.2.5 Using @Consumes and @Produces to Customize Requests and Responses
- 29.2.5.1 The @Produces Annotation
- 29.2.5.2 The @Consumes Annotation
- 29.2.6 Extracting Request Parameters
- 29.2.7 Configuring JAX-RS Applications
- 29.2.7.1 Configuring a JAX-RS Application Using a Subclass of Application
- 29.2.7.2 Configuring the Base URI in web.xml
- 29.3 Example Applications for JAX-RS
- 29.3.1 Creating a Simple RESTful Web Service
- 29.3.1.1 To Create a RESTful Web Service Using NetBeans IDE
- 29.3.2 The rsvp Example Application
- 29.3.2.1 Components of the rsvp Example Application
- 29.3.2.2 Running the rsvp Example Application
- 29.3.3 Real-World Examples
- 29.3.1 Creating a Simple RESTful Web Service
- 29.4 Further Information about JAX-RS
- 30 Accessing REST Resources with the JAX-RS Client API
- 30.1 Overview of the Client API
- 30.1.1 Creating a Basic Client Request Using the Client API
- 30.1.1.1 Obtaining the Client Instance
- 30.1.1.2 Setting the Client Target
- 30.1.1.3 Setting Path Parameters in Targets
- 30.1.1.4 Invoking the Request
- 30.1.1 Creating a Basic Client Request Using the Client API
- 30.2 Using the Client API in the JAX-RS Example Applications
- 30.2.1 The Client API in the rsvp Example Application
- 30.2.2 The Client API in the customer Example Application
- 30.3 Advanced Features of the Client API
- 30.3.1 Configuring the Client Request
- 30.3.1.1 Setting Message Headers in the Client Request
- 30.3.1.2 Setting Cookies in the Client Request
- 30.3.1.3 Adding Filters to the Client
- 30.3.2 Asynchronous Invocations in the Client API
- 30.3.2.1 Using Custom Callbacks in Asynchronous Invocations
- 30.3.1 Configuring the Client Request
- 30.1 Overview of the Client API
- 31 JAX-RS: Advanced Topics and an Example
- 31.1 Annotations for Field and Bean Properties of Resource Classes
- 31.1.1 Extracting Path Parameters
- 31.1.2 Extracting Query Parameters
- 31.1.3 Extracting Form Data
- 31.1.4 Extracting the Java Type of a Request or Response
- 31.2 Validating Resource Data with Bean Validation
- 31.2.1 Using Constraint Annotations on Resource Methods
- 31.2.2 Validating Entity Data
- 31.2.3 Validation Exception Handling and Response Codes
- 31.3 Subresources and Runtime Resource Resolution
- 31.3.1 Subresource Methods
- 31.3.2 Subresource Locators
- 31.4 Integrating JAX-RS with EJB Technology and CDI
- 31.5 Conditional HTTP Requests
- 31.6 Runtime Content Negotiation
- 31.7 Using JAX-RS with JAXB
- 31.7.1 Using Java Objects to Model Your Data
- 31.7.2 Starting from an Existing XML Schema Definition
- 31.7.3 Using JSON with JAX-RS and JAXB
- 31.8 The customer Example Application
- 31.8.1 Overview of the customer Example Application
- 31.8.2 The Customer and Address Entity Classes
- 31.8.3 The CustomerService Class
- 31.8.4 Using the JAX-RS Client in the CustomerBean Classes
- 31.8.5 Running the customer Example
- 31.8.5.1 To Build, Package, and Deploy the customer Example Using NetBeans IDE
- 31.8.5.2 To Build, Package, and Deploy the customer Example Using Maven
- 31.1 Annotations for Field and Bean Properties of Resource Classes
- Part VII Enterprise Beans
- 32 Enterprise Beans
- 32.1 What Is an Enterprise Bean?
- 32.1.1 Benefits of Enterprise Beans
- 32.1.2 When to Use Enterprise Beans
- 32.1.3 Types of Enterprise Beans
- 32.2 What Is a Session Bean?
- 32.2.1 Types of Session Beans
- 32.2.1.1 Stateful Session Beans
- 32.2.1.2 Stateless Session Beans
- 32.2.1.3 Singleton Session Beans
- 32.2.2 When to Use Session Beans
- 32.2.1 Types of Session Beans
- 32.3 What Is a Message-Driven Bean?
- 32.3.1 What Makes Message-Driven Beans Different from Session Beans?
- 32.3.2 When to Use Message-Driven Beans
- 32.4 Accessing Enterprise Beans
- 32.4.1 Using Enterprise Beans in Clients
- 32.4.1.1 Portable JNDI Syntax
- 32.4.2 Deciding on Remote or Local Access
- 32.4.3 Local Clients
- 32.4.3.1 Accessing Local Enterprise Beans Using the No-Interface View
- 32.4.3.2 Accessing Local Enterprise Beans That Implement Business Interfaces
- 32.4.4 Remote Clients
- 32.4.5 Web Service Clients
- 32.4.6 Method Parameters and Access
- 32.4.6.1 Isolation
- 32.4.6.2 Granularity of Accessed Data
- 32.4.1 Using Enterprise Beans in Clients
- 32.5 The Contents of an Enterprise Bean
- 32.6 Naming Conventions for Enterprise Beans
- 32.7 The Lifecycles of Enterprise Beans
- 32.7.1 The Lifecycle of a Stateful Session Bean
- 32.7.2 The Lifecycle of a Stateless Session Bean
- 32.7.3 The Lifecycle of a Singleton Session Bean
- 32.7.4 The Lifecycle of a Message-Driven Bean
- 32.8 Further Information about Enterprise Beans
- 32.1 What Is an Enterprise Bean?
- 33 Getting Started with Enterprise Beans
- 33.1 Creating the Enterprise Bean
- 33.1.1 Coding the Enterprise Bean Class
- 33.1.2 Creating the converter Web Client
- 33.1.3 Running the converter Example
- 33.1.3.1 To Run the converter Example Using NetBeans IDE
- 33.1.3.2 To Run the converter Example Using Maven
- 33.2 Modifying the Java EE Application
- 33.2.1 To Modify a Class File
- 33.1 Creating the Enterprise Bean
- 34 Running the Enterprise Bean Examples
- 34.1 The cart Example
- 34.1.1 The Business Interface
- 34.1.2 Session Bean Class
- 34.1.2.1 Lifecycle Callback Methods
- 34.1.2.2 Business Methods
- 34.1.3 The @Remove Method
- 34.1.4 Helper Classes
- 34.1.5 Running the cart Example
- 34.1.5.1 To Run the cart Example Using NetBeans IDE
- 34.1.5.2 To Run the cart Example Using Maven
- 34.2 A Singleton Session Bean Example: counter
- 34.2.1 Creating a Singleton Session Bean
- 34.2.1.1 Initializing Singleton Session Beans
- 34.2.1.2 Managing Concurrent Access in a Singleton Session Bean
- 34.2.1.3 Handling Errors in a Singleton Session Bean
- 34.2.2 The Architecture of the counter Example
- 34.2.3 Running the counter Example
- 34.2.3.1 To Run the counter Example Using NetBeans IDE
- 34.2.3.2 To Run the counter Example Using Maven
- 34.2.1 Creating a Singleton Session Bean
- 34.3 A Web Service Example: helloservice
- 34.3.1 The Web Service Endpoint Implementation Class
- 34.3.2 Stateless Session Bean Implementation Class
- 34.3.3 Running the helloservice Example
- 34.3.3.1 To Build, Package, and Deploy the helloservice Example Using NetBeans IDE
- 34.3.3.2 To Build, Package, and Deploy the helloservice Example Using Maven
- 34.3.3.3 To Test the Service without a Client
- 34.4 Using the Timer Service
- 34.4.1 Creating Calendar-Based Timer Expressions
- 34.4.1.1 Specifying Multiple Values in Calendar Expressions
- 34.4.2 Programmatic Timers
- 34.4.2.1 The @Timeout Method
- 34.4.2.2 Creating Programmatic Timers
- 34.4.3 Automatic Timers
- 34.4.4 Canceling and Saving Timers
- 34.4.5 Getting Timer Information
- 34.4.6 Transactions and Timers
- 34.4.7 The timersession Example
- 34.4.8 Running the timersession Example
- 34.4.8.1 To Run the timersession Example Using NetBeans IDE
- 34.4.8.2 To Build, Package, and Deploy the timersession Example Using Maven
- 34.4.8.3 To Run the Web Client
- 34.4.1 Creating Calendar-Based Timer Expressions
- 34.5 Handling Exceptions
- 34.1 The cart Example
- 35 Using the Embedded Enterprise Bean Container
- 35.1 Overview of the Embedded Enterprise Bean Container
- 35.2 Developing Embeddable Enterprise Bean Applications
- 35.2.1 Running Embedded Applications
- 35.2.2 Creating the Enterprise Bean Container
- 35.2.2.1 Explicitly Specifying Enterprise Bean Modules to Be Initialized
- 35.2.3 Looking Up Session Bean References
- 35.2.4 Shutting Down the Enterprise Bean Container
- 35.3 The standalone Example Application
- 35.3.1 To Run the standalone Example Application Using NetBeans IDE
- 35.3.2 To Run the standalone Example Application Using Maven
- 36 Using Asynchronous Method Invocation in Session Beans
- 36.1 Asynchronous Method Invocation
- 36.1.1 Creating an Asynchronous Business Method
- 36.1.2 Calling Asynchronous Methods from Enterprise Bean Clients
- 36.1.2.1 Retrieving the Final Result from an Asynchronous Method Invocation
- 36.1.2.2 Cancelling an Asynchronous Method Invocation
- 36.1.2.3 Checking the Status of an Asynchronous Method Invocation
- 36.2 The async Example Application
- 36.2.1 Architecture of the async-war Module
- 36.2.2 Running the async Example
- 36.2.2.1 To Run the async Example Application Using NetBeans IDE
- 36.2.2.2 To Run the async Example Application Using Maven
- 36.1 Asynchronous Method Invocation
- Part VIII Persistence
- 37 Introduction to the Java Persistence API
- 37.1 Entities
- 37.1.1 Requirements for Entity Classes
- 37.1.2 Persistent Fields and Properties in Entity Classes
- 37.1.2.1 Persistent Fields
- 37.1.2.2 Persistent Properties
- 37.1.2.3 Using Collections in Entity Fields and Properties
- 37.1.2.4 Validating Persistent Fields and Properties
- 37.1.3 Primary Keys in Entities
- 37.1.4 Multiplicity in Entity Relationships
- 37.1.5 Direction in Entity Relationships
- 37.1.5.1 Bidirectional Relationships
- 37.1.5.2 Unidirectional Relationships
- 37.1.5.3 Queries and Relationship Direction
- 37.1.5.4 Cascade Operations and Relationships
- 37.1.5.5 Orphan Removal in Relationships
- 37.1.6 Embeddable Classes in Entities
- 37.2 Entity Inheritance
- 37.2.1 Abstract Entities
- 37.2.2 Mapped Superclasses
- 37.2.3 Non-Entity Superclasses
- 37.2.4 Entity Inheritance Mapping Strategies
- 37.2.4.1 The Single Table per Class Hierarchy Strategy
- 37.2.4.2 The Table per Concrete Class Strategy
- 37.2.4.3 The Joined Subclass Strategy
- 37.3 Managing Entities
- 37.3.1 The EntityManager Interface
- 37.3.1.1 Container-Managed Entity Managers
- 37.3.1.2 Application-Managed Entity Managers
- 37.3.1.3 Finding Entities Using the EntityManager
- 37.3.1.4 Managing an Entity Instance's Lifecycle
- 37.3.1.5 Persisting Entity Instances
- 37.3.1.6 Removing Entity Instances
- 37.3.1.7 Synchronizing Entity Data to the Database
- 37.3.2 Persistence Units
- 37.3.1 The EntityManager Interface
- 37.4 Querying Entities
- 37.5 Database Schema Creation
- 37.5.1 Configuring an Application to Create or Drop Database Tables
- 37.5.2 Loading Data Using SQL Scripts
- 37.6 Further Information about Persistence
- 37.1 Entities
- 38 Running the Persistence Examples
- 38.1 The order Application
- 38.1.1 Entity Relationships in the order Application
- 38.1.1.1 Self-Referential Relationships
- 38.1.1.2 One-to-One Relationships
- 38.1.1.3 One-to-Many Relationship Mapped to Overlapping Primary and Foreign Keys
- 38.1.1.4 Unidirectional Relationships
- 38.1.2 Primary Keys in the order Application
- 38.1.2.1 Generated Primary Keys
- 38.1.2.2 Compound Primary Keys
- 38.1.3 Entity Mapped to More Than One Database Table
- 38.1.4 Cascade Operations in the order Application
- 38.1.5 BLOB and CLOB Database Types in the order Application
- 38.1.6 Temporal Types in the order Application
- 38.1.7 Managing the order Application's Entities
- 38.1.7.1 Creating Entities
- 38.1.7.2 Finding Entities
- 38.1.7.3 Setting Entity Relationships
- 38.1.7.4 Using Queries
- 38.1.7.5 Removing Entities
- 38.1.8 Running the order Example
- 38.1.8.1 To Run the order Example Using NetBeans IDE
- 38.1.8.2 To Run the order Example Using Maven
- 38.1.1 Entity Relationships in the order Application
- 38.2 The roster Application
- 38.2.1 Relationships in the roster Application
- 38.2.1.1 The Many-To-Many Relationship in roster
- 38.2.2 Entity Inheritance in the roster Application
- 38.2.3 Criteria Queries in the roster Application
- 38.2.3.1 Metamodel Classes in the roster Application
- 38.2.3.2 Obtaining a CriteriaBuilder Instance in RequestBean
- 38.2.3.3 Creating Criteria Queries in RequestBean's Business Methods
- 38.2.4 Automatic Table Generation in the roster Application
- 38.2.5 Running the roster Example
- 38.2.5.1 To Run the roster Example Using NetBeans IDE
- 38.2.5.2 To Run the roster Example Using Maven
- 38.2.1 Relationships in the roster Application
- 38.3 The address-book Application
- 38.3.1 Bean Validation Constraints in address-book
- 38.3.2 Specifying Error Messages for Constraints in address-book
- 38.3.3 Validating Contact Input from a JavaServer Faces Application
- 38.3.4 Running the address-book Example
- 38.3.4.1 To Run the address-book Example Using NetBeans IDE
- 38.3.4.2 To Run the address-book Example Using Maven
- 38.1 The order Application
- 39 The Java Persistence Query Language
- 39.1 Query Language Terminology
- 39.2 Creating Queries Using the Java Persistence Query Language
- 39.2.1 Named Parameters in Queries
- 39.2.2 Positional Parameters in Queries
- 39.3 Simplified Query Language Syntax
- 39.3.1 Select Statements
- 39.3.2 Update and Delete Statements
- 39.4 Example Queries
- 39.4.1 Simple Queries
- 39.4.1.1 A Basic Select Query
- 39.4.1.2 Eliminating Duplicate Values
- 39.4.1.3 Using Named Parameters
- 39.4.2 Queries That Navigate to Related Entities
- 39.4.2.1 A Simple Query with Relationships
- 39.4.2.2 Navigating to Single-Valued Relationship Fields
- 39.4.2.3 Traversing Relationships with an Input Parameter
- 39.4.2.4 Traversing Multiple Relationships
- 39.4.2.5 Navigating According to Related Fields
- 39.4.3 Queries with Other Conditional Expressions
- 39.4.3.1 The LIKE Expression
- 39.4.3.2 The IS NULL Expression
- 39.4.3.3 The IS EMPTY Expression
- 39.4.3.4 The BETWEEN Expression
- 39.4.3.5 Comparison Operators
- 39.4.4 Bulk Updates and Deletes
- 39.4.4.1 Update Queries
- 39.4.4.2 Delete Queries
- 39.4.1 Simple Queries
- 39.5 Full Query Language Syntax
- 39.5.1 BNF Symbols
- 39.5.2 BNF Grammar of the Java Persistence Query Language
- 39.5.3 FROM Clause
- 39.5.3.1 Identifiers
- 39.5.3.2 Identification Variables
- 39.5.3.3 Range Variable Declarations
- 39.5.3.4 Collection Member Declarations
- 39.5.3.5 Joins
- 39.5.4 Path Expressions
- 39.5.4.1 Examples of Path Expressions
- 39.5.4.2 Expression Types
- 39.5.4.3 Navigation
- 39.5.5 WHERE Clause
- 39.5.5.1 Literals
- 39.5.5.2 Input Parameters
- 39.5.5.3 Conditional Expressions
- 39.5.5.4 Operators and Their Precedence
- 39.5.5.5 BETWEEN Expressions
- 39.5.5.6 IN Expressions
- 39.5.5.7 LIKE Expressions
- 39.5.5.8 NULL Comparison Expressions
- 39.5.5.9 Empty Collection Comparison Expressions
- 39.5.5.10 Collection Member Expressions
- 39.5.5.11 Subqueries
- 39.5.5.12 Functional Expressions
- 39.5.5.13 Case Expressions
- 39.5.5.14 NULL Values
- 39.5.5.15 Equality Semantics
- 39.5.6 SELECT Clause
- 39.5.6.1 Return Types
- 39.5.6.2 The DISTINCT Keyword
- 39.5.6.3 Constructor Expressions
- 39.5.7 ORDER BY Clause
- 39.5.8 GROUP BY and HAVING Clauses
- 40 Using the Criteria API to Create Queries
- 40.1 Overview of the Criteria and Metamodel APIs
- 40.2 Using the Metamodel API to Model Entity Classes
- 40.2.1 Using Metamodel Classes
- 40.3 Using the Criteria API and Metamodel API to Create Basic Typesafe Queries
- 40.3.1 Creating a Criteria Query
- 40.3.2 Query Roots
- 40.3.3 Querying Relationships Using Joins
- 40.3.4 Path Navigation in Criteria Queries
- 40.3.5 Restricting Criteria Query Results
- 40.3.5.1 The Expression Interface Methods
- 40.3.5.2 Expression Methods in the CriteriaBuilder Interface
- 40.3.6 Managing Criteria Query Results
- 40.3.6.1 Ordering Results
- 40.3.6.2 Grouping Results
- 40.3.7 Executing Queries
- 40.3.7.1 Single-Valued Query Results
- 40.3.7.2 Collection-Valued Query Results
- 41 Creating and Using String-Based Criteria Queries
- 41.1 Overview of String-Based Criteria API Queries
- 41.2 Creating String-Based Queries
- 41.3 Executing String-Based Queries
- 42 Controlling Concurrent Access to Entity Data with Locking
- 42.1 Overview of Entity Locking and Concurrency
- 42.1.1 Using Optimistic Locking
- 42.2 Lock Modes
- 42.2.1 Setting the Lock Mode
- 42.2.2 Using Pessimistic Locking
- 42.2.2.1 Pessimistic Locking Timeouts
- 42.1 Overview of Entity Locking and Concurrency
- 43 Creating Fetch Plans with Entity Graphs
- 43.1 Entity Graph Basics
- 43.1.1 The Default Entity Graph
- 43.1.2 Using Entity Graphs in Persistence Operations
- 43.1.2.1 Fetch Graphs
- 43.1.2.2 Load Graphs
- 43.2 Using Named Entity Graphs
- 43.2.1 Applying Named Entity Graph Annotations to Entity Classes
- 43.2.2 Obtaining EntityGraph Instances from Named Entity Graphs
- 43.3 Using Entity Graphs in Query Operations
- 43.1 Entity Graph Basics
- 44 Using a Second-Level Cache with Java Persistence API Applications
- 44.1 Overview of the Second-Level Cache
- 44.1.1 Controlling whether Entities May Be Cached
- 44.2 Specifying the Cache Mode Settings to Improve Performance
- 44.2.1 Setting the Cache Retrieval and Store Modes
- 44.2.1.1 Cache Retrieval Mode
- 44.2.1.2 Cache Store Mode
- 44.2.1.3 Setting the Cache Retrieval or Store Mode
- 44.2.2 Controlling the Second-Level Cache Programmatically
- 44.2.2.1 Checking whether an Entity's Data Is Cached
- 44.2.2.2 Removing an Entity from the Cache
- 44.2.2.3 Removing All Data from the Cache
- 44.2.1 Setting the Cache Retrieval and Store Modes
- 44.1 Overview of the Second-Level Cache
- Part IX Messaging
- 45 Java Message Service Concepts
- 45.1 Overview of the JMS API
- 45.1.1 What Is Messaging?
- 45.1.2 What Is the JMS API?
- 45.1.3 When Can You Use the JMS API?
- 45.1.4 How Does the JMS API Work with the Java EE Platform?
- 45.2 Basic JMS API Concepts
- 45.2.1 JMS API Architecture
- 45.2.2 Messaging Styles
- 45.2.2.1 Point-to-Point Messaging Style
- 45.2.2.2 Publish/Subscribe Messaging Style
- 45.2.3 Message Consumption
- 45.3 The JMS API Programming Model
- 45.3.1 JMS Administered Objects
- 45.3.1.1 JMS Connection Factories
- 45.3.1.2 JMS Destinations
- 45.3.2 Connections
- 45.3.3 Sessions
- 45.3.4 JMSContext Objects
- 45.3.5 JMS Message Producers
- 45.3.6 JMS Message Consumers
- 45.3.6.1 JMS Message Listeners
- 45.3.6.2 JMS Message Selectors
- 45.3.6.3 Consuming Messages from Topics
- 45.3.6.4 Creating Durable Subscriptions
- 45.3.6.5 Creating Shared Subscriptions
- 45.3.7 JMS Messages
- 45.3.7.1 Message Headers
- 45.3.7.2 Message Properties
- 45.3.7.3 Message Bodies
- 45.3.8 JMS Queue Browsers
- 45.3.9 JMS Exception Handling
- 45.3.1 JMS Administered Objects
- 45.4 Using Advanced JMS Features
- 45.4.1 Controlling Message Acknowledgment
- 45.4.2 Specifying Options for Sending Messages
- 45.4.2.1 Specifying Message Persistence
- 45.4.2.2 Setting Message Priority Levels
- 45.4.2.3 Allowing Messages to Expire
- 45.4.2.4 Specifying a Delivery Delay
- 45.4.2.5 Using JMSProducer Method Chaining
- 45.4.3 Creating Temporary Destinations
- 45.4.4 Using JMS Local Transactions
- 45.4.5 Sending Messages Asynchronously
- 45.5 Using the JMS API in Java EE Applications
- 45.5.1 Creating Resources for Java EE Applications
- 45.5.2 Using Resource Injection in Enterprise Bean or Web Components
- 45.5.2.1 Injecting a ConnectionFactory, Queue, or Topic
- 45.5.2.2 Injecting a JMSContext Object
- 45.5.3 Using Java EE Components to Produce and to Synchronously Receive Messages
- 45.5.3.1 Managing JMS Resources in Web and EJB Components
- 45.5.3.2 Managing Transactions in Session Beans
- 45.5.4 Using Message-Driven Beans to Receive Messages Asynchronously
- 45.5.5 Managing JTA Transactions
- 45.6 Further Information about JMS
- 45.1 Overview of the JMS API
- 46 Java Message Service Examples
- 46.1 Overview of the JMS Examples
- 46.2 Writing Simple JMS Applications
- 46.2.1 Starting the JMS Provider
- 46.2.2 Creating JMS Administered Objects
- 46.2.2.1 To Create Resources for the Simple Examples
- 46.2.3 Building All the Simple Examples
- 46.2.3.1 To Build All the Simple Examples Using NetBeans IDE
- 46.2.3.2 To Build All the Simple Examples Using Maven
- 46.2.4 Sending Messages
- 46.2.4.1 The Producer.java Client
- 46.2.4.2 To Run the Producer Client
- 46.2.5 Receiving Messages Synchronously
- 46.2.5.1 The SynchConsumer.java Client
- 46.2.5.2 To Run the SynchConsumer and Producer Clients
- 46.2.6 Using a Message Listener for Asynchronous Message Delivery
- 46.2.6.1 Writing the AsynchConsumer.java and TextListener.java Clients
- 46.2.6.2 To Run the AsynchConsumer and Producer Clients
- 46.2.7 Browsing Messages on a Queue
- 46.2.7.1 The MessageBrowser.java Client
- 46.2.7.2 To Run the QueueBrowser Client
- 46.2.8 Running Multiple Consumers on the Same Destination
- 46.2.9 Acknowledging Messages
- 46.2.9.1 To Run the ClientAckConsumer Client
- 46.3 Writing More Advanced JMS Applications
- 46.3.1 Using Durable Subscriptions
- 46.3.1.1 To Create Resources for the Durable Subscription Example
- 46.3.1.2 To Run the Durable Subscription Example
- 46.3.1.3 To Run the unsubscriber Example
- 46.3.2 Using Local Transactions
- 46.3.2.1 To Create Resources for the transactedexample Example
- 46.3.2.2 To Run the transactedexample Clients
- 46.3.1 Using Durable Subscriptions
- 46.4 Writing High Performance and Scalable JMS Applications
- 46.4.1 Using Shared Nondurable Subscriptions
- 46.4.1.1 Writing the Clients for the Shared Consumer Example
- 46.4.1.2 To Run the SharedConsumer and Producer Clients
- 46.4.2 Using Shared Durable Subscriptions
- 46.4.2.1 To Run the SharedDurableConsumer and Producer Clients
- 46.4.1 Using Shared Nondurable Subscriptions
- 46.5 Sending and Receiving Messages Using a Simple Web Application
- 46.5.1 The websimplemessage Facelets Pages
- 46.5.2 The websimplemessage Managed Beans
- 46.5.3 Running the websimplemessage Example
- 46.5.3.1 Creating Resources for the websimplemessage Example
- 46.5.3.2 To Package and Deploy websimplemessage Using NetBeans IDE
- 46.5.3.3 To Package and Deploy websimplemessage Using Maven
- 46.5.3.4 To Run the websimplemessage Example
- 46.6 Receiving Messages Asynchronously Using a Message-Driven Bean
- 46.6.1 Overview of the simplemessage Example
- 46.6.2 The simplemessage Application Client
- 46.6.3 The simplemessage Message-Driven Bean Class
- 46.6.3.1 The onMessage Method
- 46.6.4 Running the simplemessage Example
- 46.6.4.1 Creating Resources for the simplemessage Example
- 46.6.4.2 To Run the simplemessage Example Using NetBeans IDE
- 46.6.4.3 To Run the simplemessage Example Using Maven
- 46.7 Sending Messages from a Session Bean to an MDB
- 46.7.1 Writing the Application Components for the clientsessionmdb Example
- 46.7.1.1 Coding the Application Client: MyAppClient.java
- 46.7.1.2 Coding the Publisher Session Bean
- 46.7.1.3 Coding the Message-Driven Bean: MessageBean.java
- 46.7.2 Running the clientsessionmdb Example
- 46.7.2.1 To Run clientsessionmdb Using NetBeans IDE
- 46.7.2.2 To Run clientsessionmdb Using Maven
- 46.7.1 Writing the Application Components for the clientsessionmdb Example
- 46.8 Using an Entity to Join Messages from Two MDBs
- 46.8.1 Overview of the clientmdbentity Example Application
- 46.8.2 Writing the Application Components for the clientmdbentity Example
- 46.8.2.1 Coding the Application Client: HumanResourceClient.java
- 46.8.2.2 Coding the Message-Driven Beans for the clientmdbentity Example
- 46.8.2.3 Coding the Entity Class for the clientmdbentity Example
- 46.8.3 Running the clientmdbentity Example
- 46.8.3.1 To Run clientmdbentity Using NetBeans IDE
- 46.8.3.2 To Run clientmdbentity Using Maven
- 46.8.3.3 Viewing the Application Output
- 46.9 Using NetBeans IDE to Create JMS Resources
- 46.9.1 To Create JMS Resources Using NetBeans IDE
- 46.9.2 To Delete JMS Resources Using NetBeans IDE
- Part X Security
- 47 Introduction to Security in the Java EE Platform
- 47.1 Overview of Java EE Security
- 47.1.1 A Simple Application Security Walkthrough
- 47.1.1.1 Step 1: Initial Request
- 47.1.1.2 Step 2: Initial Authentication
- 47.1.1.3 Step 3: URL Authorization
- 47.1.1.4 Step 4: Fulfilling the Original Request
- 47.1.1.5 Step 5: Invoking Enterprise Bean Business Methods
- 47.1.2 Features of a Security Mechanism
- 47.1.3 Characteristics of Application Security
- 47.1.1 A Simple Application Security Walkthrough
- 47.2 Security Mechanisms
- 47.2.1 Java SE Security Mechanisms
- 47.2.2 Java EE Security Mechanisms
- 47.2.2.1 Application-Layer Security
- 47.2.2.2 Transport-Layer Security
- 47.2.2.3 Message-Layer Security
- 47.3 Securing Containers
- 47.3.1 Using Annotations to Specify Security Information
- 47.3.2 Using Deployment Descriptors for Declarative Security
- 47.3.3 Using Programmatic Security
- 47.4 Securing GlassFish Server
- 47.5 Working with Realms, Users, Groups, and Roles
- 47.5.1 What Are Realms, Users, Groups, and Roles?
- 47.5.1.1 What Is a Realm?
- 47.5.1.2 What Is a User?
- 47.5.1.3 What Is a Group?
- 47.5.1.4 What Is a Role?
- 47.5.1.5 Some Other Terminology
- 47.5.2 Managing Users and Groups in GlassFish Server
- 47.5.2.1 To Add Users to GlassFish Server
- 47.5.3 Setting Up Security Roles
- 47.5.4 Mapping Roles to Users and Groups
- 47.5.1 What Are Realms, Users, Groups, and Roles?
- 47.6 Establishing a Secure Connection Using SSL
- 47.6.1 Verifying and Configuring SSL Support
- 47.7 Further Information about Security
- 47.1 Overview of Java EE Security
- 48 Getting Started Securing Web Applications
- 48.1 Overview of Web Application Security
- 48.2 Securing Web Applications
- 48.2.1 Specifying Security Constraints
- 48.2.1.1 Specifying a Web Resource Collection
- 48.2.1.2 Specifying an Authorization Constraint
- 48.2.1.3 Specifying a Secure Connection
- 48.2.1.4 Specifying Security Constraints for Resources
- 48.2.2 Specifying Authentication Mechanisms
- 48.2.2.1 HTTP Basic Authentication
- 48.2.2.2 Form-Based Authentication
- 48.2.2.3 Digest Authentication
- 48.2.3 Specifying an Authentication Mechanism in the Deployment Descriptor
- 48.2.4 Declaring Security Roles
- 48.2.1 Specifying Security Constraints
- 48.3 Using Programmatic Security with Web Applications
- 48.3.1 Authenticating Users Programmatically
- 48.3.2 Checking Caller Identity Programmatically
- 48.3.3 Example Code for Programmatic Security
- 48.3.4 Declaring and Linking Role References
- 48.4 Examples: Securing Web Applications
- 48.4.1 To Set Up Your System for Running the Security Examples
- 48.4.2 The hello2-basicauth Example: Basic Authentication with a Servlet
- 48.4.2.1 Specifying Security for Basic Authentication Using Annotations
- 48.4.2.2 To Build, Package, and Deploy the hello2-basicauth Example Using NetBeans IDE
- 48.4.2.3 To Build, Package, and Deploy the hello2-basicauth Example Using Maven
- 48.4.2.4 To Run the hello2-basicauth Example
- 48.4.3 The hello1-formauth Example: Form-Based Authentication with a JavaServer Faces Application
- 48.4.3.1 Creating the Login Form and the Error Page
- 48.4.3.2 Specifying Security for the Form-Based Authentication Example
- 48.4.3.3 To Build, Package, and Deploy the hello1-formauth Example Using NetBeans IDE
- 48.4.3.4 To Build, Package, and Deploy the hello1-formauth Example Using Maven and the asadmin Command
- 48.4.3.5 To Run the hello1-formauth Example
- 49 Getting Started Securing Enterprise Applications
- 49.1 Basic Security Tasks for Enterprise Applications
- 49.2 Securing Enterprise Beans
- 49.2.1 Securing an Enterprise Bean Using Declarative Security
- 49.2.1.1 Specifying Authorized Users by Declaring Security Roles
- 49.2.1.2 Specifying an Authentication Mechanism and Secure Connection
- 49.2.2 Securing an Enterprise Bean Programmatically
- 49.2.2.1 Accessing an Enterprise Bean Caller's Security Context
- 49.2.3 Propagating a Security Identity (Run-As)
- 49.2.3.1 Configuring a Component's Propagated Security Identity
- 49.2.3.2 Trust between Containers
- 49.2.4 Deploying Secure Enterprise Beans
- 49.2.1 Securing an Enterprise Bean Using Declarative Security
- 49.3 Examples: Securing Enterprise Beans
- 49.3.1 The cart-secure Example: Securing an Enterprise Bean with Declarative Security
- 49.3.1.1 Annotating the Bean
- 49.3.1.2 To Run the cart-secure Example Using NetBeans IDE
- 49.3.1.3 To Run the cart-secure Example Using Maven
- 49.3.2 The converter-secure Example: Securing an Enterprise Bean with Programmatic Security
- 49.3.2.1 Modifying ConverterBean
- 49.3.2.2 Modifying ConverterServlet
- 49.3.2.3 To Run the converter-secure Example Using NetBeans IDE
- 49.3.2.4 To Run the converter-secure Example Using Maven
- 49.3.2.5 To Run the converter-secure Example
- 49.3.1 The cart-secure Example: Securing an Enterprise Bean with Declarative Security
- 50 Java EE Security: Advanced Topics
- 50.1 Working with Digital Certificates
- 50.1.1 Creating a Server Certificate
- 50.1.1.1 To Use keytool to Create a Server Certificate
- 50.1.2 Adding Users to the Certificate Realm
- 50.1.3 Using a Different Server Certificate with GlassFish Server
- 50.1.3.1 To Specify a Different Server Certificate
- 50.1.1 Creating a Server Certificate
- 50.2 Authentication Mechanisms
- 50.2.1 Client Authentication
- 50.2.2 Mutual Authentication
- 50.2.2.1 Enabling Mutual Authentication over SSL
- 50.2.2.2 Creating a Client Certificate for Mutual Authentication
- 50.3 Using the JDBC Realm for User Authentication
- 50.3.1 To Configure a JDBC Authentication Realm
- 50.4 Securing HTTP Resources
- 50.5 Securing Application Clients
- 50.5.1 Using Login Modules
- 50.5.2 Using Programmatic Login
- 50.6 Securing Enterprise Information Systems Applications
- 50.6.1 Container-Managed Sign-On
- 50.6.2 Component-Managed Sign-On
- 50.6.3 Configuring Resource Adapter Security
- 50.6.4 Mapping an Application Principal to EIS Principals
- 50.7 Configuring Security Using Deployment Descriptors
- 50.7.1 Specifying Security for Basic Authentication in the Deployment Descriptor
- 50.7.2 Specifying Non-Default Principal-to-Role Mapping in the Deployment Descriptor
- 50.8 Further Information about Advanced Security Topics
- 50.1 Working with Digital Certificates
- Part XI Java EE Supporting Technologies
- 51 Transactions
- 51.1 Transactions in Java EE Applications
- 51.2 What Is a Transaction?
- 51.3 Container-Managed Transactions
- 51.3.1 Transaction Attributes
- 51.3.1.1 Required Attribute
- 51.3.1.2 RequiresNew Attribute
- 51.3.1.3 Mandatory Attribute
- 51.3.1.4 NotSupported Attribute
- 51.3.1.5 Supports Attribute
- 51.3.1.6 Never Attribute
- 51.3.1.7 Summary of Transaction Attributes
- 51.3.1.8 Setting Transaction Attributes
- 51.3.2 Rolling Back a Container-Managed Transaction
- 51.3.3 Synchronizing a Session Bean's Instance Variables
- 51.3.4 Methods Not Allowed in Container-Managed Transactions
- 51.3.1 Transaction Attributes
- 51.4 Bean-Managed Transactions
- 51.4.1 JTA Transactions
- 51.4.2 Returning without Committing
- 51.4.3 Methods Not Allowed in Bean-Managed Transactions
- 51.5 Transaction Timeouts
- 51.5.1 To Set a Transaction Timeout
- 51.6 Updating Multiple Databases
- 51.7 Transactions in Web Components
- 51.8 Further Information about Transactions
- 52 Resource Adapters and Contracts
- 52.1 What Is a Resource Adapter?
- 52.1.1 Management Contracts
- 52.1.1.1 Lifecycle Management
- 52.1.1.2 Work Management Contract
- 52.1.2 Generic Work Context Contract
- 52.1.3 Outbound and Inbound Contracts
- 52.1.1 Management Contracts
- 52.2 Metadata Annotations
- 52.3 Common Client Interface
- 52.4 Using Resource Adapters with Contexts and Dependency Injection for Java EE (CDI)
- 52.5 Further Information about Resource Adapters
- 52.1 What Is a Resource Adapter?
- 53 The Resource Adapter Examples
- 53.1 The trading Example
- 53.1.1 Using the Outbound Resource Adapter
- 53.1.2 Implementing the Outbound Resource Adapter
- 53.1.3 Running the trading Example
- 53.1.3.1 To Run the trading Example Using NetBeans IDE
- 53.1.3.2 To Run the trading Example Using Maven
- 53.2 The traffic Example
- 53.2.1 Using the Inbound Resource Adapter
- 53.2.2 Implementing the Inbound Resource Adapter
- 53.2.3 Running the traffic Example
- 53.2.3.1 To Run the traffic Example Using NetBeans IDE
- 53.2.3.2 To Run the traffic Example Using Maven
- 53.1 The trading Example
- 54 Using Java EE Interceptors
- 54.1 Overview of Interceptors
- 54.1.1 Interceptor Classes
- 54.1.2 Interceptor Lifecycle
- 54.1.3 Interceptors and CDI
- 54.2 Using Interceptors
- 54.2.1 Intercepting Method Invocations
- 54.2.1.1 Using Multiple Method Interceptors
- 54.2.1.2 Accessing Target Method Parameters from an Interceptor Class
- 54.2.2 Intercepting Lifecycle Callback Events
- 54.2.2.1 Using AroundConstruct Interceptor Methods
- 54.2.2.2 Using Multiple Lifecycle Callback Interceptors
- 54.2.3 Intercepting Timeout Events
- 54.2.3.1 Using Multiple Timeout Interceptors
- 54.2.4 Binding Interceptors to Components
- 54.2.4.1 Declaring the Interceptor Bindings on an Interceptor Class
- 54.2.4.2 Binding a Component to an Interceptor
- 54.2.5 Ordering Interceptors
- 54.2.1 Intercepting Method Invocations
- 54.3 The interceptor Example Application
- 54.3.1 Running the interceptor Example
- 54.3.1.1 To Run the interceptor Example Using NetBeans IDE
- 54.3.1.2 To Run the interceptor Example Using Maven
- 54.3.1 Running the interceptor Example
- 54.1 Overview of Interceptors
- 55 Batch Processing
- 55.1 Introduction to Batch Processing
- 55.1.1 Steps in Batch Jobs
- 55.1.2 Parallel Processing
- 55.1.3 Status and Decision Elements
- 55.1.4 Batch Framework Functionality
- 55.2 Batch Processing in Java EE
- 55.2.1 The Batch Processing Framework
- 55.2.2 Creating Batch Applications
- 55.2.3 Elements of a Batch Job
- 55.2.4 Properties and Parameters
- 55.2.5 Job Instances and Job Executions
- 55.2.6 Batch and Exit Status
- 55.3 Simple Use Case
- 55.3.1 Chunk Step
- 55.3.2 Task Step
- 55.4 Using the Job Specification Language
- 55.4.1 The job Element
- 55.4.2 The step Element
- 55.4.2.1 The chunk Element
- 55.4.2.2 The batchlet Element
- 55.4.2.3 The partition Element
- 55.4.3 The flow Element
- 55.4.4 The split Element
- 55.4.5 The decision Element
- 55.5 Creating Batch Artifacts
- 55.5.1 Batch Artifact Interfaces
- 55.5.2 Dependency Injection in Batch Artifacts
- 55.5.3 Using the Context Objects from the Batch Runtime
- 55.6 Submitting Jobs to the Batch Runtime
- 55.6.1 Starting a Job
- 55.6.2 Checking the Status of a Job
- 55.6.3 Invoking the Batch Runtime in Your Application
- 55.7 Packaging Batch Applications
- 55.8 The webserverlog Example Application
- 55.8.1 Architecture of the webserverlog Example Application
- 55.8.1.1 The Job Definition File
- 55.8.1.2 The LogLine and LogFilteredLine Items
- 55.8.1.3 The Chunk Step Batch Artifacts
- 55.8.1.4 The Listener Batch Artifacts
- 55.8.1.5 The Task Step Batch Artifact
- 55.8.1.6 The JavaServer Faces Pages
- 55.8.1.7 The Managed Bean
- 55.8.2 Running the webserverlog Example Application
- 55.8.2.1 To Run the webserverlog Example Application Using NetBeans IDE
- 55.8.2.2 To Run the webserverlog Example Application Using Maven
- 55.8.1 Architecture of the webserverlog Example Application
- 55.9 The phonebilling Example Application
- 55.9.1 Architecture of the phonebilling Example Application
- 55.9.1.1 The Job Definition File
- 55.9.1.2 The CallRecord and PhoneBill Entities
- 55.9.1.3 The Call Records Chunk Step
- 55.9.1.4 The Phone Billing Chunk Step
- 55.9.1.5 The JavaServer Faces Pages
- 55.9.1.6 The Managed Bean
- 55.9.2 Running the phonebilling Example Application
- 55.9.2.1 To Run the phonebilling Example Application Using NetBeans IDE
- 55.9.2.2 To Run the phonebilling Example Application Using Maven
- 55.9.1 Architecture of the phonebilling Example Application
- 55.10 Further Information about Batch Processing
- 55.1 Introduction to Batch Processing
- 56 Concurrency Utilities for Java EE
- 56.1 Concurrency Basics
- 56.1.1 Threads and Processes
- 56.2 Main Components of the Concurrency Utilities
- 56.3 Concurrency and Transactions
- 56.4 Concurrency and Security
- 56.5 The jobs Concurrency Example
- 56.5.1 Running the jobs Example
- 56.5.1.1 To Configure GlassFish Server for the Basic Concurrency Example
- 56.5.1.2 To Build, Package, and Deploy the jobs Example Using NetBeans IDE
- 56.5.1.3 To Build, Package, and Deploy the jobs Example Using Maven
- 56.5.1.4 To Run the jobs Example and Submit Jobs with Low Priority
- 56.5.1.5 To Run the jobs Example and Submit Jobs with High Priority
- 56.5.1 Running the jobs Example
- 56.6 The taskcreator Concurrency Example
- 56.6.1 Running the taskcreator Example
- 56.6.1.1 To Build, Package, and Deploy the taskcreator Example Using NetBeans IDE
- 56.6.1.2 To Build, Package, and Deploy the taskcreator Example Using Maven
- 56.6.1.3 To Run the taskcreator Example
- 56.6.1 Running the taskcreator Example
- 56.7 Further Information about the Concurrency Utilities
- 56.1 Concurrency Basics
- Part XII Case Studies
- 57 Duke's Bookstore Case Study Example
- 57.1 Design and Architecture of Duke's Bookstore
- 57.2 The Duke's Bookstore Interface
- 57.2.1 The Book Java Persistence API Entity
- 57.2.2 Enterprise Beans Used in Duke's Bookstore
- 57.2.3 Facelets Pages and Managed Beans Used in Duke's Bookstore
- 57.2.4 Custom Components and Other Custom Objects Used in Duke's Bookstore
- 57.2.5 Properties Files Used in Duke's Bookstore
- 57.2.6 Deployment Descriptors Used in Duke's Bookstore
- 57.3 Running the Duke's Bookstore Case Study Application
- 57.3.1 To Build and Deploy Duke's Bookstore Using NetBeans IDE
- 57.3.2 To Build and Deploy Duke's Bookstore Using Maven
- 57.3.3 To Run Duke's Bookstore
- 58 Duke's Tutoring Case Study Example
- 58.1 Design and Architecture of Duke's Tutoring
- 58.2 Main Interface
- 58.2.1 Java Persistence API Entities Used in the Main Interface
- 58.2.2 Enterprise Beans Used in the Main Interface
- 58.2.3 WebSocket Endpoint Used in the Main Interface
- 58.2.4 Facelets Files Used in the Main Interface
- 58.2.5 Helper Classes Used in the Main Interface
- 58.2.6 Properties Files
- 58.2.7 Deployment Descriptors Used in Duke's Tutoring
- 58.3 Administration Interface
- 58.3.1 Enterprise Beans Used in the Administration Interface
- 58.3.2 Facelets Files Used in the Administration Interface
- 58.3.3 CDI Managed Beans Used in the Administration Interface
- 58.3.4 Helper Classes Used in the Administration Interface
- 58.4 Running the Duke's Tutoring Case Study Application
- 58.4.1 Running Duke's Tutoring
- 58.4.1.1 To Build and Deploy Duke's Tutoring Using NetBeans IDE
- 58.4.1.2 To Build and Deploy Duke's Tutoring Using Maven
- 58.4.1.3 Using Duke's Tutoring
- 58.4.1 Running Duke's Tutoring
- 59 Duke's Forest Case Study Example
- 59.1 Design and Architecture of Duke's Forest
- 59.1.1 The events Project
- 59.1.2 The entities Project
- 59.1.3 The dukes-payment Project
- 59.1.4 The dukes-resources Project
- 59.1.5 The Duke's Store Project
- 59.1.5.1 Enterprise Beans Used in Duke's Store
- 59.1.5.2 Facelets Files Used in the Main Interface of Duke's Store
- 59.1.5.3 Facelets Files Used in the Administration Interface of Duke's Store
- 59.1.5.4 Managed Beans Used in Duke's Store
- 59.1.5.5 Helper Classes Used in Duke's Store
- 59.1.5.6 Qualifiers Used in Duke's Store
- 59.1.5.7 Event Handlers Used in Duke's Store
- 59.1.5.8 Deployment Descriptors Used in Duke's Store
- 59.1.6 The Duke's Shipment Project
- 59.1.6.1 Enterprise Beans Used in Duke's Shipment
- 59.1.6.2 Facelets Files Used in Duke's Shipment
- 59.1.6.3 Managed Beans Used in Duke's Shipment
- 59.1.6.4 Helper Class Used in Duke's Shipment
- 59.1.6.5 Qualifier Used in Duke's Shipment
- 59.1.6.6 Deployment Descriptors Used in Duke's Shipment
- 59.2 Building and Deploying the Duke's Forest Case Study Application
- 59.2.1 To Build and Deploy the Duke's Forest Application Using NetBeans IDE
- 59.2.2 To Build and Deploy the Duke's Forest Application Using Maven
- 59.3 Running the Duke's Forest Application
- 59.3.1 To Register as a Duke's Store Customer
- 59.3.2 To Purchase Products
- 59.3.3 To Approve Shipment of a Product
- 59.3.4 To Create a New Product
- 59.1 Design and Architecture of Duke's Forest
- Index
- Symbols
- A
- B
- C
- D
- E
- F
- G
- H
- I
- J
- K
- L
- M
- N
- O
- P
- Q
- R
- S
- T
- U
- V
- W
- X
The book hasn't received reviews yet.
You May Also Like
Also Available On
Categories
Arts & Photography489Biographies & Memoirs82Business & Money149Children's Books1718Christian Books & Bibles991Comics & Graphic Novels6Computers & Technology877Cookbooks, Food & Wine24Crafts, Hobbies & Home207Education & Teaching3909Engineering & Transportation1Gay & Lesbian3Health, Fitness & Dieting14History5884Humor & Entertainment165Law154Literature & Fiction19919Medical Books2Mystery, Thriller & Suspense24Other3126Parenting & Relationships12Politics & Social Sciences1482Professional & Technical26Reference11Religion & Spirituality1749Romance275Science & Math1241Science Fiction & Fantasy211Self-Help42Sports & Outdoors48Teen & Young Adult161Test Preparation175Travel115
Curated Lists
Free Machine Learning Books
11 Books
- Pattern Recognition and Machine Learning (Information Science and Statistics)
- by Christopher M. Bishop
- Data mining
- by I. H. Witten
- The Elements of Statistical Learning: Data Mining, Inference, and Prediction
- by Various
Free Chemistry Textbooks
8 Books
- CK-12 Chemistry
- by Various
- Chemistry Grade 10 [CAPS]
- by Free High School Science Texts Project
- General Chemistry II
- by John Hutchinson
Free Mathematics Textbooks
21 Books
- Microsoft Word - How to Use Advanced Algebra II.doc
- by Jonathan Emmons
- Advanced Algebra II: Activities and Homework
- by Kenny Felder
- de2de
- by
Free Children Books
38 Books
- The Sun Who Lost His Way
- by
- Tania is a Detective
- by Kanika G
- Firenze_s-Light
- by
Free Java Books
10 Books
- Java 3D Programming
- by Daniel Selman
- The Java EE 6 Tutorial
- by Oracle Corporation
- JavaKid811
- by
- Jamaica Primary Social Studies 2nd Edition Student's Book 4
- by Eulie Mantock, Trineta Fendall, Clare Eastland
- Reggae Readers Student's Book 1
- by Louis Fidge
- Reggae Readers Student's Book 2
- by Louis Fidge