Accessing Fusion Data from BI Reports using Java

Introduction In a recent article by Richard Williams on A-Team Chronicles, Richard explained how you can execute a BI publisher report from a SOAP Service and retrieve the report, as XML, as part of the response of the SOAP call.  This blog article serves as a follow on blog article providing a tutorial style walk […]

Oracle Mobile Cloud Service by Example Part 2: Create a Hello World Mobile API in 4 mins

Get started with Mobile Cloud Service (we call it MCS) in 4 mins!!! I published this short video back in June on the A-Team youtube channel. This is the first thing anyone should do when they work with MCS to establish connectivity Its already had lots of viewings so I thought I would show it here […]

Displaying Oracle Documents Cloud Services File Picker and Link Picker from other Domains

Introduction The Oracle Documents File Picker and Link Picker allow web applications to select files and folders that reside in the Oracle Documents Cloud Service. These Pickers can start from a specific folder and can further be restricted to a folder structure for a specific user and role when combined with the Oracle Documents App Link. Some of […]

Oracle BPM 12c just got Groovy – A Webcenter Content Transformation Example

Introduction On the 27th June 2014 we released Oracle BPM 12c which included some exciting new features. One of the less talked about of new features is the support of BPM Scripting which incorporates the Groovy 2.1 compiler and runtime. So what is Groovy anyway? Wikipedia describes Groovy as an object-oriented programming language for the […]

Reverse Engineer DB objects from ADF-BC

Say you are developing an application using ADF Fusion stack. If you are like me you have backed up your ADF application. However Database objects are not backed up so frequently. One day disaster strikes and you loose the schema.  Here’s how yo…

How to Setup JDeveloper workspace for ADF Fusion Applications to run Business Component Tester?


When creating ADF applications using JDeveloper with Fusion Applications Extension, the Application Module Tester (Business Component Browser) will fail the following exception:
“(oracle.jbo.JboException) JBO-29000: Unexpected exception caught: java.lang.NoClassDefFoundError, msg=Could not initialize class oracle.apps.fnd.applcore.oaext.model.OAApplicationModuleImpl”


The following picture shows the default libraries added to your Model project when creating an ADF Business Component from Tables:

After reviewing the Fusion Applications Developer Guide (here), you must add Applications Coreand Applications Core (Attachments Model) libraries to the data model project (default is Model). However, when adding the above libraries into your project, it throws warnings for unable to resolve dependent libraries (secondary imports) such as Topology Manager, Functional Setup Model. Please see the following screens:


You must select “Topology Manager” and “Functional Setup Module” along with Application Core and Application Core (Attachments Model) libraries. You must also add “Java EE 1.5” and “Java EE 1.5 API” libraries.
You will still get the following warning:
Business Components: Unable to load Business Components Project.  File not found.
    Owner:  oracle.apps.model.Model 
You can ignore it for now to run ADF Business Component Browser to test your ADF Model.
Note: This is a bug as I do not see this class in <Jdev location>/jdeveloper/atgpf/lib/oracle.apps.fnd.applxdf.jar file.
The following screen shows the libraries in your Model Project:
Note: Some of the libraries such as “Commons *” are automatically added with Application Core as secondary imports.

Speeding up integrated WebLogic Server Startup – avoiding multiple network bindings

If you see the following messages on the console window when start JDeveloper’s integrated WLS:

<Feb 2, 2012 1:07:41 PM PST> <Notice> <Server> <BEA-002613> <Channel “Default[5]” is now listening on 0:0:0:0:0:0:0:1:7101 for protocols iiop, t3, ldap, snmp, http.> 

<Feb 2, 2012 1:07:41 PM PST> <Warning> <Server> <BEA-002611> <Hostname “”, maps to multiple IP addresses:,,,, 0:0:0:0:0:0:0:1> 

<Feb 2, 2012 1:07:41 PM PST> <Notice> <Server> <BEA-002613> <Channel “Default[4]” is now listening on for protocols iiop, t3, ldap, snmp, http.> 

<Feb 2, 2012 1:07:41 PM PST> <Notice> <Server> <BEA-002613> <Channel “Default[1]” is now listening on for protocols iiop, t3, ldap, snmp, http.> 

<Feb 2, 2012 1:07:41 PM PST> <Notice> <Server> <BEA-002613> <Channel “Default” is now listening on for protocols iiop, t3, ldap, snmp, http.> 

<Feb 2, 2012 1:07:41 PM PST> <Notice> <Server> <BEA-002613> <Channel “Default[3]” is now listening on for protocols iiop, t3, ldap, snmp, http.> 

<Feb 2, 2012 1:07:41 PM PST> <Notice> <Server> <BEA-002613> <Channel “Default[2]” is now listening on for protocols iiop, t3, ldap, snmp, http.> 


These messages indicate that WLS is binding itself to all network adapters configured on your machine running Windows – yes, this is an OS issue; it doesn’t happen on Linux.

All these bindings end up eating a couple of seconds of WLS startup time. To minimize it:


  1. Start WLS – On JDeveloper, go to Run > Start Server Instance
  2. Go to the admin console at http://localhost:7101/console and login as weblogic/weblogic1
  3.  On the left side navigation bar, select Environment > Servers
  4. Select Default Server from the table
  5. On the Listen Address field, enter:
  6. Restart WLS.



Here’s some before/after numbers:


