Friday Aug 03, 2012

Migrating ADF 10g to 11g - Should You?

So you have a 10.1.3.* based ADF Faces application, and you are wondering if you should upgrade it to 11g and how.

To make the right decision, you first need to define to yourself what are your goals for the application. Here are some options:

You just want to have the application as is running on WebLogic instead of the old Oracle Application Server

If this is the case, you don't actually need to upgrade - you can just take the application as is and deploy it to a WebLogic instance. A while back I wrote a paper and recorded a demo showing how to take an ADF 10.1.3 application and deploy it on WebLogic. And while the demo was using an older WebLogic - the steps still apply to WebLogic 11g. This should be the fastest way to get you to run on WebLogic without any code re-writes.

You really like the new UI capabilities of ADF Faces Rich Client Components 11g and want to take advantage of them in your UI

In this case I think you should consider a complete re-development of your application's UI layer. You can keep your Model/Business Services layer as is though.

Why? Well, the capabilities that ADF Faces 11g give you in terms of UI layout and user interaction, coupled with the unique capabilities that the ADF Controller's taskflows and regions provide,  are a far departure from what you were able to build in the 10.1.3 days.

So to truly take advantage of those, you should really invest the time to design and develop with these new capabilities in a new way.

But my 10.1.3 application is too big to redevelop the UI in one go

If you want to take a stepped approach to 11g adoption you could have a hybrid application that uses ADF Faces 11g for the new screen, keeping the old screen "as-is" almost. The tricky part is that your old screen will need to be migrated to use the Trinidad components in order to live in peace with the ADF 11g in the same project. Trinidad is based on ADF Faces 10.1.3 and has mostly parallel capabilities.

When you open your 10.1.3 application in JDeveloper 11g, JDeveloper will offer to do the migration for you. While JDeveloper will do the best it can to automate the migration - there will still be things that you'll need to do manually. How much manual work you'll need to do depends on what feature of ADF Faces you used and also how much extra CSS/JavaScript is in your pages.

For a basic introduction to the work involved read this migration of SRDemo document and pay attention to the link at the bottom to this page about ADF Faces 10.1.3 to Trinidad migration .

Now that you know what is involved you might have better data to make your call on the right approach for you. Note that it might be worthwhile choosing several screens from your application and trying the Trinidad migration and the complete 11g re-write to see what is the actual effort involved in each. This will give you more exact data on what is the right approach for you.

Thursday Jul 26, 2012

Monitoring ADF Pages Round-Trips with the HTTP Analyzer

Here is a short demo that shows how to use the HTTP Analyzer in JDeveloper to monitor and sniff the network traffic between an ADF Faces page (or any other web page) and the middleware. This can be a handy thing to use when you want to tune the performance of your ADF pages.

In the demo I show:

  • How to setup the HTTP Analyzer - using it as a replacement proxy
  • Monitor the HTTP traffic for your ADF page
  • The influence of the RangeSize parameter in the binding layer
  • The way an ADF table behaves and how it does pagination for you

Remember that this is only one of the things you can do to improve the performance of your ADF applications - there are many other things that can probably influence the performance in bigger ways. See for example this list from the Fusion Middleware Performance and Tuning Guide.


In the demo you'll see that I'm starting Firefox with the following command line: "firefox -no-remote -P Debugging", this allows me to have a separate profile defined where I can set the proxy settings without messing up my regular firefox instance.

Note that you can then switch the command line that start the browser from inside JDeveloper in tools->preferences->web browser and proxy - to automatically start the browser with these options.

Thursday Jul 05, 2012

Don't miss Virtual Developer Day - All about ADF next week

In case you haven't heard we are holding a free online virtual developer day next week - July 10th that you should attend - even if you think you already know ADF.

First the registration link -

While one of the tracks is aimed at developer who are relatively new to ADF - and cover ADF Faces, ADF Controller and a comparison of productivity with Forms and other tools - the two other tracks have great content on some topics that you might not be familiar with even if you already work with ADF.

This include sessions about the upcoming ADF Mobile, The new ADF support in Eclipse and information about Application Life Cycle Management with ADF and JDeveloper. As well as sessions that will open your mind to the areas where ADF integrates with other Fusion Middleware Solutions such as ADF integration with BI, WebCenter and SOA.

Most of the sessions are quite heavy on demos and you'll get a chance to interact with the presenters and ask questions during the live event.

You should register even if you can't attend the live event - this way you'll get an email pointing you to the recorded sessions for on demand viewing.

See you next week.

Friday Jun 08, 2012

Introduction to the ADF Debugger

