SOA tips and tricks

This part will contain various tips and tricks I have found useful during my time as a SOA developer. The content will be expanded upon as we progress through the tutorials, and also updated if I suddenly find a new thing worth mentioning.


Sometimes when browsing for resources through various components, JDeveloper might throw up an error window where you can choose to continue or exit. I don't know what is causing this, but I always select Continue and tick the check box to remember the settings.

Tuning JDeveloper performance

If you experience sluggishness while developing you might need to configure some settings in JDeveloper. Take a look at the following links for instructions:

Freeing up disk space

Every time you hit the "Build->Clean all" option when developing OSB code, JDeveloper will create a new session build for the application. It doesn't get rid of old sessions though, so after some time these might take up some space. Especially if your application is of some notable size. In my linux vm the location of these builds are:

When JDeveloper is experiencing issues, it might produce an .hprof file that takes up a lot of space. A .hprof file is a heap dump, and I believe it is produced when an OutOfMemoryError happens. Unless you want to analyze what went wrong this file can safely be removed. Location should be OracleHome/MiddlewareHome/jdeveloper/jdev/bin If this occurs often I suggest you look at "Tuning JDeveloper performance" further up.


If you are experiencing strange behavior or components not working as expected, your best bet is to look at the patches available for the product. This is especially true for new components introduced in 12c like the LDAP adapter. The same patch can be available for different versions, so make sure you check that the version number on the patch you download matches the version of your environment.

One thing to be aware of is that patches not only updates the weblogic server, but also the designtime repository for JDeveloper. This came through pretty clearly for me when I applied a patch and found that I no longer could open xslt transformations in JDeveloper. This was solved by running another patch, and updating extensions.

To find out which patches are currently applied to your environment do the following:

  • Go to: /u01/oracle/fmw/Opatch/ (assuming /u01/oracle/fmw/ is your Oracle Home / Middleware home folder)
  • Type: ./opatch lspatches

To apply new pathces:

  • Stop the server if running
  • Extract the patch zip file
  • Open the folder that contains the patch
  • Enter the command: export ORACLE_HOME=/u01/oracle/fmw/
  • Enter the command: /u01/oracle/fmw/Opatch/opatch apply


To assign a value to a local variable based on some conditions, you can do the following:
let $var := if(whatYouNeedToCheckIsTrue) then ('doThis') else ('doThat')

You can use predicates in an XQuery transformation to map data if a condition is met. Example:

xquery version "1.0" encoding "utf-8";

(:: OracleAnnotationVersion "1.0" ::)

declare function local:func() as element() {
  let $input := fn-bea:inlinedXML("<someRequest>

  for $someElement in $input/*:someList/*:someElement
  let $element := $someElement/*:element/text()
      <elementYouAreMappingTo>Value1</elementYouAreMappingTo>[$element eq 'a'],
      <elementYouAreMappingTo>Value2</elementYouAreMappingTo>[$element eq 'b']