Top Banner
153

Debugging Oracle ADF Applications (OpenWorld 2009)

Nov 17, 2014

Download

Documents

stevemuench

This talk explains key techniques for debugging Oracle ADF applications.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Debugging Oracle ADF Applications (OpenWorld 2009)
Page 2: Debugging Oracle ADF Applications (OpenWorld 2009)

<Insert Picture Here>

How to Debug Oracle Application Framework Applications

Steve Muench

Oracle ADF Development Team

Page 3: Debugging Oracle ADF Applications (OpenWorld 2009)

"My ADF Application's Not Working… Help!"

"I see an exception stack trace…"

"I get data, but it's the wrong data…"

"I expect to see data, but no rows appear…"

"My application is slow…"

Page 4: Debugging Oracle ADF Applications (OpenWorld 2009)

Start by Getting More Contextual Information

and Trying to Isolate the Problem

Enable Debug Diagnostics

Verbose trace of what happens before problem occurs

Try to reproduce using the BC Tester

Avoid web app restart delay as you narrow down the problem

Try to reproduce using a standalone test client

No UI interaction required = fastest option of all

Page 5: Debugging Oracle ADF Applications (OpenWorld 2009)

HOW TO…

Enable Diagnostic Logging

Page 6: Debugging Oracle ADF Applications (OpenWorld 2009)

Enable Diagnostic Logging

► Increase Log Lines and/or Log to File

Main Menu: { Tools | Preferences… }

Page 7: Debugging Oracle ADF Applications (OpenWorld 2009)

Enable Diagnostic Logging

► Create New Run Configuration

Main Menu: { Application | Project Properties… }

Page 8: Debugging Oracle ADF Applications (OpenWorld 2009)

Enable Diagnostic Logging

► Name New Run Configuration

Page 9: Debugging Oracle ADF Applications (OpenWorld 2009)

Enable Diagnostic Logging

► Edit New Run Configuration

Page 10: Debugging Oracle ADF Applications (OpenWorld 2009)

Enable Diagnostic Logging

► Add –Djbo.debugoutput=console to Java Options

Page 11: Debugging Oracle ADF Applications (OpenWorld 2009)

Enable Diagnostic Logging

► Choosing Active Run Configuration

Page 12: Debugging Oracle ADF Applications (OpenWorld 2009)

HOW TO

Debug with the Business

Components Tester

Page 13: Debugging Oracle ADF Applications (OpenWorld 2009)

Debug with the Business Components Tester

► Right-click Debug to Use Default Configuration

Page 14: Debugging Oracle ADF Applications (OpenWorld 2009)

Debug with the Business Components Tester

► Debug Specific Configuration In AM Editor

Page 15: Debugging Oracle ADF Applications (OpenWorld 2009)

Debug with the Business Components Tester

► Double-click App Module to See Client Methods

Page 16: Debugging Oracle ADF Applications (OpenWorld 2009)

Debug with the Business Components Tester

► Choose Method, Enter Params, and Execute

Page 17: Debugging Oracle ADF Applications (OpenWorld 2009)

Debug with the Business Components Tester

► Double-click View Instance to See Data

Page 18: Debugging Oracle ADF Applications (OpenWorld 2009)

Debug with the Business Components Tester

► Alternatively, Show Data in Editable Table

Page 19: Debugging Oracle ADF Applications (OpenWorld 2009)

Debug with the Business Components Tester

► If Needed, View Object Operations Available

Page 20: Debugging Oracle ADF Applications (OpenWorld 2009)

Debug with the Business Components Tester

► Choose Method, Enter Params, and Execute

Page 21: Debugging Oracle ADF Applications (OpenWorld 2009)

HOW TO

Create a Command-Line

Test Client Program

Page 22: Debugging Oracle ADF Applications (OpenWorld 2009)

Create a Command-Line Test Client Program

► Create a New Java Class with main() Method

Page 23: Debugging Oracle ADF Applications (OpenWorld 2009)

Create a Command-Line Test Client Program

► Use bc4jclient Code Template

Page 24: Debugging Oracle ADF Applications (OpenWorld 2009)

Create a Command-Line Test Client Program

► Replace AM, Config, VO Names Appropriately

Page 25: Debugging Oracle ADF Applications (OpenWorld 2009)

