Create a Custom ADF Component

During UKOUG Tech14 in Liverpool, Wilfred and I had a presentation about how to create your own Custom ADF Component. Since we were busy on preparing the presentation there were no blogs about these beforehand.
I thought it would be nice to give a small recap, for anyone interested in going into creating Custom ADF Components.

In our sample application we created an ADF Component called ‘multi select’ which offers the user the ability to show a list of items and the ability to add items, delete items and select an item. The result is the component within the red line:

During our presentation, we had an overview of the components involved in creating a custom ADF component. The overview looked as followed:

The slide deck on slideshare will take you through these components, the responsibilities and the code involved in creating this component. We have added comments to the code in the slides, so you are able to follow this without our voice over. The server side classes are all Java classes as where the client side is all JavaScript. The Skin is created in a css file using the ADF skin style.

At the end of the slide deck there is a slide with links to several documentation, we advise you to keep links to these documents close by you while starting to code your component. As you will see, we link to documentation from the ADF release while we have build our component in ADF 12.1.3. This is because Chapter 31 ‘Creating Custom ADF Faces Components’ is not available in the 12c Documentation.
Last but not least, all our effort is available on a github repository, both the Custom ADF Component we have created as well as an example of a consuming ViewController project using this multiSelect component.

- Presentation:
- GitHub Repository:

JDeveloper Debugging Tips (Watchpoints & Beep)

In a previous blog post I talked about scoping breakpoints for debugging purposes, next to scoping breakpoints JDeveloper has more interesting debugging features to offer.

I created a simple example to show both the watchpoint as well as the beep functionality. To illustrate this, I created a page with an inputText and a button, both bound to a backingBean. 

