Monday Jan 09, 2017

Example CCA Generator

Geertjan, a cool JET PM has created a CCA generator which can be used with JET. Now the nice thing about this is not that it allows you to preconfigure and generate JET forms but that its a good example of how you can build a) a JET CCA Generator and b) something reusable. CCAs are a really important feature of JET going forward, they will allow us to embed JET "applets" , in JET projects, ABCS and in the future in other Oracle products
Check it out Jet Builder GITHUB

Wednesday Nov 12, 2014

Got problems with Nulls with ServiceCloud's objects in REST?

Using Oracle RightNow, Jersey 1.18, JAX-WS, JDeveloper

Whilst trying to creating a REST interface to our RightNow instance for a mobile application I was hitting an issue with null values being rendered by Jersey (Jackson)

The way I access RightNow is via JAX-WS  generated proxies which generates JAXB Objects. In the past I've been able to simply return the JAXB object to Jersey and it gets rendered all lovely jubbly.. However with the RightNow WSDL I'm getting lots of extra (null) fields rendered.. This doesn't occur with Sales Cloud so I'm assuming its something to do with the WSDL definition..

{ "incidents" : [
       "Asset" : null, "AssignedTo" :  {
           "Account" : null, "StaffGroup" :  {
               "ID" :  {
                  "id" : 100885
              },"Name" : "B2CHousewares"
           },"ValidNullFields" : null
        },"BilledMinutes" : null, "Category" :  {
           "ID" :  {
               "id" : 124
           },"Parents" : [
Look at all those "null" values, yuck...

Thankfully I found a workaround (yay!), I simply needed to create a custom Object Mapper and tell it *not* to render nulls. This worked for both the JAXB objects which were generated for me and other classes

Simply create a class which overrides the normal object Mapper factory and to make sure its used, ensure the @Provider tag is present

package myPackage;



public class CustomJSONObjectMapper implements ContextResolver<ObjectMapper> {

    private ObjectMapper objectMapper;

    public CustomJSONObjectMapper() throws Exception {
        System.out.println("My object mapper init");
         objectMapper= new ObjectMapper();
         // Force all conversions to be NON_NULL for JSON

    public ObjectMapper getContext(Class<?> objectType) {
        System.out.println("My Object Mapper called");
        return objectMapper;

And the result is lovely.. No null values and ready for my mobile app to consume .... 
    "organization" : [
        "id" :  {
            "id" : 68
        },"lookupName" : "AngieSoft", "createdTime" : 1412166303000, "updatedTime" : 1412166303000, "name" : "AngieSoft", "salesSettings" :  {
            "salesAccount" :  {
                "id" :  {
                    "id" : 2
            },"totalRevenue" :  {
                "currency" :  {
                    "id" :  {
                        "id" : 1
        },"source" :  {
            "id" :  {
                "id" : 1002
            },"parents" : [
                "id" :  {
                    "id" : 32002
        },"crmmodules" :  {
            "marketing" : true, "sales" : true, "service" : true

Oh heads up Im using Jersey 1.18 because I want to deploy it to Oracle Java Cloud Service, if your using Jersey 2.x I believe the setSerializationInclusion method has changed..

Tuesday Jan 03, 2012

Happy New Year All , and are you all integrated and validated?

Firstly Happy New Year to you all

Secondly, in late December a friend of mine, who works for an Oracle Partner, asked me questions on how to "correctly" integrate  Oracle eBusiness Suite with a 3rd party application, the answer is "it depends".. There are many ways to do integration and depending on what you need to accomplish depends which one is the "best" approach..

It depends on :

- What version of EBS you are using, if its 12.1.3 then you can use the ISG (integrated Service Gateway)  to call services within EBS as Web services.
-  If your on a EBS prior to 12.1.3 (also 11i I guess) then you have something called the Applications SOA Adapter within SOA Suite. This adapter basically acts as a facade between SOA Suite and the Oracle eBusiness Suite PLSQL APIs, quite easy to use and works well.. This adapter is also available in 12.1.3, but its generally recommended to use the previously mentioned ISG Gateway instead.

However beware that the devil is in the detail, it does depend who the 3rd party is and what they are trying to do, you might for example need to use the Oracle Service bus for some complex credential mapping, or maybe the Oracle B2B product is a better fit.. Also consider if its a batch process then perhaps one of the data integration products is a better fit (e.g. ODI)
Finally, what about validating the solution? Does oracle provide validation services? 

Yes we do!


If its custom code, or a one off for a client, then the best people do validate the solution is probably Oracle Consulting Services, if you are a partner who are creating a reusable asset then the partner program has a validation program called "Oracle Validated Integration" which provides a number of benefits  

Tuesday Nov 29, 2011

Improving the performance of JDeveloper11g (part 2) and JVMs in general

Just received an email from one of our JVM developers who read my blog entry on Performance tuning JDeveloper11g and he's confirmed that all of the above parameters are totally supported :-) He's also provided a description of the parameters so we can learn what magic is actually being applied.

- -XX:+AggressiveOpts -- this enables the latest and greatest JVM optimizations. It will likely help most Java applications. It's fully supported. The downside of it is that because it has the latest and greatest optimizations, there is some small probability that it may not offer as good of an experience. As those features enabled with this command line option have "matured", they are made the default in a future JDK release. So, you can think of this command line option as the place where the newest optimizations get introduced. Some time later they are moved out from under AggressiveOpts to become default behavior.


-- only works with the -server JVM. It may be enabled by the default in a future JDK 7 update release. This option delays the construction of a StringBuilder/StringBuffer and attempts to avoid re-sizing the underlying char[] by attempting to detect the size of the char[] to allocate based on what's being appended to the StringBuilder/StringBuffer.


-- I would not suggest using this unless you knew that JDeveloper allocated the same string over and over again. And, the string that's allocated over and over again is one of the first 100,000 allocated strings. In short, I'd recommend against using it. And, in fact, in Java 7 (currently) does not include this feature.


-- applicable to 64-bit JVMs. And, if you're using a 64-bit JVM, I'd suggest you use it. It's auto enabled in JDK 7 64-bit JVMs and later JDK 6 64-bit JVMs enable it by default too.


-- by default this option is already enabled.

One other command line option to consider is -XX:+TieredCompilation for a JDK 6 Update 25 or later, or JDK 7. This gives you the startup of a -client JVM and the peak performance of a -server JVM.


Finally, Charlies also pointed out to me a "new" book he's just published where he goes into the details of JVM tuning, a must for all Fusion Middleware tuning exercises.. 

(click the book) 

Thanks Charlie!

Monday Oct 03, 2011

Using the built in Sun Crypto processors with WLS

Just saw this little snippet of information I thought Id share with the community

Usually if you wanted to actually take advantage of the crypto acceleration capabilities of the processor your software would need to be specially written to make the necessary calls to the CPU. Thankfully Sun and Oracle thought ahead and wired these capabilities right into the JVM's crypto bits (also/formerly known as JCE). So if you run the Sun JVM on Solaris you've got access to the Sparc crypto acceleration for free! There's all sorts of great information out there about these features. A good place to start is this article on the Sun Performance and Best Practices blog. That post also points you to a couple of really great PDFs on Oracle technet that discuss Weblogic on the T Series and SOA and OWSM on T Series.

A really good reason why using Sun Processors with the SUN/Oracle JVM makes perfect sense.


Wednesday Apr 06, 2011

Virtualbox tip : You can have you cake and eat it!

[Read More]

Wednesday Mar 31, 2010

Webcenter book review

[Read More]

Wednesday Nov 11, 2009

Fusion Middleware Is available

[Read More]

Friday Aug 07, 2009

Changing the Skin of WebCenter (also applies to ADF)

[Read More]

Friday Jul 24, 2009

Downloading Fusion Middleware Patches

[Read More]

Architect & Technology Evangelist - If its middleware,PaaS/SaaS integration then I'm interested

The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.


« March 2017