Create a Command-Line Test Client Program

► Write Code to Work with AM and/or VO

Page 26: Debugging Oracle ADF Applications (OpenWorld 2009)

HOW TO

Export Debugger Call Stack

and Exact JDev/ADF Version

Page 27: Debugging Oracle ADF Applications (OpenWorld 2009)

Export Debugger Call Stack

► Visit Stack Window Preferences

Page 28: Debugging Oracle ADF Applications (OpenWorld 2009)

Export Debugger Call Stack

► Enable Line Numbers in Stack Window

Page 29: Debugging Oracle ADF Applications (OpenWorld 2009)

Export Debugger Call Stack

► Export the Stack to a Text File

Page 30: Debugging Oracle ADF Applications (OpenWorld 2009)

Copying Exact Build Information to the Clipboard

Page 31: Debugging Oracle ADF Applications (OpenWorld 2009)

TIP

Having the ADF Source Code

Makes a Big Difference

Page 32: Debugging Oracle ADF Applications (OpenWorld 2009)

Without ADF Source…

Parameter Insight Only Gives Data Types

Page 33: Debugging Oracle ADF Applications (OpenWorld 2009)

With ADF Source…

Parameter Insight Shows Parameter Names, Too

Page 34: Debugging Oracle ADF Applications (OpenWorld 2009)

Without ADF Source…

Quick JavaDoc Does Not Work At All

Page 35: Debugging Oracle ADF Applications (OpenWorld 2009)

With ADF Source…

Quick JavaDoc Gives You Instant Overviews

Page 36: Debugging Oracle ADF Applications (OpenWorld 2009)

Without ADF Source…

Only Method Breakpoints in Fwk, and No Stepping

Page 37: Debugging Oracle ADF Applications (OpenWorld 2009)

With ADF Source…

Break Anywhere, Step Into Anything

Page 38: Debugging Oracle ADF Applications (OpenWorld 2009)

Without ADF Source…

Go To Declaration Shows Only Decompiled Stub

Page 39: Debugging Oracle ADF Applications (OpenWorld 2009)

With ADF Source…

Go To Declaration Really Goes There

Page 40: Debugging Oracle ADF Applications (OpenWorld 2009)

With ADF Source, and Find Usages…

Find Where Exceptions Thrown, Properties Used,

Diagnostics Printed, and More

PropertyConstantsPropertyMetadata(oracle.jbo.common)

Configuration Property Definitions

CSMessageBundle(oracle.jbo.common)

ADF Business Components

Runtime Error Messages

ADFmMessage(oracle.adf.model)

ADF Model Data Binding

Runtime Error Messages

Page 41: Debugging Oracle ADF Applications (OpenWorld 2009)

Requesting the ADF Source Code Is Painless

1. Open a Service Request on Metalink

Indicate exactly the JDev/ADF release you are working with

(for example, 11.1.1.1.0)

2. Have the Legal Agreement Signed

Typically VP or higher but depends on the company

Signer's company must be same as the CSI number

3. Return the Legal Agreement to Oracle

Scan the agreement and email it

4. Support Updates the SR with Download Link

Download the source

Page 42: Debugging Oracle ADF Applications (OpenWorld 2009)

Dev Guide Explains How to Setup Source

Page 43: Debugging Oracle ADF Applications (OpenWorld 2009)

HOW TO

Set Up and Use Oracle ADF

Source for Debugging

Page 44: Debugging Oracle ADF Applications (OpenWorld 2009)

Set Up Oracle ADF Source for Debugging

► Create New Library

Main Menu: { Tools | Manage Libraries… }

Page 45: Debugging Oracle ADF Applications (OpenWorld 2009)

Set Up Oracle ADF Source for Debugging

► Name Library and Add Source Path Entry

Page 46: Debugging Oracle ADF Applications (OpenWorld 2009)

Set Up Oracle ADF Source for Debugging

► Select ADF Source Zip File

Page 47: Debugging Oracle ADF Applications (OpenWorld 2009)

Use Oracle ADF Source for Debugging

► In Project Properties, Add Library

Page 48: Debugging Oracle ADF Applications (OpenWorld 2009)

Use Oracle ADF Source for Debugging

► Select ADF Source Library You Created Earlier

Page 49: Debugging Oracle ADF Applications (OpenWorld 2009)