This  is the jsf code:
The code from the bean is also pretty straight forward:
   private String value = "value";

    public void setValue(String value) {
        this.value = value;

    public String getValue() {
        return value;

    public void changeValue(ActionEvent actionEvent) {
        value += "!";

Now imagine that I want to halt execution everytime the bean field value changes. I can simply right-click the field and choose ‘Toggle Watchpoint’:

This will show a nice sunglass instead of a breakpoint in the line gutter:

I also want to be informed when the getter of the value is called, however, I do not have the need to be redirected to JDeveloper and press F9 again to continue. I just want a signal that we have been inside the getValue() method, in this case a beeping sound.
To do this, you place a breakpoint in the getter, right-click on it and go to ‘Edit Breakpoint’.

Go to the Actions tab, in here unselect the ‘Halt Execution’ option and select the ‘Beep’ option. You will hear a beep when the breakpoint is reached, but it will not force you into JDeveloper.

If you run the page, you will hear a Beep whenever the getter is called, so you recieve a signal of this action. Whenever the field value is changed, it will take me into JDeveloper and halt the execution, this means it will halt execution in the method when I press the button on the screen, while there is no explicit breakpoint at this point in the code:

You can also see the old and new value in the log window:

OOW14 summary: Oracle ADF

Being an ADF developer, off course a lot of my focus and attention went to the ADF related sessions. I left OOW with a mixed feeling about the ADF sessions. On the downside I felt there was not a lot of attention for ADF during the OOW conference. You see ADF or ADF related features during almost all the presentations, whether it is the Cloud, SOA Suite and Service Bus or MAF, but not a lot on ADF itself. Then again this might be a good thing, meaning the framework being more stable and reliable.
However, the upside of the conference for me personally still is the User Group session on the Sunday, thanks to the ODTUG user group and the ADF EMG community there was a whole Sunday full of nice ADF presentation, I enjoyed all of them, a great day!

One of the key ADF features at Open World was the release of the new ALTA UI, which can be viewed upon as a Simplified UI 2.0, if you want (also see my blog about the UX event). It is not just a skin, but a way of creating ADF applications. Follow the patterns, use the building blocks and create not only a functional, but also a good looking application with a good user experience.

Diagrams for ADF
A presentation done by Duncan Mill and Jairam Ramanathan about the new DVT component to create diagrams in ADF. This is not just a ready to use DVT, that can work for you in some situations. This is actually a framework you can use to create the exact diagram you need for your use case at that time. This will result in a SVG in the HTML output, which means there is native browser support and the user can actually use default functionality like zooming & panning.
Duncan wrote a series containing over 10 articles, which included the necessary steps on how to get yourself familiar with the diagrams and how to use this. A leap forward in the visualization tools within ADF, maybe we will get to see more of this in the framework?
High Availability and ADF
Jobinesh had a great session on High Availability (HA) support within ADF. If you want to run ADF on HA, the framework does not do all the work for you, you have to help it a little bit.
Look up his presentation to read up on how to ensure the correct working of failover and data replication, but also for some great code guidelines on how to program MBeans, TaskFlows and more within a HA environment. There is no need for me to repeat all these steps he worked out for you so well.

DVT within ADF
In this session the Data Visualization Tools (DVT) team showed some cool new features from the current (12.1.3) as well as the upcoming release. They are not ADF only, because almost all of them are also available within the MAF framework. The layout and animation of all the DVTs are now responsive and there has been a great performance improvement in all of them. Within the thematic map it is now possible to provide your custom map.
In the upcoming release the there will be a nice cool feature to mashup DVTs. Meaning you can switch between different DVTs without losing the state/context of the data.

Maven support
Since the release of ADF 12c, there is now support in JDeveloper for Maven. Which can be of great use in your Continuous Integration and/or Continuous Deployment process. JDeveloper understands how to work with the pom file and everything you need to do to get started with maven and your project you can do from within JDeveloper.

ADF EMG XML Data Control
Last but not least some shameless self plug. If you do anything with XML within ADF, whether it is just to show data on an UI or to manipulate it. Make sure you have a look at the XML Data Control. The 1.0 version is out and it can saves you lots of time , headaches and lines of code in Java.

Available online resources

OOW14 summary: Oracle Service Bus

Since I am fairly new to the Oracle Service Bus I gathered a lot of information about this product. Most of it is not shocking and has been mentioned already, but this gave me a nice summarized overview of what 12c has to offer in comparing to 11g.

Since the 12.1.3 release, you don’t need eclipse anymore to create your service bus projects. Just as for the SOA Suite you can do everything from JDeveloper. When creating a service bus project, you will get an sboverview file in your project. This file describes the entire application assembly of proxy services, business services, pipelines, and split-joins. There is one overview file for each Service Bus project.

Not only are the Service Bus projects within JDeveloper, they also run on the Integrated WebLogic server. This way it becomes easier to debug the service bus. You can just place breakpoints in your source files and choose the debug command. A breakpoint marks a point in a pipeline or split-join where message processing pauses. This lets you examine the values of some or all of the message variables.

EM FMW Control Console
With the move of the service bus towards JDeveloper, it is now also integrated into the Enterprise Manager Fusion Middleware Control Console as we know it from the SOA Suite. However, there still is the sbconsole as we know it. The layout of the sbconsole has been moved towards the Oracle standard, with that the functionality as you know it from 11g might be displayed a bit different but it is all still there.

Rest/json support
The Service Bus now supports the use of REST service. Meaning you can create rest enabled endpoint with the service bus. However, the Service Bus only provides a virtualization layer to support REST, which means that only proxy and business services are REST-based. These REST services invoke, or are invoked by, a WSDL-based pipeline or split-join. REST proxy services convert the REST native payload to SOAP before invoking a pipeline or split-join, while REST business services invoked by a pipeline or split-join convert the payload from SOAP to REST. The internal interface is WSDL-based, while the external business and proxy services expose REST endpoints.
Read more in the Service Bus documentation.

Pipeline templates
You can create pipeline templates. These templates  are living entities, when creating a new pipeline you can base these on the template. When creating these new pipeline you can decide whether you want it to be linked or unlinked.
If you decide to link the template to your pipeline this means that when the template changes, these changes will be rolled out to the linked pipelines and these will be updated. If you decide to unlink a template, the template will be used as a starting point to create the pipeline, but it will not be updated anymore if the template changes.

Xpath/xquery support
Where you might be used to xpath in the SOA Suite and xquery in the Service bus. With the release of 12.1.3 you can now use both xpath and xquery in the Service Bus as well as the SOA Suite.

You can now trace an instance going through both the service bus and the soa suite back and forth. The first service that your instance hits will generate an ecid, this ecid will be used throughout the whole instance. This also works if your SOA Suite and Service bus run on a different domain.

Splitted Pipeline & Proxy Service
You can have a generic pipeline to multiple proxies, this way you can have multiple interfaces, for example to support both an xml and a json interface, but use the same generic pipeline.

Upcoming New Feature
There were a few demos of new features coming in the next release (12.2).
From 12.2 there will be a native end to end support for json, meaning the service bus will no longer translate the json to xml internally. Next to that, there will be a JavaScript action available which you can use in the pipeline to manipulate data. With the help of EX4 this JavaScript expression builder will also be available to manipulate xml, meaning that JavaScript will be a powerful tool within the Service Bus.

Available online resources

What I learned at Oracle Open World 2014

Oracle Open World was once again very inspiring, last week I’ve been summarizing my own notes. I decided to share them with the world, if not only for me to find them back in my own blog archive in the (near) future.

As you might have guessed, there was a lot going on about the cloud. So much, it was almost confusing. The most interesting clouds that stayed with me after OOW14 where:
  • The Integration Cloud Service (ICS).
  • The Java Cloud Services (JCS) in combination with the Developer Cloud Service (DCS).
  • Mobile Cloud Service (MAX).

However, since I am not really working with any cloud related product, my main focus was on the on-premise Oracle FMW stack. So if you want to know more about the cloud, there are plenty of other, better blogs to tell you more about these details.

SOA Suite Upgrade to 12c
First of all, very impressive, you can smoothly upgrade from 11g to 12c. There is an extensive upgrade manual that you can follow, to upgrade from your 11g to the new 12.1.3. release. If you follow the step by step guide, the upgrade will even work if you have running instances on your production environment.
This upgrade has been proven to work on multiple customer cases.

API Management
Oracle will be announcing two new product which will help you with your API management, this features will be on top of the Oracle Service Bus. There are two sides of this product, which are actually separated products. One is to help out with your catalog of services, which are you running on the service bus. This information can be harvested from the bus and will be available in a catalog.
The second product is to help you with managing the consumers of your services. Your consumers must explicitly subscribe to your service in order to get an API key. They must use this API key in the http header when they call the service in order to get a result. Using this feature you get a complete overview of the consumers calling your service.

Oracle Stream Explorer
Oracle Stream Explorer (OSX) is a tool that can help you with getting information out of Oracle Event Processing (OEP). OSX can help you transforming lots of data into information. Stream Explorer can not only listen to edn, but also get input from csv files, database tables and other sources. It is a standalone product that helps you manipulate streams of data (events). Once the data is transformed into information, Stream Explorer can publish this again, for example to a JMS queue.
You can build a custom ADF UI to present this information or you can use Oracle Business Activity Monitoring (BAM).

Mobile Application Framework
The Oracle Mobile Application Framework (MAF) 2.0 is out and it starts to become a really mature product, one of the key things is the new release cycle for MAF. They intend to release every 2 months from now on.
One of the most named down sides of MAF is that it still runs on Java 4. However, not in the upcoming, but the release after that (meaning early next year), MAF will be upgraded to use Java 8. If you ever doubted on starting to investigate on MAF, now might be a good time.
The skills for a ADF developer are pretty transferable, MAF does not use JSF and does not have the ADF lifecycle as we know it from his big brother, but we do have java, taskflows, data controls and the binding layer.

Mobile Cloud Service 
In the session ‘Next-Generation Application Development’, Chris Tonas said “The cloud is not just a deployment platform anymore”. Chris announced the coming of the Mobile Cloud Service (MCS), which is coming soon.
In a fifteen minute demonstration Chris showed how you can create an online mobile application, using the  Mobile Application Accelerator (MAX) for Mobile Cloud Service. An application based on reusable MAF components you can deploy to either Android or iOS devices.

Service Bus & ADF
For both Service Bus & ADF I gathered so much info that I decided to create two separated blogs for these subject.

Online available resources

ADF EMG XML Data Control version 1.0.0

Today at Oracle Open World, we (Wilfred and myself) officially announced the 1.0.0 version of the ADF EMG XML Data Control. Check out the presentation on slideshare if you missed it.

You can get this extension through the JDeveloper Help -> Check for Updates menu. Make sure you select the 'Open Source and Partner Extensions' checkbox:

There you should see the 'ADF EMG Data Control' extension:

A brief description for those who were not at our OOW Sunday Session:
The XML Data Control is an ADF Data Control that is used by developers to create data bindings in ADF Faces pages, just like the ADF BC Data Control and the POJO Data Control. The data exposed through this data control can be any XML source – from a BPM Human Task, from a SOAP or REST WebService, from a static XML document or a custom Java Class that produces an XML document from anywhere.

Read more on this project on our public wiki.

If you’re interested in following or contributing to this open source project, make sure you bookmark the following links:

The ADF EMG XML Data Control Extension is available for both JDeveloper 11gR1 and JDeverloper 12c.

ADF EMG Audit Rules moved to Atlassian

For those contributing and using the ADF EMG Audit Rules extension, this is now moved to the Atlassian Suite. Here we have better integration and more modern tools than on
Big thanks to Wilfred for helping me out with the conversion.

Make sure to save/bookmark the following links:
- Bitbucket
- Confluence / wiki
- Jira
- Bamboo

The old svn repository on is deleted and you can now use git to connect to the repository on bitbucket. If you’re new to git I advise SourceTree from Atlassian as tool.

ADF EMG Audit Rules available on JDeveloper 12.1.3

I got a few questions from people why the ADF EMG Audit Rules are not available in JDeveloper 12.1.3. So there has been a new release of the ADF EMG Audit Rules. No new functionality is implemented this time, but the extension is now available for JDeveloper 12.1.3.

If you go to Help -> Check for Updates, tick the Open source and Partner Extensions checkbox and press Next: 

Select the ADF EMG Audit Rules and click Next:

The extension ADF EMG Audit Rules should be installed correctly, click finish and restart JDeveloper 12.1.3:

Now if you go to your Tools -> Preferences, there is a button ‘Manage Profles’ on top of the Audit tab, you will find your profiles under that submenu. Press the button to open the Profiles menu:

Within the Audit Profile, you should see the ADF EMG Audit Rules appear:

Presentations at Oracle Open World 2014

I am proud to announce that I will be giving two presentation at Oracle Open World this year in San Francisco. So some shameless self-plug on my blog to put them both under a little extra attention.

The first one will be on the ODTUG's and ADF EMG ADF Sunday, together with Wilfred. We will explain and demonstrate our new open source project/product the ADF EMG XML DataControl.
If you’re working with Oracle ADF and WebServices, this one should be very interesting for you.

The second one is on Tuesday, together with Frank Houweling from AMIS and Frédéric Desbiens from Oracle. We will be talking about build environments, performance within ADF and quality assurance. I am confident I will be able to mention my other open source initiative the ADF EMG Audit Rules.

Hope to see you there!

Use tree binding accessors to show detail rows

Tree bindings can be very handy, for example to combine details in the same row as the master. Let’s assume we have the following starting point based on the HR schema:

We see the department in a form layout with navigation buttons, with a table under the form showing information about the employees. As you can see in the screenshot below in the ApplicationModule, there is also a Jobs detail under the EmployeeView.

If you go to the bindings on the page, you see the Tree Binding ‘EmployeesView’. You can edit the Tree binding very easily through the overview of the binding page. If we add the JobsView as detail this will be available in the page as well.

Don’t forget to shuffle the attributes that you need to the right:

After pressing ok, the source of the PageDef should now look something like this:

You see that the first nodeDefinition in the tree has gained an Accessors element, in this Accessors element there is an item with the name JobsView. We can now use this accessor in our table in the page as well. To illustrate I add two new columns to the table.

The editor does not really understand this, so you do not get any help from the IDE. You can see that the EL expression to the hints of the EmployeeView is the same, but after that we use the accessor value to navigate to that nodeDefinition in the Tree, after which we enter the value from the AttrName inside this nodeDefinition.
The value itself however, we need to access through the row. You can see the EL expression in the value of the outputText. After the row we again first use the accessor value but then go to the bindings, after the bindings we enter the AttrName value and we end the EL expression with the inputValue.

On run time this results in the two extra added columns:

Access your MDS-SOA repository from your ADF application

In our Enterprise Landscape the SOA Services and our Canonical Data Model (CDM) live on a different WebLogic Server than our ADF application. But often we want to use these services and CDM in our ADF application. 
Calling WebServices from an ADF application is not that difficult, however, we often want to manipulate the result that comes from this WebService. In 90 percent of the time, this are little adjustments to the existing CDM that are UI specific. This knowledge is not something we want to put in our CDM or in our WebService, but in the ADF application. We decided to create an UI specific XSD and map the result from the WebService in CDM to this UI specific XSD. 
To accomplish this, we created an XSD that extends the existing XSD from the CDM. The problem with this approach was to reach the XSD from the CDM that lives on the SOA Server from our ADF Application that lives on our ADF Server. 

It turns out, you can configure the MetaData Repositories on your WebLogic Server to look at different servers. When logged in to the Enterprise Manager, you can go to the MetaData Repositories, now if you click on an existing MDS, you can go through to menu to Administration -> Register/Deregister:

In here you see an overview of both the database and the file based repositories.
Now you can click the Register button to register a new database MDS repository.

This will bring up the screen to register a database based metadata repository in which you need to provide the information of your SOA MDS where the CDM is found.

After filling in the information, press query and enter the repository name ‘mds-soa’ and fill in the correct password. Pressing the OK button will register this mds-soa metadata repository and will bring up the next screen:

In here it is very important not to forget to target the correct server on which you ADF application is running.
Once this has been set up, your ADF application will be able to connect on run time to your CDM that lives inside the soa-mds repository under the /soa-infra partition. Next you need to configure your ADF application to actually look for this repository. You do this in the adf-config.xml:

In the adf-config file you see the mds-config, here you tell the application to look for any mds repository starting with /apps to look in the ‘mstore-usage_2’ this mstore is defined below in the metadata-store-usage section.
You need to enter the partition-name, which is ‘soa-infra’, the metadata-path is used locally and points to an environment variable. When deploying this application from JDeveloper, the deployment wizard understand that the MDS needs to be configured and it brings up the Deployment Configuration wizard:

In this wizard we select the mds-soa repository and select the correct repository and the correct partition. After this your ADF application will be able to resolve oramds urls and you can import XSDs from the CDM. As a result your ADF application specific XSD will be able to understand an import like this:

Meaning you can extend any XSD type defined in the CDM and make it UI specific for your needs.

Disabling and Enabling the Auto Map for XSL

When working with more complex XSL files, it can sometimes be useful to disable the Auto Map option. This can easily be achieved in the Auto Map Preferences popup you get when drawing lines in the design view of an XSL Map.

However, once disabled, you will not get this popup anymore to re-enable the Auto Map option. You need to do this through the Tools -> Preferences menu in JDeveloper. On the bottom of the list you see the XSL Maps menu with a submenu for Auto Map properties.

Here you can re-enable the Auto Map option for you XSL maps.

Announcement: ADF EMG XML DataControl

During the ADF community event at AMIS Services last Thursday (22 may 2014), Wilfred and myself announced a new upcoming open source project, named XML DataControl.

On the AMIS Live blog there was a good summary about the functionality of the XML DataControl:
The XML Data Control is an ADF Data Control that is used by developers to create data bindings in ADF Faces pages, just like the ADF BC Data Control and the POJO Data Control. The data exposed through this data control can be any XML source – from a SOAP or REST WebService, from a static XML document or a custom Java Class that produces an XML document from anywhere. It offers much more control and flexibility than the Web Service Data Control does (that is very limited in scope and usability).

You can check out the slides of this very short presentation if you like, but there is more news, in the very near future, an official launch event for this component will be held on the premises of MN in The Hague. To attend this event or to be informed about the next steps with the XML Data Control, you can register through this signup form.

Last, but not least, I would like to leave with a quote from Wilfred about the XML Datacontrol:
"This is a real time saver for ADF/SOA projects. We now have junior ADF developers finishing their Model project in half an hour and fully focusing on the View side of things. I really think something like the XML DataControl can turn around the perception of ADF as an overly complex framework. It makes things so much simpler."

We expect and hope to have an official and stable release coming out this summer!

Share your source between projects

Normally we pack functionality into libraries and use this library to share the functionality. However, during development of several JDeveloper Extensions our goal was to have one shared java source between our JDeveloper 11g and JDeveloper 12c extension.
Off course we wanted the ability to easily develop, test, debug and run the extension, but we also want to share the java code to introduce reusability.

We accomplished this, by creating a separated ‘coresrc’ folder and add this folder as a Java source path both in JDeveloper 11g and JDeveloper 12c. To illustrate two screenshots of the open source project ADF EMG Audit Rules.

JDeveloper 11g:

JDeveloper 12c:

A great trick to share your Java source between several projects, where you can still keep project specific source in the regular project src directory.

New release of the ADF EMG Audit Rules

There is a new release of the ADF EMG Audit Rules extension. With this release there is now support for both JDeveloper11R1 and JDeveloper12c. However, remember that JDeverlop11g does not support the suppression of violations, so this may lead to a lot of violation on existing projects.
Remember that you can define a custom profile in the Audit tab under preferences to unselect certain rules, but off course it is better to look at the warnings and see if you can fix them.

In this new release we also improved the stability of the extension, but if you see unexpected behavior in JDeveloper and you suspect it comes from the ADF EMG Audit Rules extension, you can file an issue in Jira. The amount of rules went up from 18 in version 1.0 to 35 audit rules in version 2.0.

Next to Wilfred I would also like to thanks Rohan Walia for his time and commitment to this project!

If you would like to help out and get involved in this project, check out the Index page with various links to documentation, blogs and the open source project on 

What I learned from the UX Event

Last Tuesday, March 18, there was an UX Event organized by AMIS Services together with the Oracle Applications User Experience Team. Between noon and 8 p.m. I visited a total of 13 sessions, 3 demonstrations and had a lot of great discussions, overall a great day and amazing event.

I picked up various things, from small tips and tricks to big lessons. Instead of keeping my notes to myself, I will try to give a brief overview of what I learned and what will stay with me.

Oracle Slogan
First off, the Oracle slogan, consisting of three key words: Simplicity, Mobility, Extensibility.

In short:
Simplicity: In your design, only present the user what he needs. Give the user less to learn (about the application) and more focus on their actual work.
Mobility: Not mobile, but mobility. The user should be able to access his or her information anywhere. Whether it is a laptop, smart phone or tablet.
Extensibility: Use tailoring for successful implementation for customers. The UX team provides both the Simplified UI (more later) and Best practices & Guidelines for the best UX.

The road to success
Remember that user experience is an umbrella for multiple disciplines. The usability is not just the look and feel of an application. 
  • Business value is key. 
  • It is not free, creating a better usability cost time, effort and knowledge. 
  • Quickly visualize and validate, know where you are heading and organize UI Workshops. 
  • Use an agile methodology.
  • Use wireframes or screen sketching tools to envision your product.

How do we present information?
Traditionally we present data on screens, however, data does not equal information. How to present your data as information? Use techniques to transform data into information that the matches the user his or her needs: 
  • Filter
  • Sort
  • Abstract
  • Aggregate
  • Associate/Interpret
  • Predict

Tips & Tricks
Tablet-First Design, the world is moving away from desktops and monitors, use a tabled design to think about how your application runs on a mobile device.  
Use a multi channel approach, it shouldn’t matter through which channel the users provides his or her input. 
Building blocks, keep in mind: Just because you use the correct building block does not guarantee you end up with a useable interface. 
Usability test, organize usability tests with actual users of your product, not just their managers. 

Simplified UI
By far the most sessions I visited and talks I had were about the new Simplified UI and the Design Patterns concerning this UI. 

The Simplified UI, is a 100% ADF design, there were a few slides that give detailed information about which ADF Components are used to create this UI:

However, the most exciting news might be the fact that there is an starters kit in the making. This starters kit will help you create a custom ADF application with default functionalities of this simplified UI. Not limited to, but including functionality as:
  • The layout, look & feel and skinning of the Simplified UI.
  • Starting an isolated sandbox session to record changes to the application.
  • Using (page)composers to edit the application.
  • Writing this changes to the MDS to support tailoring. 

Last, but not least, patterns, or in more detail, design patterns! 
Sten Vesterli explained pretty powerful in one slide why we need patterns:

Good news, Oracle has a lot of information online about design patterns.
At the Oracle UX website, there is a special tab ‘For Developers’ to browse through UX Design Patterns, best practices and read about success stories. Next to the UX there is also an UX Direct website, here you find a quick look at the design process. You can read more about the ‘Discover, Desgin, Deploy’ circle and browse through resources.    

A great example of how these patterns can come into use, is for example this Pattern Set Decision Table:

Besides the web content Oracle gave out a free eBook during the UX Event, containing 60 pages of Design Patterns for the Simplified UI. The book is called: ‘Simplified User Experience Design Patterns for the Oracle Applications Cloud Service’. I wasn’t able to find the book online yet, but I’m sure they will publish it sooner rather than later.


Web.xml parameter Default Dimensions

In a previous post, I explained how you can use the property 'autoHeightRows' to stretch a table. This is mainly useful in JDeveloper 11g, because in JDeveloper12c the stretching of tables is a lot better.

The main reason for this is that JDeveloper 12c sets the context-parameter Default Dimensions to 'auto' in the web.xml file:

The default value of this property (if not set) is not 'auto' but 'legacy', so if the web.xml parameter is not set, the stretching is not optimized. Resulting in a table which can look like this:

Recently, I discovered this property is already available in JDeverloper 11g PS6 ( as well, but not set. Resulting in the default behavior displayed above. However, if you add the context parameter to the web.xml, the table stretching behavior in JDeveloper 11g will be more optimized as well:

Oracle FMW Web User Interface Developer's Guide for ADF, Chapter A.2.3.25 Geometry Management for Layout and Table Components

Start an incognito browser from JDeveloper

In web development, a lot of times you want to avoid your browser caching messing up different sessions. Luckily most browser have some sort of an incognito modus now a days. I myself use Google Chrome the most while developing in ADF.

There is a command line start up parameter to start Google Chrome in incognito modus, a great feature in JDeveloper is that you can set these command line parameters.
If you navigate to your preferences and go to the tab Web Browser and Proxy:

Here you see I've added the command '--incognito' as Application Command Line Parameter. That's all it takes, if you now run your web application, it should start an incognito window.

Notice the symbol of the incognito browser in the left top of your browser window: