I Oracle ADF Support

This appendix provides a detailed discussion of the support available for the accurate monitoring of Oracle Application Development Framework (ADF)-based applications.

I.1 Introduction to ADF

RUEI supports out-of-box monitoring of Oracle ADF applications. It automatically discovers Oracle ADF applications, and translates network objects to business functions. Using this support, individual user actions are automatically matched to the correct web application, task flow, and view.

For ADF and Fusion applications, you can take advantage of the ADF Monitoring Service, which enhances data received from network collection with additional data received from the ADF Monitoring Service (e.g. user names). This requires deploying and configuring the ADF Monitoring Service which is described in the Oracle Real User Experience Insight Installation Guide.

The monitoring support described in the rest of this appendix has been verified against applications based Oracle ADF version 11g.

I.2 Creating Oracle ADF Suite Definitions

You can create suite definitions for Oracle ADF-based applications in the same way as for any other supported Oracle Enterprise architectures. The procedure to create suites is fully described in Section 10.1.1, "Creating Suite Definitions".

Many ADF components use 'hover' images which could cause RUEI to report incorrect page loading times. To improve the accuracy of page loading times, configure hover images as framework exceptions as described in Section 10.2, "Refining Application Definitions Through Framework Exceptions."

I.3 Enabling Monitoring of ADF Applications

The adf-faces-databinding-rt.jar file provides a DMS-based implementation for the ExecutionContextProvider(oracle.adfinternal.view.faces. context.AdfExecutionContextProvider) class. The implementation class has been pre-registered in the .jar file, but the feature itself can only be enabled by specifying the following application context parameter in the web.xml file:

<context-param>
  <description>This parameter notifies ADF Faces that the ExecutionContextProvider
               service provider is enabled. When enabled, this will start
               monitoring and aggregating user activity information for the client
               initiated requests. By default, this param is not set or is false.
  </description>  <param-name>oracle.adf.view.faces.context.ENABLE_ADF_EXECUTION_CONTEXT_PROVIDER</param-name>
  <param-value>true</param-value>
</context-param>

I.4 Specifying the Cookie Technology

Because Oracle ADF is based on the Java technology, it is most likely that your Oracle ADF applications will use the JSESSIONID state cookie. To enable RUEI to monitor and track users over the complete session, you should ensure the cookie path is set to "/". If your Oracle ADF application uses another cookie name for state tracking, you need to update the application definition to reflect this. In addition, be aware that user name recognition is based on the j_username construction. See Section 12.2, "Specifying the Session Tracking Mechanism" for more information on cookie configuration.

I.5 ADF Reporting

In terms of ADF reporting, RUEI depends heavily on the Adf-View-ID, which is provided as a header. For this reason, it is important that ADF developers set the view ID to some sensible value. By default, the view ID is filled based on the name of the jspx that generates the content.

For dynmic regions, the UIShell.jspx will be shown continuously without specific coding. Oracle recommends that you implement code similar to the following:

In a jsf phase listener:

FacesContext context = FacesContext.getCurrentInstance(); 
   Object response = context.getExternalContext().getResponse(); 
     if (response instanceof HttpServletResponse) { 
          HttpServletResponse httpResponse = (HttpServletResponse) 
     response; 
       httpResponse.setHeader("Adf-View-Id", viewID); 
   } 
 

where viewID is the relevant viewID.

The view ID should be a rough indication of the java code block that was used to produce the content that the client saw. In fusion it makes sense inside the context of a product, and is wider than the individual regions.

This code should be executed after "BeforePhase", that is, before the beginning of the RenderResponse phase which sets the response headers for user activity monitoring tools. Otherwise the headers will be overwritten in the phaselistener code that injects the default headers.

I.6 ADF Pages and Session Diagnostics

ADF pages may not be available via the Replay Viewer using the Session Diagnostics feature, or may appear garbled, if they are based on Rich Internet Applications (RIAs). Examples of RIA frameworks include Ajax, Curl, GWT, Adobe Flash/Adobe Flex/AIR, Java/JavaFX, Mozilla's XUL, OpenLaszlo, and Microsoft Silverlight.

If replayed pages appear blank, you should consider removing the use of the oracle.adf.view.rich.security.FRAME_BUSTING context parameter within the required pages. This security parameter is used to prevent clickjacking, which occurs when a malicious web site pulls a page originating from another domain into a frame and overlays it with a counterfeit page.

I.7 Data Items

The ADF-specific data items shown in Table I-1 are reported by RUEI.

Table I-1 ADF-Specific Data Items

Item Description

ADF suite/Code

The code of an ADF framework suite, as defined in its configuration definition. This data makes it possible to distinguish between different monitored ADF framework suites.

ADF suite/Name

The name of an ADF framework suite, as defined in its configuration definition. This data makes it possible to distinguish between different monitored ADF framework suites.

ADF action/Name

The action that was triggered by this hit (such as view, action, dialog, focus, disclosure, launch, query, sort, valueChange, and so on).

ADF application/Name

The name of the application module within the ADF framework.

ADF component client ID/Name

An unique identifier of the element clicked by the end-user on the (previous) page.

ADF component display name/Name

The display name of the component that was activated by the (previous) end-user action.

ADF component type/Name

The type of the component that was activated by the (previous) end-user action.

ADF Region/Name

The name of the last active region within which the (previous) end-user action took place.

ADF view ID/Name

The identifier of a (part of) the screen where the (previous) end-user action took place.


Further Information

Detailed information about the architecture and functionality of Oracle ADF can be obtained from the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework. This is available at the following location:

http://download.oracle.com/docs/cd/E12839_01/web.1111/b31974/title.htm