Use Oracle ADF Source for Debugging

► With Library in Your Classpath, Ready to Debug

Page 50: Debugging Oracle ADF Applications (OpenWorld 2009)

HOW TO DEBUG

Exception with Stack Trace

Page 51: Debugging Oracle ADF Applications (OpenWorld 2009)

Symptom: NullPointerException on Navigation

Page 52: Debugging Oracle ADF Applications (OpenWorld 2009)

Log Window Gives More Info

Double-click To Maximize Tabbed Contents

Page 53: Debugging Oracle ADF Applications (OpenWorld 2009)

Framework Caught Unexpected Exception

Scroll Down to See Original Cause

Page 54: Debugging Oracle ADF Applications (OpenWorld 2009)

NullPointerException in EmpImpl.validateEmp()

Click on the Hyperlink to Open Source

Page 55: Debugging Oracle ADF Applications (OpenWorld 2009)

If getComm() Returns null, We Have a Problem

Verify Your Suspicion Using Exception Breakpoint

Page 56: Debugging Oracle ADF Applications (OpenWorld 2009)

In the Breakpoints Tab…

Create a New Exception Breakpoint

Page 57: Debugging Oracle ADF Applications (OpenWorld 2009)

Use In-Field Classname Insight or Dropdown

to Specify Exception Class Name

Page 58: Debugging Oracle ADF Applications (OpenWorld 2009)

Debug the Application Again Using the

Business Components Browser

Page 59: Debugging Oracle ADF Applications (OpenWorld 2009)

Unrelated Code Also Throws NullPointerException!

Delay Enabling Breakpoint to Avoid Stopping Here

Page 60: Debugging Oracle ADF Applications (OpenWorld 2009)

Navigate to Source of ApplicationModuleImplUsing Go to Java Type…

Page 61: Debugging Oracle ADF Applications (OpenWorld 2009)

Type Enough of the Class to Narrow the List

Camelcase Matching Saves Keystrokes

Page 62: Debugging Oracle ADF Applications (OpenWorld 2009)

Navigate to prepareSession() Method

Using Quick Outline

Page 63: Debugging Oracle ADF Applications (OpenWorld 2009)

Type to Narrow the Method List

Use Arrows+[Enter] or Mouse to Navigate

Page 64: Debugging Oracle ADF Applications (OpenWorld 2009)

Set a Breakpoint in prepareSession()This Occurs After AM is Checked Out of Pool

Page 65: Debugging Oracle ADF Applications (OpenWorld 2009)

Edit Exception Breakpoint to Add Group Name

Page 66: Debugging Oracle ADF Applications (OpenWorld 2009)

Name the Breakpoint Group Anything You Like

Page 67: Debugging Oracle ADF Applications (OpenWorld 2009)

Edit the prepareSession() Breakpoint

Page 68: Debugging Oracle ADF Applications (OpenWorld 2009)

Visit the Actions Tab

Page 69: Debugging Oracle ADF Applications (OpenWorld 2009)

Configure the Action to Enable a Breakpoint Group

Choosing Yours from the List

Page 70: Debugging Oracle ADF Applications (OpenWorld 2009)

Disable the Breakpoint Group By Default

Action Will Enable it at prepareSession() Time

Page 71: Debugging Oracle ADF Applications (OpenWorld 2009)

Debug Again. Only Stop at NullPointerException

After First Hitting the prepareSession() Breakpoint

Page 72: Debugging Oracle ADF Applications (OpenWorld 2009)

Add a Watch Expression for getComm()

to Inspect Value of the Comm Attribute

Page 73: Debugging Oracle ADF Applications (OpenWorld 2009)

Suspicion is Confirmed, It's Null

Page 74: Debugging Oracle ADF Applications (OpenWorld 2009)

Add Null Protection to Fix the Bug

Debug and Test to Verify Your Fix

Page 75: Debugging Oracle ADF Applications (OpenWorld 2009)

Symptom: DMLException After Committing Data

Page 76: Debugging Oracle ADF Applications (OpenWorld 2009)

Exception Breakpoints Stop for

Subtype Exceptions, Too

Page 77: Debugging Oracle ADF Applications (OpenWorld 2009)

Summary of Techniques Used in the Example

Exception breakpoints