IntegratedWebLogicServer startup time: 69557 ms.



IntegratedWebLogicServer startup time: 44589 ms.


That’s a 25s difference. Not bad. =-)


New version of JDeveloper released with Maven support and better performance

Oracle has released a new version of JDeveloper,, with a whole bunch of new features, including Maven support, and a lot of performance enhancements.  You can check out details of the new features here. Please note that this version … Continue reading

ADF Layouts Revisted

Designing UI pages in ADF can be somewhat cumbersome if you don’t understand what really goes on behind the scenes when using the layout specific tags such as panelGroupLayout. OOTB JDeveloper comes with many different types of layout based tags. If you have read my previous post on layout management, you will notice that some of these tags are meant for specific layout design type patterns: Stretch (application LaF i.e. JDeveloper UI), or Flow (generic web site LaF). Moreover, using the layout tags in an “illegal” combination usually creates a design that renders the UI in a undesirable behavior. For example, stretchable items (i.e. tables) not stretching, or scrollable (flow) content not scrolling. To better understand how to create better layouts we must first understand what the layout components will actually turn into HTML wise on the browsers end. This knowledge will help not only in choosing the correct combination of layout tags, but will also enable you to use the power of CSS styles to “control” how the elements look and behave. The first layout tag that I am going to discuss is one of the most used tag, the panelGroupLayout.

Tag name: af:panelGroupLayout
Component type: oracle.adf.RichPanelGroupLayout

The panelGroupLayout control is a layout element that arranges its children in one of a few simple patterns. Each pair of adjacent children will be separated by an optional separator child. It can lay out children consecutively (wrapping as needed), or in a single horizontal line, or vertically.  Rules of thumb on usage:

  • Never place a scrolling panelGroupLayout inside of another scrolling panelGroupLayout since users do not like nested scroll bars
  • Never specify percentage heights in any component’s inlineStyle attribute
  • Never use the “position” style in any component’s inlineStyle attribute. Unless you are using fixed pixel heights on them, you would never place a panelSplitter or panelStretchLayout inside of any panelGroupLayout regardless of what you have set its layout attribute to

If you believe that you need to break one of these rules, this is an indication that your page structure is not following the page structure guidelines and you will likely have troubles getting your application to render consistently across various web browsers and computing platforms. You may also alternatively place a facetRef, iterator, or switcher inside of the panelGroupLayout and their resolved children will be treated as if they were direct children of the panelGroupLayout. If you don’t want this behavior, you may wrap the children you want to be grouped in a group component.

Geometry Management:

  • This component CAN be stretched by a parent layout component that stretches its children, e.g., panelStretchLayout if: layout=”scroll” or layout=”vertical”
  • This component CANNOT be stretched by a parent layout component that stretches its children if: layout=”default” or layout=”horizontal”

Ok, now that we understand what the adf side of things are. When you use the panelGroupLayout what happens on the browser side? Based on the layout “type” selected, this will mean different things. In general, here are the browser HTML equivalents to the different layout styles:

  • layout= “default” will turn into a HTML “SPAN”
  • layout = “vertical” will turn into a HTML “DIV”
  • layout= “scroll” will also turn into a HTML “DIV” – with an added “style” setting to induce the vertical scrollbar to appear – overflow: auto; width: 100%; height: 100%;
  • layout=”horizontal” will turn into a HTML “table”- with 1 HTML row “TD” defined. Each element added will become a HTML cell “TD”

To give an example of using the panelGroupLayout in combinations of other panelGroupLayouts that uses different layout settings, here is an image that shows a simple use case. Note: the colored borders are there to show each of the component elements.


The ADF components that were used are as follows:

This, in turn produces these HTML tags:

In this example, the top panelGroupLayout (bordered in green) has been set to layout=horizontal, which sets the tag in the browser to be an HTML “TABLE”. In this table body, you see 1 table row (TR) defined. Each subsequent item added to the row, becomes a table cell (TD). The 2 items that have been added are panelGroupLayout’s that have the layout set to “vertical”, which in turn creates a HTML “DIV”. Knowing this you can add standard CSS style elements to these ADF layout tags to create visual behavior such as padding and margin. This is just a example on how to use the appropriate ADF layout tags to create conventional visual designs. In addition, once you have mastered what the ADF to HTML tag equivalents are, you will be able to convert your HTML mockups into the ADF world. In my next post I will cover more of the layout tags.

Changing the default editor/view in JDeveloper

If you work a lot with complex ADF pages in JDeveloper, you may get tired of waiting for it to open your pages in the Design view, I know I do!  Fortunately, there is a simple solution.  You can change … Continue reading

What you need to use ADF

This blog contains many articles about Oracle Application Development Framework (ADF).  In order to develop and run applications using ADF, you will need to install Oracle JDeveloper, which you can download from the Oracle Technology Network (here). Each post will … Continue reading

JDeveloper Integrated Server will not start

A quick post as I find that the JDeveloper integrated server will not start with JDeveloper in some cases, looks like when the user’s home directory has a space in the path. You can work around this issue by … Continue reading

Running JDeveloper 11g and Oracle database on Mac OS X

A quick note to my fellow Mac OS X users who want to use JDeveloper 11g to do development and testing on Mac OS X. I found the newly released JDeveloper 11g (the one that came with the Fusion Middleware … Continue reading