Archive for December, 2009
What Happened?
Dec 30th
What’s this?
Nope, it’s not your browser, HTML debugging proxy or broken CSS style sheet. You are still visiting the AMIS technology weblog. Don’t be afraid: AMIS has just updated it with some new features and a new theme. And well, there are some differences for you to marvel at.
You might wonder, What’s new?
Well, first off we implemented the Mystique theme into our weblog. It implements a lot of the features we wanted in the first place without too much of a hassle. Do check the the nice AJAX driven components. Also check the developer’s website of this beauty using the URL in the footer.
Next to that we implemented an AMIS Tweet: a nice way for you guys to follow our developers in their day-to-day business. It’s a custom-styled Tweet-Tracker plugin for Wordpress that allows us to use a Twitter search string over multiple accounts instead of only one.
One of the most important changes is the one where we allow you guys to register on our blog and interact with us through that account. Naturally your comments don’t need to be reviewed and will be displayed immediately, which should reduce the interaction time drastically. You are also allowed to upload your own avatar and add all kinds of information that you want to share with the world with your comments. It’s also a nice way of tracking all of your own comments and activity on our blog.
More features should be made available for our registered fans in the future, but we tend to keep content available to everyone as much as possible.
Sharing Your Code!
One of the most important new features in this version is that “you” are allowed to post code in the comments. It’s still a bit tricky (Wordpress has a powerful output filter) but you should be able to use the [ code ] tags to post your own code. Do keep in mind that all <> tags are made safe using HTML entities. Please read our Howto for some examples.
No more Spoilers
Well, there is still a lot more. But we just don’t want to spoil it all. Have fun reading our posts and happy blogging.
SUGGESTIONS!
We do “love” suggestions on how to improve our blog. If you know how? Please enlighten us!
Contacting us by using the interact with us button should do the trick!
Regards,
Blog Administrator
ADF 11g – implementing conditionally required input fields – by playing client side hide and seek
Dec 17th
The requirement I was dealing with today in ADF 11g Rich Client Components was the following: we have an input field that is required under certain conditions. Only when one of this cluster of fields has a value, is it required. Otherwise it is optional. The use case was that the fields represent a detail record. There does not need to be a detail record (optional) but if there is one (one of the fields in the detailrecord has a value), then certain fields are mandatory.
The desire was to dynamically set the required-ness of the inputText – depending on whether one of the items in the detail record cluster has a value or not. Dynamically means that when something changes with one of the items, the conditionally required item is immediately refreshed to either required or optional.

It turned out to be fairly easy to implement: the required attribute can be set using an EL expression that refers to a bean method. In the bean we can easily check the values of the other items and determine whether or not based on that assessment the inputText component is mandatory or not. By setting autoSubmit to true for all the items that determine the mandatoriness – and by adding the inputText as a partialTarget in the PPR request, we achieve the desired functionality. However … Read the rest of this entry »
SOA Suite 11g – Using Spring Component to mimic Http Binding and integrate RESTful services
Dec 16th
In an earlier post, I showed for the Oracle SOA Suite 11g how we can use the Mediator's Java Callout functionality to integrate RESTful services into our SOA Composite applications, even though we currently have no Http Binding Service nor WSIF support (SOAP Java Binding) at our disposal in the SOA Suite – link to article. In SOA Suite 11g PS1 – released in November 2009 – is the preview (not yet officially supported and only available for PoC and early trials – of Spring components. This feature provides another way of integrating Java classes into our SOA Composite applications.
This article demonstrates how we can use the Spring component to bind our SOA Composite Application to the RESTful Translation service provided by Google.

The Oracle SOA Suite 11g HttpBinding or another way to call RESTful services from SOA Composite Applications
Dec 15th
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?
In this article, I want to demonstrate a way of calling RESTful (simple http request based) services into a SOA Composite application. I show one way of doing so using the Google Translation Service, a RESTful service described at http://code.google.com/apis/ajaxlanguage/documentation/ and to be accessed at http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello%20world&langpair=en%7Cit. This service takes a string to translate and an indication of a source and a destination language. Though maybe not formally resource oriented enough to be called REST-style (or RESTful) service by some, it is a service that does not require SOAP or WS* but simply a HTTP Get request. So at least quite restful.
In this article I will use the work I did and described in the previous article: Leveraging RESTful Services from Java application using Jersey (Introduction). Using project Jersey's support for clients of RESTful services and the JSON-SIMPLE library to interpret the response I get from the GoogleTranslation service, I will hook up with the RESTful Service. Then I will leverage the Mediator Java Callout mechanism to integrate this REST-service-client into a SOA Composite application. The Mediator I create will be the fully SOA Suite integrated front-end of this RESTful Service.

Agile software development, the principles. Principle 11: The best architectures, requirements, and designs emerge from self-organizing teams.
Dec 14th
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.
SOA Suite 11g – introducing Mediator Java Callouts for debug, audit and …
Dec 13th
The Mediator component in SOA Suite 11g has a the option to specify a Java Callout, one for every WSDL operation. The Java Callout refers to a Java Class, either on the SOA Suite's classpath or deployed as part of the SOA Composite application. This class should implement interface oracle.tip.mediator.common.api.IJavaCallout and a convenient way of doing so is by extending AbstractJavaCalloutImpl in package oracle.tip.mediator.common.api.
The Java Callout is invoked by the Mediator on a number of times, prior to and after performing the Routing Rule and each of the cases in it. The Java Callout class can implement a number of methods, one for each specific event or stage in the Mediator process. These methods get access to the input message as well as the transformation result. That means that the callout class can inspect, validate, log, audit and even manipulate these messages, their payloads, headers and properties. Interestingly enough, the methods are not static what I thought might be the case. The first one to be called is an initialize() that has you initialize the callout class instance to prepare the object for further callout processing. This means that all stages in a single Mediation action are processed by the same callout object. This allows you to compare for example the pre and post transformation values.
The methods that the callout interface specifies are: initialize, preRouting (before any routing rule cases are processed), preRoutingRule (before one specific routing rule is processed), preCallbackRouting (This method is called before Mediator finishes executing callback handling. You can customize this method to perform callback auditing and custom fault tracking.) , postCallbackRouting, postRoutingRule, postRouting.
This article shows a simple example of creating a SOA Composite Application – the simplest one you can create I believe using the new 11g feature of Echo – with use of the Java Callout class.
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 »
Java EE 6 and GlassFish 3.0 released!
Dec 10th
In the past few month several Java EE 6 related JSRs (Java Specification Requests) have been finalized. The final ballot for them ended on November 30 and all were approved. Today, December 10, 2009, Java EE 6 and GlassFish v3, THE reference implementation of Java EE6, are released.


