Skip Headers
Oracle® Application Development Framework Developer's Guide For Forms/4GL Developers
10
g
Release 3 (10.1.3.0)
B25947-01
Index
Next
Contents
Title and Copyright Information
Preface
Audience
Documentation Accessibility
Related Documents
Conventions
Part I Getting Started with Oracle ADF Applications
1
Introduction to Oracle ADF Applications
1.1
Introduction to Oracle ADF
1.2
Framework Architecture and Supported Technologies
1.2.1
View Layer Technologies Supported
1.2.2
Controller Layer Technologies Supported
1.2.3
Business Services Technologies Supported by ADF Model
1.2.4
Recommended Technologies for Enterprise 4GL Developers
1.3
Declarative Development with Oracle ADF and JavaServer Faces
1.3.1
Declarative Data Access and Validation with ADF Business Components
1.3.2
Declarative User Interface Design and Page Navigation with JavaServer Faces
1.3.2.1
Declarative User Interface Design with JSF
1.3.2.2
Declarative Page Navigation with JSF
1.3.3
Declarative Data Binding with Oracle ADF Model Layer
1.3.4
Simple, Event-Driven Approach to Add Custom Logic
1.3.4.1
Simple-to-Handle Events in the Controller Layer
1.3.4.2
Simple-to-Handle Events in the Business Service Layer
1.3.4.3
Simple to Globally Extend Basic Framework Functionality
1.4
Highlights of Additional ADF Features
1.4.1
Comprehensive JDeveloper Design-Time Support
1.4.2
Sophisticated AJAX-Style Web Pages Without Coding
1.4.3
Centralized, Metadata-Driven Functionality
1.4.4
Generation of Complete Web Tier Using Oracle JHeadstart
2
Overview of Development Process with Oracle ADF and JSF
2.1
Introduction to the Development Process
2.2
Creating an Application Workspace to Hold Your Files
2.3
Thinking About the Use Case and Page Flow
2.4
Designing the Database Schema
2.5
Creating a Layer of Business Domain Objects for Tables
2.5.1
Dragging and Dropping to Reverse-Engineer Entity Objects for Tables
2.5.2
Adding Business Validation Rules to Your Entity Object
2.5.3
Defining UI Control Hints for Your Entity Objects
2.6
Building the Business Service to Handle the Use Case
2.6.1
Creating a Application Module to Manage Technicians
2.6.2
Creating View Objects to Query Appropriate Data for the Use Case
2.6.3
Using View Objects in the Application Module's Data Model
2.6.4
Testing Your Service
2.6.5
The Data Control for Your Application Module Enables Data Binding
2.7
Dragging and Dropping Data to Create a New JSF Page
2.8
Examining the Binding Metadata Files Involved
2.9
Understanding How Components Reference Bindings via EL
2.10
Configuring Binding Properties If Needed
2.11
Understanding How Bindings Are Created at Runtime
2.12
Making the Display More Data-Driven
2.12.1
Hiding and Showing Groups of Components Based on Binding Properties
2.12.2
Toggling Between Alternative Sets of Components Based on Binding Properties
2.13
Adding the Edit Page and Finishing the Use Case
2.13.1
Adding Another View Object to the Data Model
2.13.2
Creating the Edit Page
2.13.3
Synchronizing the Search and Edit Page
2.13.4
Controlling Whether Data Appears Initially
2.13.5
Running the Final Result
2.14
Considering How Much Code Was Involved
3
Oracle ADF Service Request Demo Overview
3.1
Introduction to the Oracle ADF Service Request Demo
3.1.1
Requirements for Oracle ADF Service Request Application
3.1.2
Overview of the Schema
3.2
Setting Up the Oracle ADF Service Request Demo
3.2.1
Downloading and Installing the Oracle ADF Service Request Application
3.2.2
Installing the Oracle ADF Service Request Schema
3.2.3
Creating the Oracle JDeveloper Database Connection
3.2.4
Running the Oracle ADF Service Request Demo in JDeveloper
3.2.5
Running the Oracle ADF Service Request Demo Unit Tests in JDeveloper
3.3
Quick Tour of the Oracle ADF Service Request Demo
3.3.1
Customer Logs In and Reviews Existing Service Requests
3.3.2
Customer Creates a Service Request
3.3.3
Manager Logs In and Assigns a Service Request
3.3.4
Manager Views Reports and Updates Technician Skills
3.3.5
Technician Logs In and Updates a Service Request
Part II Building Your Business Services
4
Overview of ADF Business Components
4.1
Prescriptive Approach and Reusable Code for Business Services
4.2
What are ADF Business Components and What Can They Do?
4.3
Relating ADF Business Components to Familiar 4GL Tools
4.3.1
Familiar Concepts for Oracle Forms Developers
4.3.2
Familiar Concepts for PeopleTools Developers
4.3.3
Familiar Concepts for SiebelTools Developers
4.3.4
Familiar Functionality for ADO.NET Developers
4.4
Overview of ADF Business Components Implementation Architecture
4.4.1
Based on Standard Java and XML
4.4.2
Works with Any Application Server or Database
4.4.3
Implements All of the J2EE Design Patterns You Need
4.4.4
Components are Organized into Packages
4.4.5
Architecture of the Base ADF Business Components Layer
4.4.6
Components Are Metadata-Driven With Optional Custom Java Code
4.4.6.1
Example of an XML-Only Component
4.4.6.2
Example of a Component with Custom Java Class
4.4.7
Recommendations for Configuring ADF Business Components Design Time Preferences
4.4.7.1
Recommendation for Initially Disabling Custom Java Generation
4.4.7.2
Recommendation for Disabling Use of Package XML File
4.4.8
Basic Datatypes
4.4.9
Generic Versus Strongly-Typed APIs
4.4.10
Client-Accessible Components Can Have Custom Interfaces
4.4.10.1
Framework Client Interfaces for Components
4.4.10.2
Custom Client Interfaces for Components
4.5
Understanding the Active Data Model
4.5.1
What is an Active Data Model?
4.5.2
Examples of the Active Data Model In Action
4.5.3
Active Data Model Allows You to Eliminate Most Client-Side Code
4.6
Overview of ADF Business Components Design Time Facilities
4.6.1
Choosing a Connection, SQL Flavor, and Type Map
4.6.2
Creating New Components Using Wizards
4.6.3
Quick-Creating New Components Using the Context Menu
4.6.4
Editing Components Using the Component Editor
4.6.5
Visualizing, Creating, and Editing Components Using UML Diagrams
4.6.6
Testing Application Modules Using the Business Components Browser
4.6.7
Refactoring Components
5
Querying Data Using View Objects
5.1
Introduction to View Objects
5.2
Creating a Simple, Read-Only View Object
5.2.1
How to Create a Read-Only View Object
5.2.2
What Happens When You Create a Read-Only View Object
5.2.3
What You May Need to Know About View Objects
5.2.3.1
Editing an Existing View Object Definition
5.2.3.2
Working with Queries That Include SQL Expressions
5.2.3.3
Controlling the Length, Precision, and Scale of View Object Attributes
5.3
Using a View Object in an Application Module's Data Model
5.3.1
How to Create an Application Module
5.3.1.1
Understanding the Difference Between View Object Components and View Object Instances
5.3.2
What Happens When You Create an Application Module
5.3.3
What You May Need to Know About Application Modules
5.3.3.1
Editing an Application Module's Runtime Configuration Properties
5.4
Defining Attribute Control Hints
5.4.1
How to Add Attribute Control Hints
5.4.2
What Happens When You Add Attribute Control Hints
5.4.3
What You May Need to Know About Message Bundles
5.5
Testing View Objects Using the Business Components Browser
5.5.1
How to Test a View Object Using the Business Components Browser
5.5.2
What Happens When You Use the Business Components Browser
5.5.3
What You May Need to Know About the Business Components Browser
5.5.3.1
Customizing Configuration Options for the Current Run
5.5.3.2
Enabling ADF Business Components Debug Diagnostics
5.6
Working Programmatically with View Object Query Results
5.6.1
Common Methods for Working with the View Object's Default RowSet
5.6.2
Counting the Number of Rows in a RowSet
5.7
How to Create a Command-Line Java Test Client
5.7.1
What Happens When You Run a Test Client Program
5.7.2
What You May Need to Know About Running a Test Client
5.8
Filtering Results Using Query-By-Example View Criteria
5.8.1
How to Use View Criteria to Filter View Object Results
5.8.2
What Happens When You Use View Criteria to Filter View Object Results
5.8.3
What You May Need to Know About Query-By-Example Criteria
5.8.3.1
Use Attribute Names in View Criteria, Column Names in WHERE Clause
5.8.3.2
Testing View Criteria in the Business Component Browser
5.8.3.3
Altering Compound Search Conditions Using Multiple View Criteria Rows
5.8.3.4
Searching for a Row Whose Attribute Value is NULL Value
5.8.3.5
Searching Case-Insensitively
5.8.3.6
Clearing View Criteria in Effect
5.8.3.7
Applying View Criteria Causes Query to be Re-parsed
5.9
Using Named Bind Variables
5.9.1
Adding a Named Bind Variable
5.9.2
What Happens When You Add Named Bind Variables
5.9.3
What You May Need to Know About Named Bind Variables
5.9.3.1
Errors Related to Bind Variables
5.9.3.2
Bind Variables Default to NULL If No Default Supplied
5.9.3.3
Setting Existing Bind Variable Values at Runtime
5.9.3.4
Adding a Named Bind Variable at Runtime
5.9.3.5
Understanding the Default Use of Inline Views for Read-Only Queries
5.10
Working with Master/Detail Data
5.10.1
How to Create a Read-Only View Object Joining Tables
5.10.1.1
Using the Query Builder to Simplify Creating Joins
5.10.1.2
Testing the Join View
5.10.2
How to Create Master/Detail Hierarchies Using View Links
5.10.3
What Happens When You Create Master/Detail Hierarchies Using View Links
5.10.4
What You May Need to Know About View Links
5.10.4.1
View Link Accessor Attributes Return a RowSet
5.10.4.2
How to Access a Detail Collection Using the View Link Accessor
5.10.4.3
How to Enable Active Master/Detail Coordination in the Data Model
5.11
Generating Custom Java Classes for a View Object
5.11.1
How To Generate Custom Classes
5.11.1.1
Generating Bind Variable Accessors
5.11.1.2
Generating View Row Attribute Accessors
5.11.1.3
Exposing View Row Accessors to Clients
5.11.1.4
Configuring Default Java Generation Preferences
5.11.2
What Happens When You Generate Custom Classes
5.11.2.1
Seeing and Navigating to Custom Java Files
5.11.3
What You May Need to Know About Custom Classes
5.11.3.1
About the Framework Base Classes for a View Object
5.11.3.2
You Can Safely Add Code to the Custom Component File
5.11.3.3
Attribute Indexes and InvokeAccessor Generated Code
6
Creating a Business Domain Layer Using Entity Objects
6.1
Introduction to Entity Objects
6.2
Creating Entity Objects and Associations
6.2.1
How to Create Entity Objects and Associations from Existing Tables
6.2.2
What Happens When You Create Entity Objects and Associations from Existing Tables
6.2.2.1
What Happens When a Table Has No Primary Key
6.2.3
Creating Entity Objects Using the Create Entity Wizard
6.2.4
Creating an Entity Object for a Synonym or View
6.2.5
Editing an Existing Entity Object or Association
6.2.6
Creating Database Tables from Entity Objects
6.2.6.1
Using Database Key Constraints for an Association
6.2.7
Synchronizing an Entity with Changes to Its Database Table
6.2.8
What You May Need to Know About Creating Entities
6.3
Creating and Configuring Associations
6.3.1
How to Create an Association
6.3.1.1
Changing Entity Association Accessor Names
6.3.1.2
Renaming and Moving Associations to a Different Package
6.3.2
What Happens When You Create an Association
6.3.3
What You May Need to Know About Composition Associations
6.4
Creating an Entity Diagram for Your Business Layer
6.4.1
How to Create an Entity Diagram
6.4.1.1
Publishing the Business Entity Diagram
6.4.2
What Happens When You Create an Entity Diagram
6.4.3
What You May Need to Know About Creating Entities On a Diagram
6.4.3.1
UML Diagram is Actively Synchronized with Business Components
6.4.3.2
UML Diagram Adds Extra Metadata to XML Component Descriptors
6.5
Defining Attribute Control Hints
6.5.1
How to Add Attribute Control Hints
6.5.2
What Happens When You Add Attribute Control Hints
6.5.3
Internationalizing the Date Format
6.6
Configuring Declarative Runtime Behavior
6.6.1
How To Configure Declarative Runtime Behavior
6.6.2
What Happens When You Configure Declarative Runtime Behavior
6.6.3
About the Declarative Entity Object Features
6.6.3.1
Legal Database and Java Data types for an Entity Object Attribute
6.6.3.2
Indicating Datatype Length, Precision, and Scale
6.6.3.3
Controlling the Updatability of an Attribute
6.6.3.4
Making an Attribute Mandatory
6.6.3.5
Defining the Primary Key for the Entity
6.6.3.6
Defining a Static Default Value
6.6.3.7
Synchronization with Trigger-Assigned Values
6.6.3.8
Trigger-Assigned Primary Key Values from a Database Sequence
6.6.3.9
Lost Update Protection
6.6.3.10
History Attributes
6.6.3.11
Setting the Discriminator Attribute for Entity Object Inheritance Hierarchies
6.6.3.12
Understanding and Configuring Composition Behavior
6.7
Using Declarative Validation Rules
6.7.1
How to Add a Validation Rule
6.7.2
What Happens When You Add a Validation Rule
6.7.3
What You May Need to Know About Validation Rules
6.7.3.1
Understanding the Built-in Entity-Level Validators
6.7.3.2
Understanding the Built-in Attribute-Level Validators
6.7.3.3
Caveat About the List Validator
6.8
Working Programmatically with Entity Objects and Associations
6.8.1
Finding an Entity Object by Primary Key
6.8.2
Accessing an Associated Entity Using the Accessor Attribute
6.8.3
Updating or Removing an Existing Entity Row
6.8.4
Creating a New Entity Row
6.8.5
Testing Using a Static Main Method
6.9
Generating Custom Java Classes for an Entity Object
6.9.1
How To Generate Custom Classes
6.9.1.1
Choosing to Generate Entity Attribute Accessors
6.9.2
What Happens When You Generate Custom Classes
6.9.3
Seeing and Navigating to Custom Java Files
6.9.4
What You May Need to Know About Custom Java Classes
6.9.4.1
About the Framework Base Classes for an Entity Object
6.9.4.2
You Can Safely Add Code to the Custom Component File
6.9.4.3
Configuring Default Java Generation Preferences
6.9.4.4
Attribute Indexes and InvokeAccessor Generated Code
6.9.5
Programmatic Example for Comparison Using Custom Entity Classes
6.10
Adding Transient and Calculated Attributes to an Entity Object
6.10.1
How to Add a Transient Attribute
6.10.2
What Happens When You Add Transient Attribute
6.10.3
Adding Java Code in the Entity Class to Perform Calculation
7
Building an Updatable Data Model With Entity-Based View Objects
7.1
Introduction to Entity-Based View Objects
7.2
Creating an Entity-Based View Object
7.2.1
How to Create an Entity-Based View Object
7.2.1.1
Creating a View Object Having All Attributes of an Entity Object
7.2.2
What Happens When You Create an Entity-Based View Object
7.2.3
Editing an Existing Entity-Based View Object Definition
7.2.4
What You May Need to Know About View Objects
7.2.4.1
View Object Attributes Inherit Properties from Underlying Entity Object Attributes
7.3
Including Reference Entities in Join View Objects
7.3.1
How to Include Reference Entities in a View Object
7.3.1.1
Adding Additional Reference Entity Usages to the View Object
7.3.1.2
Selecting Additional Attributes from Reference Entity Usages
7.3.1.3
Renaming Attributes from Reference Entity Usages
7.3.1.4
Removing Unnecessary Key Attributes from Reference Entity Usages
7.3.1.5
Hiding the Primary Key Attributes from Reference Entity Usages
7.3.2
What Happens When You Reference Entities in a View Object
7.3.3
What You May Need to Know About Join View Objects
7.3.3.1
Showing View Objects in a Business Components Diagram
7.3.3.2
Modify Default Join Clause to Be Outer Join When Appropriate
7.4
Creating an Association-Based View Link
7.4.1
How to Create an Association-Based View Link
7.4.2
What Happens When You Create an Association-Based View Link
7.5
Testing Entity-Based View Objects Interactively
7.5.1
Overview of Business Component Browser Functionality for an Updatable Data Model
7.5.2
Adding View Object Instances to the Data Model
7.5.3
How to Test Entity-Based View Objects Interactively
7.5.4
What Happens When You Test Entity-Based View Objects Interactively
7.5.5
Simulating End-User Interaction with Your Application Module Data Model
7.5.5.1
Testing Master/Detail Coordination
7.5.5.2
Testing UI Control Hints
7.5.5.3
Testing View Objects That Reference Entity Usages
7.5.5.4
Testing Business Domain Layer Validation
7.5.5.5
Testing Alternate Language Message Bundles and Control Hints
7.5.5.6
Testing Row Creation and Default Value Generation
7.5.5.7
Testing New Detail Rows Have Correct Foreign Keys
7.6
Adding Calculated and Transient Attributes to an Entity-Based View Object
7.6.1
How to Add a SQL-Calculated Attribute
7.6.2
What Happens When You Add a SQL-Calculated Attribute
7.6.3
How to Add a Transient Attribute
7.6.3.1
Adding an Entity-Mapped Transient Attribute to a View Object
7.6.4
What Happens When You Add a Transient Attribute
7.6.5
Adding Java Code in the View Row Class to Perform Calculation
7.6.6
What You May Need to Know About Transient Attributes
7.7
Understanding How View Objects and Entity Objects Cooperate at Runtime
7.7.1
Each View Row or Entity Row Has a Related Key
7.7.2
What Role Does the Entity Cache Play in the Transaction
7.7.3
Metadata Ties Together Cleanly Separated Roles of Data Source and Data Sink
7.7.4
What Happens When a View Object Executes Its Query
7.7.5
What Happens When You Modify a View Row Attribute
7.7.6
What Happens When You Change a Foreign Key Attribute
7.7.7
What Happens When You Re-query Data
7.7.7.1
Unmodified Attributes in Entity Cache are Refreshed During Re-query
7.7.7.2
Modified Attributes in Entity Cache are Left Intact During Re-query
7.7.7.3
Overlapping Subsets of Attributes are Merged During Re-query
7.7.8
What Happens When You Commit the Transaction
7.7.9
Interactively Testing Multiuser Scenarios
7.8
Working Programmatically with Entity-Based View Objects
7.8.1
Example of Iterating Master/Detail/Detail Hierarchy
7.8.2
Example of Finding a Row and Updating a Foreign Key Value
7.8.3
Example of Creating a New Service Request
7.8.4
Example of Retrieving the Row Key Identifying a Row
7.9
Summary of Difference Between Entity-Based View Objects and Read-Only View Objects
7.9.1
Runtime Features Unique to Entity-Based View Objects
7.9.2
View Objects with No Entity Usage Are Read-Only
7.9.3
What You May Need to Know About Enabling View Object Key Management for Read-Only View Objects
8
Implementing Business Services with Application Modules
8.1
Introduction to Application Modules
8.2
Creating an Application Module
8.2.1
Creating an Application Module
8.2.2
What Happens When You Create an Application Module
8.2.3
Editing an Existing Application Module
8.2.4
Configuring Your Application Module Database Connection
8.2.4.1
Using a JDBC URL Connection Type
8.2.4.2
Using a JDBC Datasource Connection Type
8.2.5
Managing Your Application Module's Runtime Configurations
8.2.6
What You Might Need to Know About Application Module Connections
8.2.6.1
The Business Components Browser Requires a JDBC URL Connection
8.2.6.2
Testing the SRService Application Module in the Business Components Browser
8.3
Adding a Custom Service Method
8.3.1
How to Generate a Custom Class for an Application Module
8.3.2
What Happens When You Generate a Custom Class for an Application Module
8.3.3
What You May Need to Know About Default Code Generation
8.3.4
Debugging the Application Module Using the Business Components Tester
8.3.5
How to Add a Custom Service Method to an Application Module
8.4
Publishing Custom Service Methods to Clients
8.4.1
How to Publish Custom Service Methods to Clients
8.4.2
What Happens When You Publish Custom Service Methods to Clients
8.4.3
How to Generate Client Interfaces for View Objects and View Rows
8.4.4
What You May Need to Know About Method Signatures on the Client Interface
8.4.5
What You May Need to Know About Passing Information from the Data Model
8.5
Working Programmatically with an Application Module's Client Interface
8.5.1
How to Work Programmatically with an Application Module's Client Interface
8.5.2
What Happens When You Work with an Application Module's Client Interface
8.5.3
How to Access an Application Module Client Interface
8.5.3.1
How to Access an Application Module Client Interface in a JSF Web Application
8.5.3.2
How to Access an Application Module Client Interface in a JSP/Struts Web Application
8.5.3.3
How to Access an Application Module Client Interface in an ADF Swing Application
8.6
Overriding Built-in Framework Methods
8.6.1
How to Override a Built-in Framework Method
8.6.2
What Happens When You Override a Built-in Framework Method
8.6.3
How to Override prepareSession() to Set Up an Application Module for a New User Session
8.7
Creating an Application Module Diagram for Your Business Service
8.7.1
How to Create an Application Module Diagram
8.7.2
What Happens When You Create an Application Module Diagram
8.7.3
What You May Need to Know About Application Module Diagrams
8.7.3.1
Using the Diagram for Editing the Application Module
8.7.3.2
Controlling Display Options
8.7.3.3
Filtering Method Names
8.7.3.4
Show Related Objects and Implementation Files
8.7.3.5
Publishing the Application Module Diagram
8.7.3.6
Testing the Application Module From the Diagram
8.8
Supporting Multipage Units of Work
8.8.1
Overview of Application Module Pooling and State Management
8.8.2
Experimenting with State Management in the Business Components Browser
8.9
Deciding on the Granularity of Application Modules
8.9.1
Use Cases Assist in Planning Your Application Modules
8.9.2
Application Modules Are Designed to Support Assembly
8.9.3
Root Application Modules Versus Nested Application Module Usages
9
Implementing Programmatic Business Rules in Entity Objects
9.1
Introduction to Programmatic Business Rules
9.2
Understanding the Validation Cycle
9.2.1
Types of Entity Object Validation Rules
9.2.1.1
Attribute-Level Validation Rules
9.2.1.2
Entity-Level Validation Rules
9.2.2
Understanding Commit Processing and Validation
9.2.3
Avoiding Infinite Validation Cycles
9.2.4
What Happens When Validations Fail
9.2.5
Understanding Entity Objects Row States
9.3
Using Method Validators
9.3.1
How to Create an Attribute-Level Method Validation
9.3.2
What Happens When You Create an Attribute-Level Method Validator
9.3.3
How to Create an Entity-Level Method Validator
9.3.4
What Happens When You Create an Entity-Level Method Validator
9.3.5
What You Might Need To Know About Translating Validation Rule Error Messages
9.3.6
What You May Need to Know About Referencing the Invalid Value in an Attribute-Level Validation Error Message
9.4
Assigning Programmatically-Derived Attribute Values
9.4.1
Defaulting Values for New Rows at Create Time
9.4.1.1
Choosing Between create() and initDefaults() Methods
9.4.1.2
Eagerly Defaulting an Attribute Value from a Database Sequence
9.4.2
Assigning Derived Values Before Saving
9.4.3
Assigning Derived Values When an Attribute Value is Set
9.5
Undoing Pending Changes to an Entity Using the Refresh Method
9.5.1
Controlling What Happens to New Rows During a Refresh
9.5.2
Cascading Refresh to Composed Children Entity Rows
9.6
Using View Objects for Validation
9.6.1
Creating View Objects at Runtime for Validation
9.6.2
Implementing an Efficient Existence Check
9.6.3
Validating Conditions Related to All Entities of a Given Type
9.7
How to Access Related Entity Rows Using Association Accessors
9.8
How to Reference Information About the Authenticated User
9.8.1
Referencing Role Information About the Authenticated User
9.8.2
Referencing the Name of the Authenticated User
9.9
How to Access Original Attribute Values
9.10
How to Store Information About the Current User Session
9.11
How to Access the Current Date and Time
9.12
How to Send Notifications Upon a Successful Commit
9.13
How to Conditionally Prevent an Entity Row from Being Removed
9.14
How to Implement Conditional Updatability for Attributes
9.15
Additional Resources
10
Overview of Application Module Data Binding
10.1
Overview of Data Controls and Declarative Bindings
10.1.1
Data Controls Abstract the Implementation Technology of a Business Service
10.1.2
Bindings Connect UI Controls to Data Collections and Operations
10.2
Understanding the Application Module Data Control
10.3
How an Application Module Appears in the Data Control Palette
10.3.1
Overview of the SRService Application Module
10.3.2
How to Change the Data Control Name Before You Begin Building Pages
10.3.3
How the Data Model and Service Methods Appear in the Data Control Palette
10.3.4
How to Change View Instance Names Before You Begin Building Pages
10.3.5
How Transaction Control Operations Appear in the Data Control Palette
10.3.6
How View Objects Appear in the Data Control Palette
10.3.6.1
Built-in Operations for View Object Data Collections
10.3.7
How Nested Application Modules Appear in the Data Control Palette
10.4
How to Add a Create Button on a Page
10.4.1
What Happens When You Drop a Create Button on a Web Page
10.4.2
What Happens When You Drop a Create Operation Onto a Swing Panel
10.4.3
When to Use CreateInsert Instead of Create
10.4.4
What You May Need to Know About Create and CreateInsert
10.5
Application Module Databinding Tips and Techniques
10.5.1
How to Create a Record Status Display
10.5.2
How to Work with Named View Object Bind Variables
10.5.3
How to Use Find Mode to Implement Query-by-Example
10.5.4
How to Customize the ADF Page Lifecycle to Work Programmatically with Bindings
10.5.4.1
Globally Customizing the ADF Page Lifecycle
10.5.4.2
Customizing the Page Lifecycle for a Single Page
10.5.4.3
Using Custom ADF Page Lifecycle to Invoke an onPageLoad Backing Bean Method
10.5.5
How to Use Refresh Correctly for InvokeAction and Iterator Bindings
10.5.5.1
Correctly Configuring the Refresh Property of Iterator Bindings
10.5.5.2
Refreshing an Iterator Binding Does Not Forcibly Re-Execute Query
10.5.5.3
Correctly Configuring Refresh Property of InvokeAction Executables
10.5.6
Understanding the Difference Between setCurrentRowWithKey and setCurrentRowWithKeyValue
10.5.7
Understanding Bundled Exception Mode
10.6
Overview of How SRDemo Pages Use the SRService
10.6.1
The SRList Page
10.6.1.1
Overview of Data Binding in the SRList Page
10.6.1.2
Business Service Notes for the SRList Page
10.6.2
The SRMain Page
10.6.2.1
Overview of Data Binding in the SRMain Page
10.6.2.2
Business Service Notes for the SRMain Page
10.6.3
The SREdit Page
10.6.3.1
Overview of Data Binding in the SREdit Page
10.6.3.2
Business Service Notes for the SREdit Page
10.6.4
The SRSearch Page
10.6.4.1
Overview of Data Binding in the SRSearch Page
10.6.4.2
Business Service Notes for the SRSearch Page
10.6.5
The SRStaffSearch Page
10.6.5.1
Overview of Data Binding in the SRStaffSearch Page
10.6.5.2
Business Service Notes for the SRStaffSearch Page
10.6.6
The SRManage Page
10.6.6.1
Overview of Data Binding in the SRManage Page
10.6.6.2
Business Service Notes for the SRManage Page
10.6.7
The SRSkills Page
10.6.7.1
Overview of Data Binding in the SRSkills Page
10.6.7.2
Business Service Notes for the SRSkills Page
10.6.8
The SRCreate Page
10.6.8.1
Overview of Data Binding in the SRCreate Page
10.6.8.2
Business Service Notes for the SRCreate Page
10.6.9
The SRConfirmCreate Page
10.6.9.1
Overview of Data Binding in the SRConfirmCreate Page
10.6.9.2
Business Service Notes for the SRCreate Page
Part III Building Your Web Interface
11
Getting Started with ADF Faces
11.1
Introduction to ADF Faces
11.2
Setting Up a Workspace and Project
11.2.1
What Happens When You Use an Application Template to Create a Workspace
11.2.1.1
Starter web.xml File
11.2.1.2
Starter faces-config.xml File
11.2.2
What You May Need to Know About the ViewController Project
11.2.3
What You May Need to Know About Multiple JSF Configuration Files
11.3
Creating a Web Page
11.3.1
How to Add a JSF Page
11.3.2
What Happens When You Create a JSF Page
11.3.3
What You May Need to Know About Using the JSF Navigation Diagram
11.3.4
What You May Need to Know About ADF Faces Dependencies and Libraries
11.4
Laying Out a Web Page
11.4.1
How to Add UI Components to a JSF Page
11.4.2
What Happens When You First Insert an ADF Faces Component
11.4.2.1
More About the web.xml File
11.4.2.2
More About the faces-config.xml File
11.4.2.3
Starter adf-faces-config.xml File
11.4.3
What You May Need to Know About Creating JSF Pages
11.4.3.1
Editing in the Structure Window
11.4.3.2
Displaying Errors
11.4.4
Using the PanelPage Component
11.4.4.1
PanelPage Facets
11.4.4.2
Page Body Contents
11.5
Creating and Using a Backing Bean for a Web Page
11.5.1
How to Create and Configure a Backing Bean
11.5.2
What Happens When You Create and Configure a Backing Bean
11.5.3
How to Use a Backing Bean in a JSF Page
11.5.4
How to Use the Automatic Component Binding Feature
11.5.5
What Happens When You Use Automatic Component Binding in JDeveloper
11.5.6
What You May Need to Know About Backing Beans and Managed Beans
11.5.7
Using ADF Data Controls and Backing Beans
11.6
Best Practices for ADF Faces
12
Displaying Data on a Page
12.1
Introduction to Displaying Data on a Page
12.2
Using the Data Control Palette
12.2.1
How to Understand the Items on the Data Control Palette
12.2.2
How to Use the Data Control Palette
12.2.3
What Happens When You Use the Data Control Palette
12.2.4
What Happens at Runtime
12.3
Working with the DataBindings.cpx File
12.3.1
How to Create a DataBindings.cpx File
12.3.2
What Happens When You Create a DataBindings.cpx File
12.4
Configuring the ADF Binding Filter
12.4.1
How to Configure the ADF Binding Filter
12.4.2
What Happens When You Configure an ADF Binding Filter
12.4.3
What Happens at Runtime
12.5
Working with Page Definition Files
12.5.1
How to Create a Page Definition File
12.5.2
What Happens When You Create a Page Definition File
12.5.2.1
Binding Objects Defined in the parameters Element
12.5.2.2
Binding Objects Defined in the executables Element
12.5.2.3
Binding Objects Defined in the bindings Element
12.5.3
What Happens at Runtime
12.5.4
What You May Need to Know About Binding Container Scope
12.6
Creating ADF Data Binding EL Expressions
12.6.1
How to Create an ADF Data Binding EL Expression
12.6.2
How to Use the Expression Builder
12.6.3
What Happens When You Create ADF Data Binding Expressions
12.6.3.1
EL Expressions That Reference Attribute Binding Objects
12.6.3.2
EL Expressions That Reference Table Binding Objects
12.6.3.3
EL Expressions That Reference Action Binding Objects
12.6.4
What You May Need to Know About ADF Binding Properties
13
Creating a Basic Page
13.1
Introduction to Creating a Basic Page
13.2
Using Attributes to Create Text Fields
13.2.1
How to Use the Data Control Palette to Create a Text Field
13.2.2
What Happens When You Use the Data Control Palette to Create a Text Field
13.2.2.1
Creating and Using Iterator Bindings
13.2.2.2
Creating and Using Value Bindings
13.2.2.3
Using EL Expressions to Bind UI Components
13.2.3
What Happens at Runtime: The JSF and ADF Lifecycles
13.3
Creating a Basic Form
13.3.1
How to Use the Data Control Palette to Create a Form
13.3.2
What Happens When You Use the Data Control Palette to Create a Form
13.3.2.1
Using Facets
13.4
Incorporating Range Navigation into Forms
13.4.1
How to Insert Navigation Controls into a Form
13.4.2
What Happens When Command Buttons Are Created Using the Data Control Palette
13.4.2.1
Using Action Bindings for Built-in Navigation Operations
13.4.2.2
Iterator RangeSize Attribute
13.4.2.3
Using EL Expressions to Bind to Navigation Operations
13.4.3
What Happens at Runtime: About Action Events and Action Listeners
13.4.4
What You May Need to Know About the Browser Back Button
13.5
Creating a Form to Edit an Existing Record
13.5.1
How to Use the Data Control Palette to Create Edit Forms
13.5.2
What Happens When You Use Built-in Operations to Change Data
13.6
Creating an Input Form
13.6.1
How to Create an Input Form
13.6.2
What Happens When You Create an Input Form
13.6.3
What You May Need to Know About Displaying Sequence Numbers
13.6.4
What You May Need to Know About Create Forms and the RefreshCondition
13.7
Modifying the UI Components and Bindings on a Form
13.7.1
How to Modify the UI Components and Bindings
13.7.1.1
Changing the Value Binding for a UI Component
13.7.1.2
Changing the Action Binding for a UI Component
13.7.2
What Happens When You Modify Attributes and Bindings
14
Adding Tables
14.1
Introduction to Adding Tables
14.2
Creating a Basic Table
14.2.1
How to Create a Basic Table
14.2.2
What Happens When You Use the Data Control Palette to Create a Table
14.2.2.1
Iterator and Value Bindings for Tables
14.2.2.2
Code on the JSF Page for an ADF Faces Table
14.3
Incorporating Range Navigation into Tables
14.3.1
How to Use Navigation Controls in a Table
14.3.2
What Happens When You Use Navigation Controls in a Table
14.3.3
What Happens at Runtime
14.3.4
What You May Need to Know About the Browser Back Button
14.4
Modifying the Attributes Displayed in the Table
14.4.1
How to Modify the Displayed Attributes
14.4.2
How to Change the Binding for a Table
14.4.3
What Happens When You Modify Bindings or Displayed Attributes
14.5
Adding Hidden Capabilities to a Table
14.5.1
How to Use the DetailStamp Facet
14.5.2
What Happens When You Use the DetailStamp Facet
14.5.3
What Happens at Runtime
14.6
Enabling Row Selection in a Table
14.6.1
How to Use the TableSelectOne Component in the Selection Facet
14.6.2
What Happens When You Use the TableSelectOne Component
14.6.3
What Happens at Runtime
14.6.4
What You May Need to Know About Using Links Instead of the Selection Facet
14.6.5
How to Use the TableSelectMany Component in the Selection Facet
14.6.6
What Happens When You Use the TableSelectMany Component
14.6.7
What Happens at Runtime
14.7
Setting the Current Object Using a Command Component
14.7.1
How to Manually Set the Current Row
14.7.2
What Happens When You Set the Current Row
14.7.3
What Happens At Runtime
15
Displaying Master-Detail Data
15.1
Introduction to Displaying Master-Detail Data
15.2
Identifying Master-Detail Objects on the Data Control Palette
15.3
Using Tables and Forms to Display Master-Detail Objects
15.3.1
How to Display Master-Detail Objects in Tables and Forms
15.3.2
What Happens When You Create Master-Detail Tables and Forms
15.3.2.1
Code Generated in the JSF Page
15.3.2.2
Binding Objects Defined in the Page Definition File
15.3.3
What Happens at Runtime
15.3.4
What You May Need to Know About Master-Detail on Separate Pages
15.4
Using Trees to Display Master-Detail Objects
15.4.1
How to Display Master-Detail Objects in Trees
15.4.2
What Happens When You Create ADF Databound Trees
15.4.2.1
Code Generated in the JSF Page
15.4.2.2
Binding Objects Defined in the Page Definition File
15.4.3
What Happens at Runtime
15.4.4
What You May Need to Know About Adding Command Links to Tree Nodes
15.5
Using Tree Tables to Display Master-Detail Objects
15.5.1
How to Display Master-Detail Objects in Tree Tables
15.5.2
What Happens When You Create a Databound Tree Table
15.5.2.1
Code Generated in the JSF Page
15.5.2.2
Binding Objects Defined in the Page Definition File
15.5.3
What Happens at Runtime
15.6
Using an Inline Table to Display Detail Data in a Master Table
15.6.1
How to Display Detail Data Using an Inline Table
15.6.2
What Happens When You Create an Inline Detail Table
15.6.2.1
Code Generated in the JSF Page
15.6.2.2
Binding Objects Defined in the Page Definition File
15.6.3
What Happens at Runtime
16
Adding Page Navigation
16.1
Introduction to Page Navigation
16.2
Creating Navigation Rules
16.2.1
How to Create Page Navigation Rules
16.2.1.1
About Navigation Rule Elements
16.2.1.2
Using the Navigation Modeler to Define Navigation Rules
16.2.1.3
Using the JSF Configuration Editor
16.2.2
What Happens When You Create a Navigation Rule
16.2.3
What Happens at Runtime
16.2.4
What You May Need to Know About Navigation Rules and Cases
16.2.4.1
Defining Rules in Multiple Configuration Files
16.2.4.2
Overlapping Rules
16.2.4.3
Conflicting Navigation Rules
16.2.4.4
Splitting Navigation Cases Over Multiple Rules
16.2.5
What You May Need to Know About the Navigation Modeler
16.3
Using Static Navigation
16.3.1
How to Create Static Navigation
16.3.2
What Happens When You Create Static Navigation
16.4
Using Dynamic Navigation
16.4.1
How to Create Dynamic Navigation
16.4.2
What Happens When You Create Dynamic Navigation
16.4.3
What Happens at Runtime
16.4.4
What You May Need to Know About Using Default Cases
16.4.5
What You May Need to Know About Action Listener Methods
16.4.6
What You May Need to Know About Data Control Method Outcome Returns
17
Creating More Complex Pages
17.1
Introduction to More Complex Pages
17.2
Using a Managed Bean to Store Information
17.2.1
How to Use a Managed Bean to Store Information
17.2.2
What Happens When You Create a Managed Bean
17.3
Creating Command Components to Execute Methods
17.3.1
How to Create a Command Component Bound to a Service Method
17.3.2
What Happens When You Create Command Components Using a Method
17.3.2.1
Using Parameters in a Method
17.3.2.2
Using EL Expressions to Bind to Methods
17.3.3
What Happens at Runtime
17.4
Setting Parameter Values Using a Command Component
17.4.1
How to Set Parameters Using Command Components
17.4.2
What Happens When You Set Parameters
17.4.3
What Happens at Runtime
17.5
Overriding Declarative Methods
17.5.1
How to Override a Declarative Method
17.5.2
What Happens When You Override a Declarative Method
18
Creating a Search Form
18.1
Introduction to Creating Search Forms
18.2
Creating a EnterQuery/ExecuteQuery Search Form
18.2.1
How to Create an EnterQuery/ExecuteQuery Search Page
18.2.2
What Happens When You Create a Search Form
18.3
Creating a Web-type Search Form
18.3.1
How to Create a Search Form and Separate Results Page
18.3.2
What Happens When You Create A Web-type Search Form
18.3.3
What You May Need to Know
18.3.4
About Creating Search and Results on the Same Page
18.3.5
How To Create Search and Results on the Same Page
18.3.6
What Happens When Search and Results are on the Same Page
18.4
Creating Search Page Using Named Bind Variables
18.4.1
How to Create a Parameterized Search Form
18.4.2
What Happens When You Use Parameter Methods
18.4.3
What Happens at Runtime
18.5
Conditionally Displaying the Results Table on a Search Page
18.5.1
How to Add Conditional Display Capabilities
18.5.2
What Happens When you Conditionally Display the Results Table
19
Using Complex UI Components
19.1
Introduction to Complex UI Components
19.2
Using Dynamic Menus for Navigation
19.2.1
How to Create Dynamic Navigation Menus
19.2.1.1
Creating a Menu Model
19.2.1.2
Creating the JSF Page for Each Menu Item
19.2.1.3
Creating the JSF Navigation Rules
19.2.2
What Happens at Runtime
19.2.3
What You May Need to Know About Menus
19.3
Using Popup Dialogs
19.3.1
How to Create Popup Dialogs
19.3.1.1
Defining a JSF Navigation Rule for Launching a Dialog
19.3.1.2
Creating the JSF Page That Launches a Dialog
19.3.1.3
Creating the Dialog Page and Returning a Dialog Value
19.3.1.4
Handling the Return Value
19.3.1.5
Passing a Value into a Dialog
19.3.2
How the SRDemo Popup Dialogs Are Created
19.3.3
What You May Need to Know About ADF Faces Dialogs
19.3.4
Other Information
19.4
Enabling Partial Page Rendering
19.4.1
How to Enable PPR
19.4.2
What Happens at Runtime
19.4.3
What You May Need to Know About PPR and Screen Readers
19.5
Creating a Multipage Process
19.5.1
How to Create a Process Train
19.5.1.1
Creating a Process Train Model
19.5.1.2
Creating the JSF Page for Each Train Node
19.5.1.3
Creating the JSF Navigation Rules
19.5.2
What Happens at Runtime
19.5.3
What You May Need to Know About Process Trains and Menus
19.6
Providing File Upload Capability
19.6.1
How to Support File Uploading on a Page
19.6.2
What Happens at Runtime
19.6.3
What You May Need to Know About ADF Faces File Upload
19.6.4
Configuring File Uploading Initialization Parameters
19.6.5
Configuring a Custom Uploaded File Processor
19.7
Creating Selection Lists
19.7.1
How to Create a List with a Fixed List of Values
19.7.2
What Happens When You Create a List Bound to a Fixed List of Values
19.7.3
How to Create a List with a Dynamic List of Values
19.7.4
What Happens When You Create a List Bound to a Dynamic List of Values
19.7.5
How to Create a List with Navigation List Binding
19.7.6
What Happens When You Create a List With Navigation List Binding
19.8
Creating a Shuttle
19.8.1
How to Create a Shuttle
19.8.2
What Happens at Runtime
20
Using Validation and Conversion
20.1
Introduction to Validation and Conversion
20.2
Validation, Conversion, and the Application Lifecycle
20.3
Adding Validation
20.3.1
How to Add Validation
20.3.1.1
Adding ADF Faces Validation
20.3.1.2
Adding ADF Model Validation
20.3.2
What Happens When You Create Input Fields Using the Data Control Palette
20.3.3
What Happens at Runtime
20.3.4
What You May Need to Know
20.4
Creating Custom JSF Validation
20.4.1
How to Create a Backing Bean Validation Method
20.4.2
What Happens When You Create a Backing Bean Validation Method
20.4.3
How to Create a Custom JSF Validator
20.4.4
What Happens When You Use a Custom JSF Validator
20.5
Adding Conversion
20.5.1
How to Use Converters
20.5.2
What Happens When You Create Input Fields Using the Data Control Palette
20.5.3
What Happens at Runtime
20.6
Creating Custom JSF Converters
20.6.1
How to Create a Custom JSF Converter
20.6.2
What Happens When You Use a Custom Converter
20.7
Displaying Error Messages
20.7.1
How to Display Server-Side Error Messages on a Page
20.7.2
What Happens When You Choose to Display Error Messages
20.8
Handling and Displaying Exceptions in an ADF Application
20.8.1
How to Change Exception Handling
20.8.2
What Happens When You Change the Default Error Handling
21
Adding ADF Bindings to Existing Pages
21.1
Introduction to Adding ADF Bindings to Existing Pages
21.2
Designing Pages for ADF Bindings
21.2.1
Creating the Page
21.2.2
Adding Components to the Page
21.2.3
Other Design Considerations
21.2.3.1
Creating Text Fields in Forms
21.2.3.2
Creating Tables
21.2.3.3
Creating Buttons and Links
21.2.3.4
Creating Lists
21.2.3.5
Creating Trees or Tree Tables
21.3
Using the Data Control Palette to Bind Existing Components
21.3.1
How to Add ADF Bindings Using the Data Control Palette
21.3.2
What Happens When You Use the Data Control Palette to Add ADF Bindings
21.4
Adding ADF Bindings to Text Fields
21.4.1
How to Add ADF Bindings to Text Fields
21.4.2
What Happens When You Add ADF Bindings to a Text Field
21.5
Adding ADF Bindings to Tables
21.5.1
How to Add ADF Bindings to Tables
21.5.2
What Happens When You Add ADF Bindings to a Table
21.6
Adding ADF Bindings to Actions
21.6.1
How to Add ADF Bindings to Actions
21.6.2
What Happens When You Add ADF Bindings to an Action
21.7
Adding ADF Bindings to Selection Lists
21.7.1
How to Add ADF Bindings to Selection Lists
21.7.2
What Happens When You Add ADF Bindings to a Selection List
21.8
Adding ADF Bindings to Trees and Tree Tables
21.8.1
How to Add ADF Bindings to Trees and Tree Tables
21.8.2
What Happens When You Add ADF Bindings to a Tree or Tree Table
22
Changing the Appearance of Your Application
22.1
Introduction to Changing ADF Faces Components
22.2
Changing the Style Properties of a Component
22.2.1
How to Set a Component's Style Attributes
22.2.2
What Happens When You Format Text
22.3
Using Skins to Change the Look and Feel
22.3.1
How to Use Skins
22.3.1.1
Creating a Custom Skin
22.3.1.2
Configuring an Application to Use a Skin
22.4
Internationalizing Your Application
22.4.1
How to Internationalize an Application
22.4.2
How to Configure Optional Localization Properties for ADF Faces
23
Optimizing Application Performance with Caching
23.1
About Caching
23.2
Using ADF Faces Cache to Cache Content
23.2.1
How to Add Support for ADF Faces Cache
23.2.2
What Happens When You Cache Fragments
23.2.2.1
Logging
23.2.2.2
AFC Statistics Servlet
23.2.2.3
Visual Diagnostics
23.2.3
What You May Need to Know
24
Testing and Debugging Web Applications
24.1
Getting Started with Oracle ADF Model Debugging
24.2
Correcting Simple Oracle ADF Compilation Errors
24.3
Correcting Simple Oracle ADF Runtime Errors
24.4
Understanding a Typical Oracle ADF Model Debugging Session
24.4.1
Turning on Diagnostic Logging
24.4.2
Creating an Oracle ADF Debugging Configuration
24.4.3
Debugging an Application Module Using the Tester
24.4.4
Understanding the Different Kinds of Breakpoints
24.4.5
Editing Breakpoints to For Improved Control
24.4.6
Filtering Your View of Class Members
24.4.7
Interesting Oracle ADF Breakpoints to Set
24.4.8
Communicating Stack Trace Information to Someone Else
24.5
Setting Up Oracle ADF Source Code for Debugging
24.5.1
Setting Up the ADF Source System Library
24.5.2
Adding the ADF Source Library to a Project
24.5.3
Seeing Better Information in the Code Editor
24.5.4
Setting Breakpoints and Debugging
24.5.5
Seeing Better Symbol Information Using Debug Libraries
24.6
Debugging the Oracle ADF Model Layer
24.6.1
Correcting Failures to Display Pages
24.6.1.1
Fixing Binding Context Creation Errors
24.6.1.2
Fixing Binding Container Creation Errors
24.6.2
Correcting Failures to Display Data
24.6.2.1
Fixing Executable Errors
24.6.2.2
Fixing Render Value Errors Before Submit
24.6.3
Correcting Failures to Invoke Actions and Methods
24.7
Tracing EL Expressions
24.8
Regression Testing an Application Module With JUnit
24.8.1
How to Create a JUnit Test Suite for an Application Module
24.8.2
What Happens When You Create a JUnit Test Suite for an Application Module
24.8.3
What You May Need to Know
24.8.3.1
Test Suite Class Adds Test Cases to the Suite
24.8.3.2
Test Fixture Class Encapsulates Access to the Application Module
24.8.3.3
JUnit Tests for an Application Module Must Use a JDBC URL Connection
24.8.3.4
Test Case Classes Contain One or More Test Methods with Assertions
24.8.4
Running a JUnit Test Suite as Parts of an Ant Build Script
24.8.5
Customizing the Default JUnit Test Classes
24.8.5.1
Customizing the Test Fixture to Run as an Authenticated User
24.8.5.2
Refactoring Common Test Case Code Into a Base Class
Part IV Advanced Topics
25
Advanced Business Components Techniques
25.1
Globally Extending ADF Business Components Functionality
25.1.1
What Are ADF Business Components Framework Extension Classes?
25.1.2
How To Create a Framework Extension Class
25.1.3
What Happens When You Create a Framework Extension Class
25.1.4
How to Base an ADF Component on a Framework Extension Class
25.1.5
What Happens When You Base a Component on a Framework Extension Class
25.1.5.1
Basing an XML-Only Component on a Framework Extension Class
25.1.5.2
Basing a Component with a Custom Java Class on a Framework Extension Class
25.1.6
What You May Need to Know
25.1.6.1
Don't Update the Extends Clause in Custom Component Java Files By Hand
25.1.6.2
You Can Have Multiple Levels of Framework Extension Classes
25.1.6.3
Setting up Project-Level Preferences for Framework Extension Classes
25.1.6.4
Setting Up Framework Extension Class Preferences at the IDE Level
25.2
Creating a Layer of Framework Extensions
25.2.1
How to Create Your Layer of Framework Extension Layer Classes
25.2.2
How to Package Your Framework Extension Layer in a JAR File
25.2.3
How to Create a Library Definition for Your Framework Extension JAR File
25.3
Customizing Framework Behavior with Extension Classes
25.3.1
How to Access Runtime Metadata For View Objects and Entity Objects
25.3.2
Implementing Generic Functionality Using Runtime Metadata
25.3.3
Implementing Generic Functionality Driven by Custom Properties
25.3.4
What You May Need to Know
25.3.4.1
Determining the Attribute Kind at Runtime
25.3.4.2
Configuring Design Time Custom Property Names
25.3.4.3
Setting Custom Properties at Runtime
25.4
Creating Generic Extension Interfaces
25.5
Invoking Stored Procedures and Functions
25.5.1
Invoking Stored Procedures with No Arguments
25.5.2
Invoking Stored Procedure with Only IN Arguments
25.5.3
Invoking Stored Function with Only IN Arguments
25.5.4
Calling Other Types of Stored Procedures
25.6
Accessing the Current Database Transaction
25.7
Working with Libraries of Reusable Business Components
25.7.1
How To Create a Reusable Library of Business Components
25.7.2
How To Import a Package of Reusable Components from a Library
25.7.3
What Happens When You Import a Package of Reusable Components from a Library
25.7.4
What You May Need to Know
25.7.4.1
Adding Other Directories of Business Components to Project Source Path
25.7.4.2
Have to Close/Reopen to See Changes from a JAR
25.7.4.3
How to Remove an Imported Package from a Project
25.8
Customizing Business Components Error Messages
25.8.1
How to Customize Base ADF Business Components Error Messages
25.8.2
What Happens When You Customize Base ADF Business Components Error Messages
25.8.3
How to Customize Error Messages for Database Constraint Violations
25.8.4
How to Implement a Custom Constraint Error Handling Routine
25.8.4.1
Creating a Custom Database Transaction Framework Extension Class
25.8.4.2
Configuring an Application Module to Use a Custom Database Transaction Class
25.9
Creating Extended Components Using Inheritance
25.9.1
How To Create a Component That Extends Another
25.9.2
What Happens When You Create a Component That Extends Another
25.9.2.1
Understanding an Extended Component's XML Descriptor
25.9.2.2
Understanding Java Code Generation for an Extended Component
25.9.3
What You May Need to Know
25.9.3.1
You Can Use Parent Classes and Interfaces to Work with Extended Components
25.9.3.2
Class Extends is Disabled for Extended Components
25.9.3.3
Interesting Aspects You Can Extend for Key Component Types
25.9.3.4
Extended Components Have Attribute Indices Relative to Parent
25.9.3.5
Design Time Limitations for Changing Extends After Creation
25.10
Substituting Extended Components In a Delivered Application
25.10.1
Extending and Substituting Components Is Superior to Modifying Code
25.10.2
How To Substitute an Extended Component
25.10.3
What Happens When You Substitute
25.10.4
Enabling the Substituted Components in the Base Application
26
Advanced Entity Object Techniques
26.1
Creating Custom, Validated Data Types Using Domains
26.1.1
What Are Domains?
26.1.2
How To Create a Domain
26.1.3
What Happens When You Create a Domain
26.1.4
What You May Need to Know
26.1.4.1
Using Domains for Entity and View Object Attributes
26.1.4.2
Validate Method Should Throw DataCreationException If Sanity Checks Fail
26.1.4.3
String Domains Aggregate a String Value
26.1.4.4
Other Domains Extend Existing Domain Type
26.1.4.5
Simple Domains are Immutable Java Classes
26.1.4.6
Creating Domains for Oracle Object Types When Useful
26.1.4.7
Quickly Navigating to the Domain Class
26.1.4.8
Domains Get Packaged in the Common JAR
26.1.4.9
Entity and View Object Attributes Inherit Custom Domain Properties
26.1.4.10
Domain Settings Cannot Be Less Restrictive at Entity or View Level
26.2
Updating a Deleted Flag Instead of Deleting Rows
26.2.1
How to Update a Deleted Flag When a Row is Removed
26.2.2
Forcing an Update DML Operation Instead of a Delete
26.3
Advanced Entity Association Techniques
26.3.1
Modifying Association SQL Clause to Implement Complex Associations
26.3.2
Exposing View Link Accessor Attributes at the Entity Level
26.3.3
Optimizing Entity Accessor Access By Retaining the Row Set
26.4
Basing an Entity Object on a PL/SQL Package API
26.4.1
How to Create an Entity Object Based on a View
26.4.2
What Happens When You Create an Entity Object Based on a View
26.4.3
Centralizing Details for PL/SQL-Based Entities into a Base Class
26.4.4
Implementing the Stored Procedure Calls for DML Operations
26.4.5
Adding Select and Lock Handling
26.4.5.1
Updating PLSQLEntityImpl Base Class to Handle Lock and Select
26.4.5.2
Implementing Lock and Select for the Product Entity
26.5
Basing an Entity Object on a Join View or Remote DBLink
26.6
Using Inheritance in Your Business Domain Layer
26.6.1
Understanding When Inheritance Can be Useful
26.6.2
How To Create Entity Objects in an Inheritance Hierarchy
26.6.2.1
Start By Identifying the Discriminator Column and Distinct Values
26.6.2.2
Identify the Subset of Attributes Relevant to Each Kind of Entity
26.6.2.3
Creating the Base Entity Object in an Inheritance Hierarchy
26.6.2.4
Creating a Subtype Entity Object in an Inheritance Hierarchy
26.6.3
How to Add Methods to Entity Objects in an Inheritance Hierarchy
26.6.3.1
Adding Methods Common to All Entity Objects in the Hierarchy
26.6.3.2
Overriding Common Methods in a Subtype Entity
26.6.3.3
Adding Methods Specific to a Subtype Entity
26.6.4
What You May Need to Know
26.6.4.1
Sometimes You Need to Introduce a New Base Entity
26.6.4.2
Finding Subtype Entities by Primary Key
26.6.4.3
You Can Create View Objects with Polymorphic Entity Usages
26.7
Controlling Entity Posting Order to Avoid Constraint Violations
26.7.1
Understanding the Default Post Processing Order
26.7.2
How Compositions Change the Default Processing Ordering
26.7.3
Overriding postChanges() to Control Post Order
26.7.3.1
Observing the Post Ordering Problem First Hand
26.7.3.2
Forcing the Product to Post Before the ServiceRequest
26.7.3.3
Understanding Associations Based on DBSequence-Valued Primary Keys
26.7.3.4
Refreshing References to DBSequence-Assigned Foreign Keys
26.8
Implementing Automatic Attribute Recalculation
26.9
Implementing Custom Validation Rules
26.9.1
How To Create a Custom Validation Rule
26.9.2
Adding a Design Time Bean Customizer for Your Rule
26.9.3
Registering and Using a Custom Rule in JDeveloper
27
Advanced View Object Techniques
27.1
Advanced View Object Concepts and Features
27.1.1
Using a Max Fetch Size to Only Fetch the First N Rows
27.1.2
Consistently Displaying New Rows in View Objects Based on the Same Entity
27.1.2.1
How View Link Consistency Mode Works
27.1.2.2
Understanding the Default View Link Consistency Setting and How to Change It
27.1.2.3
Using a RowMatch to Qualify Which New, Unposted Rows Get Added to a Row Set
27.1.2.4
Setting a Dynamic Where Clause Disables View Link Consistency
27.1.2.5
New Row from Other View Objects Added at the Bottom
27.1.2.6
New, Unposted Rows Added to Top of RowSet when Re-Executed
27.1.3
Understanding View Link Accessors Versus Data Model View Link Instances
27.1.3.1
Enabling a Dynamic Detail Row Set with Active Master/Detail Coordination
27.1.3.2
Accessing a Stable Detail Row Set Using View Link Accessor Attributes
27.1.3.3
Accessor Attributes Create Distinct Row Sets Based on an Internal View Object
27.1.4
Presenting and Scrolling Data a Page at a Time Using the Range
27.1.5
Efficiently Scrolling Through Large Result Sets Using Range Paging
27.1.5.1
Understanding How to Oracle Supports "TOP-N" Queries
27.1.5.2
How to Enable Range Paging for a View Object
27.1.5.3
What Happens When You Enable Range Paging
27.1.5.4
How are View Rows Cached When Using Range Paging?
27.1.5.5
How to Scroll to a Given Page Number Using Range Paging
27.1.5.6
Estimating the Number of Pages in the Row Set Using Range Paging
27.1.5.7
Accommodating Inserts and Deletes Using Auto Posting
27.1.5.8
Understanding the Tradeoffs of Using Range Paging Mode
27.1.6
Setting Up a Data Model with Multiple Masters
27.1.7
Understanding When You Can Use Partial Keys with findByKey()
27.1.8
Creating Dynamic Attributes to Store UI State
27.1.9
Working with Multiple Row Sets and Row Set Iterators
27.1.10
Optimizing View Link Accessor Access By Retaining the Row Set
27.2
Tuning Your View Objects for Best Performance
27.2.1
Use Bind Variables for Parameterized Queries
27.2.1.1
Use Bind Variables to Avoid Re-parsing of Queries
27.2.1.2
Use Bind Variables to Prevent SQL-Injection Attacks
27.2.2
Use Read-Only View Objects When Entity-Based Features Not Required
27.2.3
Use SQL Tracing to Identify Ill-Performing Queries
27.2.4
Consider the Appropriate Tuning Settings for Every View Object
27.2.4.1
Set the Database Retrieval Options Appropriately
27.2.4.2
Consider Whether Fetching One Row at a Time is Appropriate
27.2.4.3
Specify a Query Optimizer Hint if Necessary
27.2.5
Creating View Objects at Design Time
27.2.6
Use Forward Only Mode to Avoid Caching View Rows
27.3
Using Expert Mode for Full Control Over SQL Query
27.3.1
How to Enable Expert Mode for Full SQL Control
27.3.2
What Happens When You Enable Expert Mode
27.3.3
What You May Need to Know
27.3.3.1
You May Need to Perform Manual Attribute Mapping
27.3.3.2
Disabling Expert Mode Loses Any Custom Edits
27.3.3.3
Once In Expert Mode, Changes to SQL Expressions Are Ignored
27.3.3.4
Don't Map Incorrect Calculated Expressions to Entity Attributes
27.3.3.5
Expert Mode SQL Formatting is Retained
27.3.3.6
Expert Mode Queries Are Wrapped as Inline Views
27.3.3.7
Disabling the Use of Inline View Wrapping at Runtime
27.3.3.8
Enabling Expert Mode May Impact Dependent Objects
27.4
Working with Multiple Named View Criteria
27.4.1
Defining Named View Criteria
27.4.2
Applying One or More Named View Criteria
27.4.3
Removing All Applied Named View Criteria
27.4.4
Using the Named Criteria at Runtime
27.5
Performing In-Memory Sorting and Filtering of Row Sets
27.5.1
Understanding the View Object's Query Mode
27.5.2
Sorting View Object Rows In Memory
27.5.2.1
Combining setSortBy and setQueryMode for In-Memory Sorting
27.5.2.2
Extensibility Points for In-Memory Sorting
27.5.3
Performing In-Memory Filtering with View Criteria
27.5.4
Performing In-Memory Filtering with RowMatch
27.5.4.1
Applying a RowMatch to a View Object
27.5.4.2
Using RowMatch to Test an Individual Row
27.5.4.3
How a RowMatch Affects Rows Fetched from the Database
27.6
Using View Objects to Work with Multiple Row Types
27.6.1
What is a Polymorphic Entity Usage?
27.6.2
How To Create a View Object with a Polymorphic Entity Usage
27.6.3
What Happens When You Create a View Object with a Polymorphic Entity Usage
27.6.4
What You May Need to Know
27.6.4.1
Your Query Must Limit Rows to Expected Entity Subtypes
27.6.4.2
Exposing Selected Entity Methods in View Rows Using Delegation
27.6.4.3
Creating New Rows With the Desired Entity Subtype
27.6.5
What are Polymorphic View Rows?
27.6.6
How to Create a View Object with Polymorphic View Rows
27.6.7
What You May Need to Know
27.6.7.1
Selecting Subtype-Specific Attributes in Extended View Objects
27.6.7.2
Delegating to Subtype-Specific Methods After Overriding the Entity Usage
27.6.7.3
Working with Different View Row Interface Types in Client Code
27.6.7.4
View Row Polymorphism and Polymorphic Entity Usage are Orthogonal
27.7
Reading and Writing XML
27.7.1
How to Produce XML for Queried Data
27.7.2
What Happens When You Produce XML
27.7.3
What You May Need to Know
27.7.3.1
Controlling XML Element Names
27.7.3.2
Controlling Element Suppression for Null-Valued Attributes
27.7.3.3
Printing or Searching the Generated XML Using XPath
27.7.3.4
Using the Attribute Map For Fine Control Over Generated XML
27.7.3.5
Use the Attribute Map Approach with Bi-Directional View Links
27.7.3.6
Transforming Generated XML Using an XSLT Stylesheet
27.7.3.7
Generating XML for a Single Row
27.7.4
How to Consume XML Documents to Apply Changes
27.7.5
What Happens When You Consume XML Documents
27.7.5.1
How ViewObject.readXML() Processes an XML Document
27.7.5.2
Using readXML() to Processes XML for a Single Row
27.8
Using Programmatic View Objects for Alternative Data Sources
27.8.1
How to Create a Read-Only Programmatic View Object
27.8.2
How to Create an Entity-Based Programmatic View Object
27.8.3
Key Framework Methods to Override for Programmatic View Objects
27.8.4
How to Create a View Object on a REF CURSOR
27.8.4.1
The Overridden create() Method
27.8.4.2
The Overridden executeQueryForCollection() Method
27.8.4.3
The Overridden createRowFromResultSet() Method
27.8.4.4
The Overridden hasNextForCollectionMethod()
27.8.4.5
The Overridden releaseUserDataForCollection() Method
27.8.4.6
The Overridden getQueryHitCount() Method
27.8.5
Populating a View Object from Static Data
27.8.5.1
Basing Lookup View Object on SRStaticDataViewObjectImpl
27.8.5.2
Creating a View Object Based on Static Data from a Properties File
27.8.5.3
Creating Your Own View Object with Static Data
27.9
Creating a View Object with Multiple Updatable Entities
27.10
Declaratively Preventing Insert, Update, and Delete
28
Application Module State Management
28.1
Understanding Why State Management is Necessary
28.1.1
Examples of Multi-Step Tasks
28.1.2
Stateless HTTP Protocol Complicates Stateful Applications
28.1.3
How Cookies Are Used to Track a User Session
28.1.4
Performance and Reliability Impact of Using HttpSession
28.2
The ADF Business Components State Management Facility
28.2.1
Basic Architecture of the State Management Facility
28.2.2
Understanding When Passivation and Activation Occurs
28.2.3
How Passivation Changes When Optional Failover Mode is Enabled
28.3
Controlling the State Management Release Level
28.3.1
Supported Release Levels
28.3.2
Setting the Release Level at Runtime
28.3.2.1
Setting Release Level in a JSF Backing Bean
28.3.2.2
Setting Release Level in an ADF PagePhaseListener
28.3.2.3
Setting Release Level in an ADF PageController
28.3.2.4
Setting Release Level in an Custom ADF PageLifecycle
28.4
What State Is Saved and When is It Cleaned Up?
28.4.1
What State is Saved?
28.4.2
Where is the State Saved?
28.4.2.1
How Database-Backed Passivation Works
28.4.2.2
Controlling the Schema Where the State Management Table Resides
28.4.2.3
Configuring the Type of Passivation Store
28.4.3
When is the State Cleaned Up?
28.4.3.1
Previous Snapshot Removed When Next One Taken
28.4.3.2
Passivation Snapshot Removed on Unmanaged Release
28.4.3.3
Passivation Snapshot Retained in Failover Mode
28.4.4
Approaches for Timing Out the HttpSession
28.4.4.1
Configuring the Implicit Timeout Due to User Inactivity
28.4.4.2
Coding an Explicit HttpSession Timeout
28.4.5
Cleaning Up Temporary Storage Tables
28.5
Managing Custom User Specific Information
28.6
Managing State for Transient View Objects
28.7
Using State Management for Middle-Tier Savepoints
28.8
Testing to Ensure Your Application Module is Activation-Safe
28.8.1
Understanding the jbo.ampool.doampooling Configuration Parameter
28.8.2
Disabling Application Module Pooling to Test Activation
28.9
Caveats Regarding Pending Database State
28.9.1
Web Applications Should Use Optimistic Locking
28.9.2
Use PostChanges Only During the Current Request
28.9.3
Pending Database State Across Requests Requires Reserved Level
28.9.4
Connection Pooling Prevents Pending Database State
29
Understanding Application Module Pooling
29.1
Overview of Application Module Pooling
29.2
Lifecycle of a Web Page Request Using Oracle ADF and JSF
29.3
Understanding Configuration Property Scopes
29.4
Setting Pool Configuration Parameters
29.4.1
Setting Configuration Properties Declaratively
29.4.2
Setting Configuration Properties as System Parameters
29.4.3
Programmatically Setting Configuration Properties
29.5
How Many Pools are Created, and When?
29.5.1
Application Module Pools
29.5.2
Database Connection Pools
29.5.3
Understanding Application Module and Connection Pools
29.5.3.1
Single Oracle Application Server Instance, Single OC4J Container, Single JVM
29.5.3.2
Multiple Oracle Application Server Instances, Single OC4J Container, Multiple JVMs
29.6
Application Module Pool Parameters
29.6.1
Pool Behavior Parameters
29.6.2
Pool Sizing Parameters
29.6.3
Pool Cleanup Parameters
29.7
Database Connection Pool Parameters
29.8
How Database and Application Module Pools Cooperate
29.9
Database User State and Pooling Considerations
29.9.1
How Often prepareSession() Fires When jbo.doconnectionpooling = false
29.9.2
Setting Database User State When jbo.doconnectionpooling = true
29.9.3
Understanding How the SRDemo Application Sets Database State
30
Adding Security to an Application
30.1
Introduction to Security in Oracle ADF Web Applications
30.2
Specifying the JAZN Resource Provider
30.2.1
How To Specify the Resource Provider
30.2.2
What You May Need to Know About Oracle ADF Security and Resource Providers
30.3
Configuring Authentication Within the web.xml File
30.3.1
How to Enable J2EE Container-Managed Authentication
30.3.2
What Happens When You Use Security Constraints without Oracle ADF Security
30.3.3
How to Enable Oracle ADF Authentication
30.3.4
What Happens When You Use Security Constraints with Oracle ADF
30.4
Configuring the ADF Business Components Application to Use Container-Managed Security
30.4.1
How to Configure Security in an Oracle ADF Business Components Application
30.4.2
What Happens When You Configure Security in an ADF Business Components Application
30.4.3
What You May Need to Know About the ADF Business Components Security Property
30.5
Creating a Login Page
30.5.1
Wiring the Login and Error Pages
30.5.2
What Happens When You Wire the Login and Error Pages
30.6
Creating a Logout Page
30.6.1
Wiring the Logout Action
30.6.2
What Happens When You Wire the Logout Action
30.7
Implementing Authorization Using Oracle ADF Security
30.7.1
Configuring the Application to Use Oracle ADF Security Authorization
30.7.1.1
How to Configure Oracle ADF Security Authorization
30.7.1.2
What Happens When You Configure An Application to Use Oracle ADF Security
30.7.1.3
What You May Need to Know About the Authorization Property
30.7.2
Setting Authorization on ADF Binding Containers
30.7.3
Setting Authorization on ADF Iterator Bindings
30.7.4
Setting Authorization on ADF Attribute and MethodAction Bindings
30.7.5
What Happens When Oracle ADF Security Handles Authorization
30.8
Implementing Authorization Programmatically
30.8.1
Making User Information EL Accessible
30.8.1.1
Creating a Class to Manage Roles
30.8.1.2
Creating a Managed Bean for the Security Information
31
Creating Data Control Adapters
31.1
Introduction to the Simple CSV Data Control Adapter
31.2
Overview of Steps to Create a Data Control Adapter
31.3
Implement the Abstract Adapter Class
31.3.1
Location of JAR Files
31.3.2
Abstract Adapter Class Outline
31.3.3
Complete Source for the SampleDCAdapter Class
31.3.4
Implementing the initialize Method
31.3.5
Implementing the invokeUI Method
31.3.6
Implementing the getDefinition Method
31.4
Implement the Data Control Definition Class
31.4.1
Location of JAR Files
31.4.2
Data Control Definition Class Outline
31.4.3
Complete Source for the SampleDCDef Class
31.4.4
Creating a Default Constructor
31.4.5
Collecting Metadata from the User
31.4.6
Defining the Structure of the Data Control
31.4.7
Creating an Instance of the Data Control
31.4.8
Setting the Metadata for Runtime
31.4.9
Setting the Name for the Data Control
31.5
Implement the Data Control Class
31.5.1
Location of JAR Files
31.5.2
Data Control Class Outline
31.5.3
Complete Source for the SampleDataControl Class
31.5.4
Implementing the invokeOperation Method
31.5.4.1
About Calling processResult
31.5.4.2
Return Value for invokeOperation
31.5.5
Implementing the getName Method
31.5.6
Implementing the release Method
31.5.7
Implementing the getDataProvider Method
31.6
Create any Necessary Supporting Classes
31.7
Create an XML File to Define Your Adapter
31.8
Build Your Adapter
31.9
Package and Deploy Your Adapter to JDeveloper
31.10
Location of Javadoc Information
31.11
Contents of Supporting Files
31.11.1
sampleDC.xsd
31.11.2
CSVHandler Class
31.11.3
CSVParser
32
Working Productively in Teams
32.1
Using CVS with an ADF Project
32.1.1
Choice of Internal or External CVS Client
32.1.2
Preference Settings
32.1.3
File Dependencies
32.1.4
Use Consistent Connection Definition Names
32.1.5
General Advice for Committing ADF Work to CVS
32.1.5.1
Other Version Control Tips and Techniques
32.1.6
Check Out or Update from the CVS Repository
32.1.7
Special Consideration when Manually Adding Navigation Rules to the faces-config.xml File
32.2
General Advice for Using CVS with JDeveloper
32.2.1
Team-Level Activities
32.2.2
Developer-Level Activities
32.2.2.1
Typical Workflow When Checking Your Work Into CVS
32.2.2.2
Handling CVS Repository Configuration Files
32.2.2.3
Advice for Merge Conflicts in ADF Business Components Projects
33
Working with Web Services
33.1
What are Web Services
33.1.1
SOAP
33.1.2
WSDL
33.1.3
UDDI
33.1.4
Web Services Interoperability
33.2
Creating Web Service Data Controls
33.2.1
How to Create a Web Service Data Control
33.3
Securing Web Service Data Controls
33.3.1
WS-Security Specification
33.3.2
Creating and Using Keystores
33.3.2.1
How to Create a Keystore
33.3.2.2
How to Request a Certificate
33.3.2.3
How to Export a Public Key Certificate
33.3.3
Defining Web Service Data Control Security
33.3.3.1
How to Set Authentication
33.3.3.2
How to Set Digital Signatures
33.3.3.3
How to Set Encryption and Decryption
33.3.3.4
How to Use a Key Store
33.4
Publishing Application Modules as Web Services
33.4.1
How to Enable the J2EE Web Service Option for an Application Module
33.4.2
What Happens When You Enable the J2EE Web Service Option
33.4.3
What You May Need to Know About Deploying an Application Module as a Web Service
33.4.4
What You May Need to Know About Data Types Supported for Web Service Methods
33.5
Calling a Web Service from an Application Module
33.5.1
Understanding the Role of the Web Services Description Language Document
33.5.2
Understanding the Role of the Web Service Proxy Class
33.5.3
How to Call a Web Service from an Application Module
33.5.3.1
Creating a Web Service Proxy Class for a Web Service
33.5.3.2
Understanding the Generated Web Service Proxy
33.5.3.3
Calling a Web Service Method Using the Web Service Proxy Class
33.5.4
What Happens When You Call a Web Service from an Application Module
33.5.5
What You May Need to Know
33.5.5.1
Use a Try/Catch Block to Handle Web Service Exceptions
33.5.5.2
Web Services are Do Not Share a Transaction with the Application Module
33.5.5.3
Setting Browser Proxy Information
34
Deploying ADF Applications
34.1
Introduction to Deploying ADF Applications
34.2
Deployment Steps
34.3
Deployment Techniques
34.4
Deploying Applications Using Ant
34.5
Deploying the SRDemo Application
34.6
Deploying to Oracle Application Server
34.6.1
Oracle Application Server Versions Supported
34.6.2
Oracle Application Server Release 2 (10.1.2) Deployment Notes
34.6.3
Oracle Application Server Deployment Methods
34.6.4
Oracle Application Server Deployment to Test Environments ("Automatic Deployment")
34.6.5
Oracle Application Server Deployment to Clustered Topologies
34.7
Deploying to JBoss
34.7.1
JBoss Versions Supported
34.7.2
JBoss Deployment Notes
34.7.3
JBoss Deployment Methods
34.8
Deploying to WebLogic
34.8.1
WebLogic Versions Supported
34.8.2
WebLogic Versions 8.1 and 9.0 Deployment Notes
34.8.3
WebLogic 8.1 Deployment Notes
34.8.4
WebLogic 9.0 Deployment Notes
34.8.5
WebLogic Deployment Methods
34.9
Deploying to WebSphere
34.9.1
WebSphere Versions Supported
34.9.2
WebSphere Deployment Notes
34.9.3
WebSphere Deployment Methods
34.10
Deploying to Tomcat
34.10.1
Tomcat Versions Supported
34.10.2
Tomcat Deployment Notes
34.11
Deploying to Application Servers That Support JDK 1.4
34.11.1
Switching Embedded OC4J to JDK 1.4
34.12
Installing ADF Runtime Library on Third-Party Application Servers
34.12.1
Installing the ADF Runtime Libraries from JDeveloper
34.12.2
Configuring WebSphere 6.0.1 to Run ADF Applications
34.12.2.1
Source for install_adflibs_1013.sh Script
34.12.2.2
Source for install_adflibs_1013.cmd Script
34.12.3
Installing the ADF Runtime Libraries Manually
34.12.3.1
Installing the ADF Runtime Libraries from a Zip File
34.12.4
Deleting the ADF Runtime Library
34.13
Verifying Deployment and Troubleshooting
34.13.1
How to Test Run Your Application
34.13.2
"Class Not Found" or "Method Not Found" Errors
34.13.3
Application Is Not Using data-sources.xml File on Target Application Server
34.13.4
Using jazn-data.xml with the Embedded OC4J Server
34.13.5
Error "JBO-30003: The application pool failed to check out an application module due to the following exception"
Part V Appendices
A
Reference ADF XML Files
A.1
About the ADF Metadata Files
A.2
ADF File Overview Diagram
A.2.1
Oracle ADF Data Control Files
A.2.2
Oracle ADF Data Binding Files
A.2.3
Oracle ADF Faces and Web Configuration Files
A.3
ADF File Syntax Diagram
A.4
bc4j.xcfg
A.5
DataBindings.cpx
A.5.1
DataBindings.cpx Syntax
A.5.2
DataBindings.cpx Sample
A.6
<pageName>PageDef.xml
A.6.1
PageDef.xml Syntax
A.6.2
PageDef.xml Sample for Attributes of a View Object
A.6.3
PageDef.xml Sample for the Entire View Object
A.7
web.xml
A.7.1
Tasks Supported by the web.xml File
A.7.1.1
Configuring for State Saving
A.7.1.2
Configuring for Application View Caching
A.7.1.3
Configuring for Debugging
A.7.1.4
Configuring for File Uploading
A.7.1.5
Configuring for ADF Model Binding
A.7.1.6
Other Context Configuration Parameters for JSF
A.7.1.7
What You May Need to Know
A.8
j2ee-logging.xml
A.8.1
Tasks Supported by the j2ee-logging.xml
A.8.1.1
Change the Logging Level for Oracle ADF Packages
A.8.1.2
Redirect the Log Output
A.8.1.3
Change the Location of the Log File
A.9
faces-config.xml
A.9.1
Tasks Supported by the faces-config.xml
A.9.1.1
Registering a Render Kit for ADF Faces Components
A.9.1.2
Registering a Phase Listener for ADF Binding
A.9.1.3
Registering a Message Resource Bundle
A.9.1.4
Configuring for Supported Locales
A.9.1.5
Creating Navigation Rules and Cases
A.9.1.6
Registering Custom Validators and Converters
A.9.1.7
Registering Managed Beans
A.10
adf-faces-config.xml
A.10.1
Tasks Supported by adf-faces-config.xml
A.10.1.1
Configuring Accessibility Levels
A.10.1.2
Configuring Currency Code and Separators for Number Groups and Decimals
A.10.1.3
Configuring For Enhanced Debugging Output
A.10.1.4
Configuring for Client-Side Validation and Conversion
A.10.1.5
Configuring the Language Reading Direction
A.10.1.6
Configuring the Skin Family
A.10.1.7
Configuring the Output Mode
A.10.1.8
Configuring the Number of Active ProcessScope Instances
A.10.1.9
Configuring the Time Zone and Year Offset
A.10.1.10
Configuring a Custom Uploaded File Processor
A.10.1.11
Configuring the Help Site URL
A.10.1.12
Retrieving Configuration Property Values From adf-faces-config.xml
A.11
adf-faces-skins.xml
A.11.1
Tasks Supported by adf-faces-skins.xml
B
Reference ADF Binding Properties
B.1
EL Properties of Oracle ADF Bindings
C
ADF Equivalents of Common Oracle Forms Triggers
C.1
Validation & Defaulting (Business Logic)
C.2
Query Processing
C.3
Database Connection
C.4
Transaction "Post" Processing (Record Cache)
C.5
Error Handling
D
Most Commonly Used ADF Business Components Methods
D.1
Most Commonly Used Methods in the Client Tier
D.1.1
ApplicationModule Interface
D.1.2
Transaction Interface
D.1.3
ViewObject Interface
D.1.4
RowSet Interface
D.1.5
RowSetIterator Interface
D.1.6
Row Interface
D.1.7
StructureDef Interface
D.1.8
AttributeDef Interface
D.1.9
AttributeHints Interface
D.2
Most Commonly Used Methods In the Business Service Tier
D.2.1
Controlling Custom Java Files For Your Components
D.2.2
ApplicationModuleImpl Class
D.2.2.1
Methods You Typically Call on ApplicationModuleImpl
D.2.2.2
Methods You Typically Write in Your Custom ApplicationModuleImpl Subclass
D.2.2.3
Methods You Typically Override in Your Custom ApplicationModuleImpl Subclass
D.2.3
DBTransactionImpl2 Class
D.2.3.1
Methods You Typically Call on DBTransaction
D.2.3.2
Methods You Typically Override in Your Custom DBTransactionImpl2 Subclass
D.2.4
EntityImpl Class
D.2.4.1
Methods You Typically Call on EntityImpl
D.2.4.2
Methods You Typically Write in Your Custom EntityImpl Subclass
D.2.4.3
Methods You Typically Override on EntityImpl
D.2.5
EntityDefImpl Class
D.2.5.1
Methods You Typically Call on EntityDefImpl
D.2.5.2
Methods You Typically Write on EntityDefImpl
D.2.5.3
Methods You Typically Override on EntityDefImpl
D.2.6
ViewObjectImpl Class
D.2.6.1
Methods You Typically Call on ViewObjectImpl
D.2.6.2
Methods You Typically Write in Your Custom ViewObjectImpl Subclass
D.2.6.3
Methods You Typically Override in Your Custom ViewObjectImpl Subclass
D.2.7
ViewRowImpl Class
D.2.7.1
Methods You Typically Call on ViewRowImpl
D.2.7.2
Methods You Typically Write on ViewRowImpl
D.2.7.3
Methods You Typically Override in Your Custom ViewRowImpl Subclass
D.2.8
Setting Up Your Own Layer of Framework Base Classes
E
ADF Business Components J2EE Design Pattern Catalog
E.1
J2EE Design Patterns Implemented by ADF Business Components
Index