Not that you'll ever need this blog entry - after all there are never bugs in the code that YOU write. But maybe one day one of your peers will ask you for help debugging their ADF application so here we go...

One of the cool features of JDeveloper and ADF is the ADF Debugger - a way to debug the declarative pars of Oracle ADF. The debugger goes beyond your regular Java debugger and shows you in a clear way specific information related to Oracle ADF - things like where are you in the taskflow/region hierarchy, what is in your various scopes, what is the value of a specific EL and much more.

However, from the number of posts on OTN where people are saying "I placed a System.out.println() to see what the value was...", it seems that not many are familiar with the power of the debugger.

So here is a short demo that shows you some aspects of the debugger such as:

  • Setting breakpoints on various ADF artifacts
  • The ADF structure window
  • The ADF Data window
  • The EL Evaluater window

Want to learn more about debugging ADF applications - I highly recommend that you go back in time to 2009 and attend Steve Muench's OOW presentation about ADF debugging. Can't travel in time yet? Then the second best option is to look at his very clear ADF Debugging Slides, which were the inspiration to the above demo.

Friday Jun 01, 2012

Even More New ADF Bloggers

A couple of weeks back I posted an entry about new ADF related blogs that I found out about.

Well as they say "when it rain it pours"  - and over the past few days I came across several other new bloggers that cover ADF.

So here are a few others that you might want to add to your ADF blog aggregator: - Paco van der Linden - Arun - Chad Thompson - Vinay Agarwal - Donovan Sherriffs - Phil Wang - Wael Abdeen - Raphael Rodrigue - Prateek Kumar shaw

And here are a few more that are not just about ADF but do have the occasional ADF related entry: - Yannick Ongena - whitehorses - ISV Migration Center Team

and the usual reminder here:

To keep track of all things new in the ADF blog world follow the JDeveloper twitter or like JDeveloper on facebook to get notified of the latest entries we find for you around the world.

Wednesday May 23, 2012

Adding LOV to non-database Field or Parameters

More and more people end up using ADF for applications that don't actually talk to a database backend but rather to Web services, Java classes, and SOA process instead. In these cases the ADF pages actually end up invoking methods and passing parameters to these methods. One question I got today was "how do I add a database driven LOV to such a parameter?".

The tricky part is that the LOV component - af:inputListOfValues - expects a specific data model to be able to show the advance searching the LOV offers. As a lazy developer I don't feel like creating a managed bean with this model and populating it manually from the database. Instead here is a little video that shows a no-coding possible solution.

I'm using ADF BC to get the LOV and data from the database. I then use a bit of binding trickery to eliminate the need for a managed bean with the model structure for the LOV. I associate the LOV model created for an ADF BC field with an LOV field that is mapped to the parameter being passed to the method.

Monday May 21, 2012

New ADF Blogs

It's been a while since my last "New ADF Bloggers" entry, but as they say better late than never, so here is a little update on some new ADF related blogs that have sprung over the past couple of months, and that you might want to add to your blog tracking feed.

If you don't have a feed of your own - I highly recommend you'll follow the JDeveloper twitter or like JDeveloper on facebook to get notified of the latest entries we find for you around the world.

Donatas Valys -
Eugene Fedorenko -
Deepak C S -
Timo Hahn -
Amr Gawish -
Mahmoud A. ElSayed -
Sameh Nassar -
Mohammad Jaber -
Srinivas Jilla -
Dimitrios Stasinopoulos -
Chris Muir -
Eduardo Rodrigues/Fábio Souza -

Some WebCenter blogs with good ADF related content:
WebCenter A-Team -
John Brunswick -
George Maggessy -

Did I miss your blog? Drop me a line in the comments below...

Wednesday May 09, 2012

Shorter URL for your ADF application

So you ran your application from JDeveloper and the URL you got was:

A common question is can I make this URL shorter and easy to remember?

Here is how you can get it to be

The first step is to switch the Java EE Web contextroot setting of your application. Go to Project Properties of your view/controller project and under Java EE Application set the name to be something shorter like myapp or if you prefer even just "/". When you run your application on the embedded WLS in JDeveloper you might get an error saying:

Context path '' is already in use by the module: / application: FMW Welcome Page Application [Version=]

This is because the built in WebLogic server comes with a welcome application that sits at this location. You can safely remove it using the application server navigator undeploy option.

Next step is to add an index.html file to your application and in that file just use an HTML Meta tag to do a redirect to the JSF file you want to access. So for example:

<meta http-equiv="refresh" content="0;url=/faces/untitled1.jsf">