To stop when exception is thrown

Use more generic or more specific exception type as needed

Breakpoint Groups and Actions

To avoid stopping at uninteresting occurrences

Watch Expressions

To easily inspect the value of attributes

Page 78: Debugging Oracle ADF Applications (OpenWorld 2009)

HOW TO DEBUG

"Wrong Data" Problems

Page 79: Debugging Oracle ADF Applications (OpenWorld 2009)

Overview of Application to Debug

tfParam_deptno => #{pageFlowScope.deptno}

VarDeptno =#{pageFlowScope.deptno}

<af:setActionListenerfrom="#{bindings.Deptno.inputValue}"

to="#{requestScope.deptno}"

tfParam_deptno =#{requestScope.deptno}

Page 80: Debugging Oracle ADF Applications (OpenWorld 2009)

Symptom: Choose Department "ACCOUNTING" (10)

But See Employees for All Departments

Page 81: Debugging Oracle ADF Applications (OpenWorld 2009)

Set a Breakpoint in ViewObjectImpl

bindParametersForCollection() Method & Debug

Page 82: Debugging Oracle ADF Applications (OpenWorld 2009)

Breakpoint Hit: View Object Query is Executing,

But Which One?

Page 83: Debugging Oracle ADF Applications (OpenWorld 2009)

This Query Execution is for VO Instance

Named "DepartmentList" (for Dropdown List)

Page 84: Debugging Oracle ADF Applications (OpenWorld 2009)

Edit the Breakpoint to Make it Break Only For the

"EmpView1" View Object We're Interested In

Page 85: Debugging Oracle ADF Applications (OpenWorld 2009)

Edit Breakpoint, Add Conditional Expression to

Stop Only For "EmpView1" VO Instance

Page 86: Debugging Oracle ADF Applications (OpenWorld 2009)

Choose a Department, Click Button to

Call the Task Flow

Page 87: Debugging Oracle ADF Applications (OpenWorld 2009)

Suppress Hiding Null Array Elements

Using Debugger Data Window Preferences

Page 88: Debugging Oracle ADF Applications (OpenWorld 2009)

Suppress Hiding Null Array Elements

Using Debugger Data Window Preferences

Page 89: Debugging Oracle ADF Applications (OpenWorld 2009)

Bind Variable VarDeptno has null value

Next, Need to Figure Out Why

Page 90: Debugging Oracle ADF Applications (OpenWorld 2009)

Toggle Breakpoint on TaskFlow Call Activity

and Repeat the Test

Page 91: Debugging Oracle ADF Applications (OpenWorld 2009)

At Breakpoint, Use ADF Structure to Inspect the

Request Scope: deptno Attribute Set Correctly

Page 92: Debugging Oracle ADF Applications (OpenWorld 2009)

Drilldown to Task Flow, Toggle Breakpoint on

Default MethodCall Activitity, then Continue

Page 93: Debugging Oracle ADF Applications (OpenWorld 2009)

At the Breakpoint, Use ADF Structure to Inspect

the Task Flow: pageFlowScope.deptno Set OK

Page 94: Debugging Oracle ADF Applications (OpenWorld 2009)

Navigate to the Method Call Activity's Page Def

Page 95: Debugging Oracle ADF Applications (OpenWorld 2009)

Toggle Breakpoint on ExecuteWithParams Action,

Then Continue Execution

Page 96: Debugging Oracle ADF Applications (OpenWorld 2009)

At the Breakpoint, Explore the Value of Method

Action's Arguments: VarDeptno is null Incorrectly!

Page 97: Debugging Oracle ADF Applications (OpenWorld 2009)

Explore Action Binding Runtime Metadata

in ADF Data Window to See EL Expression Used

Page 98: Debugging Oracle ADF Applications (OpenWorld 2009)

View the Whole EL Expression Value,

Copy it to Clipboard

Page 99: Debugging Oracle ADF Applications (OpenWorld 2009)

Use EL Evaluator to Test Pasted Expression

It Evaluates to null. Notice Typo deplno

Page 100: Debugging Oracle ADF Applications (OpenWorld 2009)

Fix Typo, Test Expression, Copy to Clipboard

Page 101: Debugging Oracle ADF Applications (OpenWorld 2009)

Edit Action Binding, Paste in Correct Expression

Rerun Application to Verify the Fix

Page 102: Debugging Oracle ADF Applications (OpenWorld 2009)

Now, EmpView1's VarDeptno Bind Variable

Gets Correctly Set to the Selected Department Id

Page 103: Debugging Oracle ADF Applications (OpenWorld 2009)

Summary of Techniques Used in the Example

Breakpoint in bindParametersForCollection()

To break whenever a View Object's query executes

Conditional breakpoint expressions

To break only for the EmpView1 VO instance

Breakpoints on Task Flow Activities

To break on task flow call and method call (among others)

ADF Structure and ADF Data Windows

To Inspect ADF context, scopes, task flow artifacts

Breakpoint on Action Bindings in Page Definition

To break just before action occurs

EL Evaluator Window

To test EL expressions in correct runtime context

Page 104: Debugging Oracle ADF Applications (OpenWorld 2009)

HOW TO DEBUG

"No Data" Problems

Page 105: Debugging Oracle ADF Applications (OpenWorld 2009)

Symptom: No Data Appears

Page 106: Debugging Oracle ADF Applications (OpenWorld 2009)

At bindParametersForCollection() Breakpoint,

Add Watches for getQuery() and params

Page 107: Debugging Oracle ADF Applications (OpenWorld 2009)

Use View Whole Value... to Copy/Paste Query

Into SQL Worksheet, Then Format SQL

Format SQL

Page 108: Debugging Oracle ADF Applications (OpenWorld 2009)

Execute SQL Using Same Bind Variable Values

As in the Watches Window. Data OK

Page 109: Debugging Oracle ADF Applications (OpenWorld 2009)

ViewObject FlowChart for "No Data" Problems

Fetched Row null?

bindParametersForCollection()

createRowFromResultSet()

Rows Returned

?

No Results from DB

Discriminator Mismatch

rowQualifies()Qualifies

for RowSet?

Failed to Qualify

No

No

Yes

Yes

No

Row Added to RowSet

Yes

while (hasNext())

Page 110: Debugging Oracle ADF Applications (OpenWorld 2009)

createRowFromResultSet() Shows Null Row

Points to Discriminator Mismatch Problem

Page 111: Debugging Oracle ADF Applications (OpenWorld 2009)

Query Retrieves JOB Column Values Different

From the Defined Discriminator Values!

Page 112: Debugging Oracle ADF Applications (OpenWorld 2009)

Changing the Applied View Criteria to Limit Results

to Only Include Clerks and Salesmen Fixes Problem

Page 113: Debugging Oracle ADF Applications (OpenWorld 2009)

Summary of Techniques Used in the Example

Breakpoint in bindParametersForCollection()

To examine query statement and bind variable values

SQL Worksheet

To test query against same database as the application

Breakpoint in createRowFromResultSet()

To test whether database row is retrieved without error

Page 114: Debugging Oracle ADF Applications (OpenWorld 2009)

TIP

Show Id in Data and Watches

Windows to Distinguish

Instances

Page 115: Debugging Oracle ADF Applications (OpenWorld 2009)

Use Id in Data/Watch Windows to Distinguish Objs

► Open Data or Watch Window Preferences

Page 116: Debugging Oracle ADF Applications (OpenWorld 2009)

Use Id in Data/Watch Windows to Distinguish Objs

► Enable Id Column

Page 117: Debugging Oracle ADF Applications (OpenWorld 2009)

Use Id in Data/Watch Windows to Distinguish Objs

► Jot Down Id of Objects at One Breakpoint

Page 118: Debugging Oracle ADF Applications (OpenWorld 2009)

Use Id in Data/Watch Windows to Distinguish Objs

► Compare to Object Id at Other Breakpoint

Page 119: Debugging Oracle ADF Applications (OpenWorld 2009)

HOW TO DEBUG

"Slow Application" Problems

Page 120: Debugging Oracle ADF Applications (OpenWorld 2009)

Logging Executed Queries and Fetched Rows

Page 121: Debugging Oracle ADF Applications (OpenWorld 2009)

Logging Executed Queries and Fetched Rows

Page 122: Debugging Oracle ADF Applications (OpenWorld 2009)

TIP

Customize Debugger Display

of Any Object Type

Page 123: Debugging Oracle ADF Applications (OpenWorld 2009)

Customize Debugger Display of Any Object Type

► Select Object Preferences for a Given Entry

Page 124: Debugging Oracle ADF Applications (OpenWorld 2009)

Customize Debugger Display of Any Object Type

► Decide What Fields/Expressions To Show

Page 125: Debugging Oracle ADF Applications (OpenWorld 2009)

Customize Debugger Display of Any Object Type

► Four Changes Are Showing, But Others, Too

Page 126: Debugging Oracle ADF Applications (OpenWorld 2009)

Customize Debugger Display of Any Object Type

► Customize Supertype Members, Too, If Needed

Page 127: Debugging Oracle ADF Applications (OpenWorld 2009)

Other Interesting Info in ADF Structure / ADF Data

Lifecycle Breakpoints and Page UI Component Tree

Page 128: Debugging Oracle ADF Applications (OpenWorld 2009)

Other Interesting Info in ADF Structure / ADF Data

ADF Context

Page 129: Debugging Oracle ADF Applications (OpenWorld 2009)

TIP

Watches Can Evaluate Most

Java Expressions

Page 130: Debugging Oracle ADF Applications (OpenWorld 2009)

Not Sure What Watch Expression to Use?

Find Member in Data Window, Then Watch It

Page 131: Debugging Oracle ADF Applications (OpenWorld 2009)

Navigate Members Regardless of Access Mode

mInner.mRows[0].mData.mStorage

Call Functions

getViewObject().findAttributeDef("Dname").getUIHelper().getLabel(getViewObject().getApplicationModule().getSession().getLocaleContext())

Debugger Watch Expressions Can Do Many Things

For Example, At a Breakpoint in ViewRowImpl…

Page 132: Debugging Oracle ADF Applications (OpenWorld 2009)

