Java, JEE, OAS and WebLogic Server
Technical Preview of ADF Mobile Client has arrived !
Apr 30th
The Technical Preview of ADF Mobile Client now is generally available!
Ted Farrell, Chief Architect and Sr. Vice President of Tools and Middleware introduced the latest break-through in mobile application development at the BlackBerry User Conference (WES). ADF Mobile extends Oracle Application Development Framework to mobile users. Using Oracle JDeveloper, application developers can rapidly develop mobile applications that support mobile users accessing critical business data through either on-device mobile client or mobile. ADF Mobile Client supports a complete on-device client framework that works and performs consistently regardless of connectivity. The framework enables developers to develop one application that can be deployed to multiple mobile device platforms.
I wrote the OTN article to support the introduction of ADF Mobile Client: “Developing for BlackBerry Smartphones using Oracle JDeveloper and ADF Mobile”. According to Joe Huang (Senior Principal Product Manager Mobile Platform, ADF/JDeveloper) this article will contribute to getting ADF Mobile Client out to the market.
Click to go to the ADF Mobile Homepage, where you find all the resources.
Have fun working with ADF Mobile Client.
Kennissessie ADF 11g – Ode aan de Task Flow
Apr 20th
ADF 11g staat vooral bekend om zijn rich components waarmee een moderne, interactieve en aantrekkelijke user interface kan worden ontwikkeld. En een beetje om de Data Visualization Components (DVTs) waarmee allerlei geavanceerde grafieken en andere vormen van grafische data-presentatie kunnen worden ingepast in de web applicatie.
Veel minder bekend en zichtbaar is de Task Flow. Terwijl dat uit oogpunt van architectuur en voor een efficiente organisatie van een onvangrijk ontwikkel-project en zeker voor het kunnen realiseren van reuse de belangrijkste vernieuwing is geweest in ADF 11g.
Een TaskFlow is een op zichzelf staande module die zowel code – managed beans, navigation rules – als user interface bevat. Een task flow is bijna een mini-applicatie met mogelijk verschillende schermen, complexe navigatie tussen de schermen en een eigen memory scope. Een task flow kan worden geintegreerd in schermen in de applicatie (en in andere task flows). Het contract daarvoor bestaat uit input parameters en events. Task flows kunnen worden verpakt in libraries en tussen projecten worden uitgewisseld als generieke reusable componenten. Een voorbeeld van dat laatste gebruik van task flows zijn de WebCenter Services.
In deze KC sessie ‘Ode aan de Task Flow’ gaan we kennismaken met de Task Flow. Ook al weet je nog niets van ADF 11g – of al juist een heleboel – na deze bijeenkomst zijn task flows ook jouw vriend. Wel is enige ervaring met JDeveloper en ADF 10g nodig om zinvol deze sessie bij te wonen.
We laten zien – en daar ga je vervolgens ook zelf mee aan de slag – hoe de allereenvoudigste task flow kan worden gemaakt, kan worden gebruikt binnen de applicatie en kan worden uitgebreid met navigatie, eigen beans en input parameters. Dan gaan we een reusable task flow publiceren in een ADF Library en hergebruiken in een andere applicatie. Tenslotte laten we een demo zien van WebCenter Services die dus ook task flows als mechanisme gebruiken. We hebben het voornemen om binnen AMIS ook een collectie reusable task flows te gaan ontwikkelen. Deze sessie is daar het startpunt voor.
Hands-on: de bijeenkomst is gericht op hands-on aan de slag gaan met JDeveloper 11g, ADF 11g en met name de task flows. Breng dus een laptop mee waarop JDeveloper 11g is geinstalleerd
(eventueel downloaden van http://www.oracle.com/technology/software/products/jdev/index.html).
Ga naar http://www.amis.nl/activiteiten.php?id=784 om je te registreren voor deze bijeenkomst.
Java Callout in Mediator to Automatically Deal With Empty Elements
Mar 18th
One of the most annoying things with XML Schema validation is that it will not accept empty elements of certain types, like xsd:date and xsd:double, even though the element is defined as optional (minOccurs=”0″). OK, I do understand that an empty element _does_ occur, and that this behaviour is therefore correct, but the implication is that developers will have to add <xsl:if> tags in their XSLT transformations around each and every element where this may cause a problem.
This article will show how using a small and generic Java class and the “Java Callout” feature of the 11g Mediator, we can automatically “fix” these empty elements so that they will not cause problems with schema validation any more. Read the rest of this entry »
Automatic testing Oracle Service Bus using Hudson, maven and SoapUI
Feb 23rd
ADF skinning and resources
Feb 2nd
With my current, ADF Faces 11g, project, we have a requirement that the default text in the error message box is customized. Instead of ‘Messages for this page are listed below.’ it should read some other text. When you talk about customization you say ’skinning’. Skinning allows you to customize the userinterface, i.e. change the look and feel of the standard components. But besides the looks, it also allows you to change the default text messages that are sometimes included with the component.
The af:messages component presents errors and other messages in a comprehensible way to the users. It’s as easy as to put <af:messages id=”m1″ /> in the .jspx page and you’re done:
Now, let’s see how we can change the default texts like ‘Messages for this page are listed below.’ and ‘OK’…
Read the rest of this entry »
ADF 10g Dynamic Columns: Or how to implement an updatable dynamic table
Jan 11th
Although it is all about ADF 11g these days there are still some challenges in ADF 10g projects that run at some of my customers. Today I finished a task in which I had to create an updatable table in which the number of shown columns wasn’t known at design time. There is the possibility to create an ADF read only dynamic table, that works more or less like the richfaces columns <rich:columns/> http://livedemo.exadel.com/richfaces-demo/richfaces/columns.jsf?tab=usage&cid=3305454 element. However, I needed an updatable table, but ADF doesn’t know such a component. I had to come up with a different solution. Read the rest of this entry »
Leveraging RESTful Services from Java applications using Jersey (Introduction)
Dec 14th
While researching for the Oracle SOA Suite 11g Handbook, I wanted to take a quick look at REST(ful) WebServices and see how those can be integrated into the SCA based SOA Composite Applications that we create with the Oracle SOA Suite. Currently, it does not have the HTTP binding that the 10.1.3 release of the SOA Suite used to have. So what are the alternatives? But first, how does one call a simple HTTP only (no SOAP/WS*) service from a piece of Java code? With as little programming and as much framework lifting as possible.
One of the frameworks available for RESTful operations is Jersey – a framework that should be more REST aware than plain HTTP communication oriented libraries like Apache HTTP Client, as well as offer some support for typical formats used in RESTful interactions, such as JSON, XML, RSS, CSV. So let’s create the simples Java application consuming a RESTful service – the Google Translation service – using the Jersey library.
Configure JDeveloper 11g to work with Spring 2.5 and AOP
Dec 12th
In a recent article I described the interaction between JavaServer Faces (1.2) and Spring Framework (2.5.x): http://technology.amis.nl/blog/6655/spring-a-surprise-on-a-jsf-developer-how-spring-beans-can-become-jsf-managed-beans. I created a JDeveloper 11g web application that I ran on the integrated WebLogic Server 11g (10..3.2). In this article I will explain the configuration steps I had to go through for making JDeveloper and WebLogic run my simple JSF/Spring application.
1. Create a new generic JDeveloper application; set the project name and add the JSF library
2. Install the JDeveloper Spring extension through the Check for Updates facility under Help in the main menu
Spring a surprise on a JSF developer – how Spring beans can become “JSF Managed Beans”
Dec 11th
Recently I was looking at a JavaServer Faces application, that did something relatively simple – but was exhibiting strange behavior. The output shown on the page (and this is a simplified version of the real life situation) was:
dlroWolleH
I had been asked to look into the situation and correct it. Before starting to make any changes I decided to familiarize myself with the application as it currently was. And then they almost tricked me.
The JSF page had a simple outputText component with an EL Expression in its value attribute. Something like:
<h:outputText value="#{someBean.property}"/>
I decided to take a look at the code for that bean, to understand the logic behind deriving the value of the outputText. So I first opened the faces-config.xml file to find the managed bean declaration that would tell me which class definition was behind the bean included in the EL expression. However, the faces-config.xml did not contain any managed bean definitions at all. None. And yes, I tried to see whether the web.xml specified any other faces-config.xml alternatives. But it did not.
Slowly it dawned on me Read the rest of this entry »