That's it.

Now when people access your running server they'll get your JSF page without having to specify anything on the URL.

If you also want to remove the need for a port number (7101) then you can configure your WebLogic to listen on port 80, or alternatively install the Oracle Web Tier and have the web cache listen on port 80 and redirect to your 7101 port.

Note - don't forget to look at the comments to this entry - there are some additional tips there, like changing the faces part, pointing to an adfc-config entry instead of a page directly and using the welcome page option to do the redirect.

Here is a quick demo of how all the above is done.

Friday May 04, 2012

To ADF or to OAF? or Can I use ADF with Oracle E-Business Suite?

I'm back from the Collaborate 2012 conference - a conference that brings together several Oracle user groups, including the Oracle Application User Group. It was nice to see a growing interest in ADF sessions this year, with many of the attendees actually coming from an Oracle E-Business Suite (EBS for short) background. One question that came up several times from this audience in different forms was "Should I use/learn OAF or ADF for my future development".

The answer is "it depends on what you want to do".
Let me explain. If what you need to do is modify an existing EBS form/page - then you'll need to do it with the tool that this Form was built with. This means you'll use OAF (or in some cases Oracle Forms) and change the metadata that defines the page. This is true for the scenarios commonly referred to as "customization" or "personalization" in the EBS world.

However there are situations where what you want to do is not modify an existing page but rather develop a new user interface that drastically change the interaction with the system or provides new functionality that doesn't exist right now in EBS.
Maybe you want to build a Mobile UI for EBS? Maybe you need a rich dashboard with lots of interactive graphs? Maybe you need to build a system that brings together data from both EBS as well as other sources of data?
In these cases OAF probably won't cut it, and ADF is probably the right choice for you.
After all ADF is what Oracle used when we needed to build a new set of functionality for our enterprise applications - the result is Fusion Applications that are built from the ground up with Oracle ADF.

Does knowledge in OAF helps with ADF?
If you are already familiar with OAF, some concepts in ADF will be easy for you to learn. For example OAF uses an older version of ADF Business Components - so you'll be familiar with key concepts such as Entity Objects and View Objects etc - although you'll have many new features that you'll be able to leverage when using ADF 11g.
You'll also be familiar with the component approach to UI design that is common to OAF and ADF - although ADF has a vastly richer set of UI components and a much more visual approach for screen development.
If you haven't seen how ADF development looks like yet, have a look at this demo - hopefully it will show you why we think this is a better development experience than we had in the past.