Debugger Watch Expression Tricks (Cont'd)

Call Methods That Produce Log Output

xmlNode.print(System.out)

Page 133: Debugging Oracle ADF Applications (OpenWorld 2009)

TIP

Breakpoint Expressions Can

Reference Watch Expressions

Page 134: Debugging Oracle ADF Applications (OpenWorld 2009)

Breakpoint Conditional Expressions

Basic Expresssions

Any Expression that Works in a Watch

Boolean operators ! (not), || (logical or), && (logical and)

Gotcha: Remember to Think About null Values

Expr != null && Expr.equals("Foo")

"Foo".equals(Expr)

Advanced Expressions

_throw to reference exception object being thrown

instanceof fully.qualified.ClassNameStringExpr != null && StringExpr.indexof("Something") >= 0

StringExpr != null && StringExpr.startsWith("Something")

Expr ? IfTrueExpr : IfFalseExpr

Page 135: Debugging Oracle ADF Applications (OpenWorld 2009)

When Debugging Does Not Succeed…

Create a Great Test Case for Worldwide Support

Small investment of your time pays dividends

Simple testcase → faster diagnosis, workaround, fix

Base the testcase on EMP or HR schema

Eliminates any database setup complications

Otherwise, provide minimal SQL script

Insert only enough sample data to reproduce problem

Create a command-line test client

Reduces reproduce instructions to: "Run Test.java"

Otherwise, give the minimum steps to reproduce

Some issues only occur in context of multi-step, web scenario

Page 136: Debugging Oracle ADF Applications (OpenWorld 2009)

ADF DEBUGGING FUTURES

Page 137: Debugging Oracle ADF Applications (OpenWorld 2009)

The following is intended to outline our general

product direction. It is intended for information

purposes only, and may not be incorporated into any

contract. It is not a commitment to deliver any

material, code, or functionality, and should not be

relied upon in making purchasing decisions.

The development, release, and timing of any

features or functionality described for Oracle’s

products remains at the sole discretion of Oracle.

Page 138: Debugging Oracle ADF Applications (OpenWorld 2009)

Future ADF Logger Improvements

► Configure Loggers Dynamically

Page 139: Debugging Oracle ADF Applications (OpenWorld 2009)

Future ADF Logger Improvements

► Configure Logger Levels Dynamically

Page 140: Debugging Oracle ADF Applications (OpenWorld 2009)

Future ADF Logger Improvements

► See Class/Method With Every Log Message

Page 141: Debugging Oracle ADF Applications (OpenWorld 2009)

Future ADF Logger Improvements

► Flexibly Search Log Files

Page 142: Debugging Oracle ADF Applications (OpenWorld 2009)

Future ADF Logger Improvements

► Flexibly Search Log Files

Page 143: Debugging Oracle ADF Applications (OpenWorld 2009)

Future ADF Debugger Improvements

► Easily See Binding Values

Page 144: Debugging Oracle ADF Applications (OpenWorld 2009)

Future ADF Debugger Improvements

► Easily Explore ViewRows and Entity Objects

Page 145: Debugging Oracle ADF Applications (OpenWorld 2009)

Future ADF Debugger Improvements

► Quick Expand

Page 146: Debugging Oracle ADF Applications (OpenWorld 2009)

Future ADF Debugger Improvements

► Quick Expand

Page 147: Debugging Oracle ADF Applications (OpenWorld 2009)

Learn More at OOW and Oracle Develop

Related Sessions and Hands-on Labs:

Oracle JDeveloper and ADF at the Demoground

Moscone West - W-114, W-116, W-109

ADF day at OOW Un-conference

Wed 9:00-5:00 Moscone West – Overlook 1

Win a Wii – visit Oracle Usability pod (Oracle Develop lobby)

Date Session

Mon 10:15am Oracle Fusion Design Fundamentals (Yosemite B)

Mon 4:00pm Mastering Oracle ADF Task Flow (Yosemite B)

Tue 2:30pm Oracle ADF: Fusion Applications Teams' Best Practices (Golden Gate 3)

Tue 5:30pm Ensuring Reusability in Oracle ADF: Designing for Data Model and Component Reuse

(Golden Gate 3)

Wed 1:00pm ADF Methodology Group Meeting (Moscone West, 3rd Floor, Overlook 1)

Page 148: Debugging Oracle ADF Applications (OpenWorld 2009)

<Insert Picture Here>

More Information on Oracle JDeveloper

http://oracle.com/technology/jdev

Tutorials and How-To’s

Samples

Demos

Books and Training

Discussion forum

Blogs

More…

Page 149: Debugging Oracle ADF Applications (OpenWorld 2009)

http://blogs.oracle.com/smuenchadf

Page 150: Debugging Oracle ADF Applications (OpenWorld 2009)

Middleware Lounge

At the Marriott Hotel

Free Amazon Web Services access$35 credit for development time

Daily workshops: “Developing in the Cloud”

Q&A with Amazon representatives and other experts

Internet accessWireless access

SunRay machines also provided

Recharging stations for your phone or laptop

Free food and beverages

Live Twitter feeds and blog updates

Watch keynotes and featured sessions while relaxing, recharging, and checking email

Workshops DailyIn the Middleware Lounge

•Daily, 11:30 AM Introduction to Amazon Web

Services

•Monday 2:00 PM Developing with WebCenter and Oracle Content Management in

Amazon Web Services

•Tuesday 2:00 PM Developing with WebCenter and Oracle Content Management in Amazon Web

Services

•Wednesday 2:15 PM Developing with Oracle SOA Suite in Amazon

Web Services

•Thursday 2:30 PM Developing with Oracle SOA Suite in Amazon

Web Services

Page 151: Debugging Oracle ADF Applications (OpenWorld 2009)

Appendix

Useful ADFM/ADFBC Methods for Debugging

Object Method Description

ViewObjectImpl bindParametersForCollection Inspect SQL and bind variables just before

executing query

createRowFromResultSet Study each row as its fetched from the database

ViewRowImpl populate Observe row after being populated with fetched

data

setAttributeInternal Examine attribute value being set

setAttributeValues Examine multiple attribute values being set

(typically by LOV mechanism)

ApplicationPoolImpl doCheckout Watch AM as its checked out of the pool

doManagedCheckin See AM as its checked into pool in managed mode

doUnmanagedCheckin See AM as its checked into pool in stateless mode

EntityImpl setAttributeInternal Examine attribute value being set

ExprEval doEvaluate Analyze each Groovy expression being evaluated

JUCtrlActionBinding doIt Follow any (method) action binding invocation

Page 152: Debugging Oracle ADF Applications (OpenWorld 2009)

QUESTIONS?

Page 153: Debugging Oracle ADF Applications (OpenWorld 2009)