How do you do the integration between ADF and EBS?
If you just need "read only" access to EBS than you can use direct access to the database using JDBC and potentially the AppsDataSource (more on that component - and a demo is here.

If you also need to do update/insert/delete of if you need to invoke more complex processes in EBS than you can use the service interfaces EBS offers either with the built in integration functionality in EBS through the Integrated SOA Gateway .
ADF makes it quite easy to build UIs on top of Web services too.

As far as security integration, today you can use the users/roles defined in EBS to secure your ADF application using the EBS JAAS solution as explained here.

[Update July 2011] - The EBS team just released Oracle E-Business Suite Java SDK version 2, which now also offer session management and other features.

To call an ADF from an EBS application - that's just a matter of adding a menu option in EBS that calls out to the URL of your ADF pages.

For smooth single-sign-on between the two application you should be looking at Oracle Access Manager which is certified with both platforms.

There is more work being done on integrating the two platforms at Oracle - so expect more functionality to become available in future versions.

If you are interested in exploring this area - Juan has several blog entries that will show you some integration techniques.

Monday Mar 26, 2012

Fixing Broken Links to Entries on This Blog

I just found out that some built in redirects that were in place on the Oracle Blogging platform were removed, and as a result there is a good chance that if you were directed to an entry on this blog that is a bit older you'll get a 404 error.

Luckily there is a simple URL hack that you can use to fix this - switch the "year/month" part for "entry" and then remove the ".html" from the URL.

So for example instead of :


I fixed the links on my "Archives" page so you can also look for the entry by title there.

Sorry for any inconvenience.

Thursday Mar 22, 2012

Building iPhone Interfaces for Oracle E-Business Suite

Over on his blog Juan has been showing you how simple it is to develop a rich Web user interface with ADF accessing Oracle E-Business Suite data and even exposing it on an iPad.

In this entry I'm starting from his sample application and I'm showing how easy it is to build an interface that will look great on an iPhone (or other mobile devices) using Oracle ADF Mobile Browser.

For those of you who are just using ADF and never tried ADF Mobile Browser - you'll find that the development experience is quite familiar and similar to your normal Web application development. In the latest version of JDeveloper ( which I'm usingin this demo we have a built-in skin that will give your application the native iOS look and feel. In the demo I achieve this by setting the styleclass of a tr:panelHeader component to af_m_toolbar to get this. For more on this styling read the doc.

Check out this quick demo:

Friday Mar 16, 2012

Managing Files/Folder in Content Repositories or File Systems with Oracle ADF and WebCenter

One more entry in a set of entries (1,2,3) about the capabilities that WebCenter adds to ADF applications.

WebCenter is basically the new Portal framework in the Oracle stack - and one key thing that portals do is work with content, allowing you to compose and publish content from files as well as save and store content.
In this demo you'll see how using a set of taskflows provided by WebCenter you can add a file management, creation and viewing capabilities to a regular ADF application. To try this out you don't need any fancy content management system - we'll just use your file system for now.

All you need is the WebCenter extension installed in JDeveloper, and then you can follow the demo on your own JDeveloper instance.

You'll define a connection to your content repository you'll be able to add a bunch of pre-built WebCenter taskflows into your page. And suddenly you can upload/download/create and view document directly from your applicaiton.

Check it out:

Friday Mar 09, 2012

Dynaminc ADF Pages Construction with WebCenter's Resource Catalog and Composer

This is the third part of my "WebCenter for ADF Developer" series of posts (see post 1 and post 2).

This entry highlights why this product/features are called WebCenter PORTAL - with this set of WebCenter capabilities your ADF application gets a set of end-user customization capabilities that blur the line between a "regular" application and what used to be one of the core value propositions of traditional portals. Once you start using this capability your end user will be able to create new pages in their applications and add content to those pages at runtime.

As you'll see in the demo, this involve exposing regular ADF taskflows through the WebCenter resource catalogs, and then using the WebCenter Portal composer tags and runtime capabilities to add and customize pages at runtime.

One thing that probably should have gone into the demo also is showing how to enable this dynamic page editing on existing ADF page - to do that you can use the WebCenter JSF component called pe:pageCustomizable and in it put a cust:panelCustomizable component. You can see this if you look at the source of the home.jspx page that comes with your WebCenter Portal application template.

So at the end of the day you can create a page that has this type of structure:

           <pe:pageCustomizable id="pageCustomizable1">
              <cust:panelCustomizable id="panelCustomizable1" layout="scroll"/>
              <f:facet name="editor">
                <pe:pageEditorPanel id="pep1"/>

Then when you press the magic keyboard combination ctrl+shift+E your page will switch into the runtime editing mode. (or you can add a button that will switch to that editing mode by adding the pe:changeModeButton component to your page.)

Thursday Mar 01, 2012

Using WebCenter for Runtime Layout Customization of ADF Applications

This is part two of a set of entries that show how ADF developers can leverage WebCenter - part 1 is here.

In this demo I'll focus on WebCenter's composer components. These JSF tags allow you to add a capability for end users to dynamically change the layout/location and size of areas in a JSF page at runtime. This is something that end users became used to in the age of portals - and now you can add this capability to your ADF application very easily. To persist the changes you'll need to enable MDS - but if you just want to play with these tags - all you need is JDeveloper and the WebCenter extension.

Then just do this:

By the way - if you can't afford a WebCenter license - the ADF Faces panelDashboard component will give you some of this functionality too.

Tuesday Feb 28, 2012

Webcenter Portal Intro for ADF Developers Part 1

In the recent version of the OTN Developer Day that we are running we started to include some WebCenter content in the section where we talk about building Web UIs with ADF Faces. I figured that since some people just can't get to an event it might be nice to show some of the demos we use here as well.

WebCenter is now divided into four areas of offering, the part the I'm going to focus on is "WebCenter Portal". I look at it as a layer built on top of the ADF infrastructure that adds more capabilities that you can choose to use in your application.

In the next set of blogs I'll show some of those capabilities and how you can use them to extend the functionality of your ADF application.

To get WebCenter capabilities in JDeveloper use the help->check for update and download the WebCenter Framework and Design Time extension - then you can follow the demo I'm showing. (Note that WebCenter is licensed separately from ADF - so you probably want to make sure your organization is ok licensing it before you use it in your production application.)

In the first demo you'll see how to create a WebCenter Portal application, and how to use the provided templates and navigation model/menu option that it provides out of the box.

Check it out:

In the next chapter will see some of the UI runtime customization you can get for your application.

I'm a Director of Product Management for the Oracle Java Development Tools.
Follow me:

« April 2014