Tag Archives: JDeveloper

AIA Service Constructor in JDeveloper 11g PS3

JDeveloper 11g needs extensions to work with SOA Suite / SCA Composites and AIA 3.0 (for example the Service Constructor). An earlier post describes how to use SOA Suite extension in JDeveloper 11g. This post will show you how to install the AIA Service Constructor.

The AIA Service Constructor can be acquired using the menu Help | Check for updates, clicking Next, and selecting Oracle Fusion Middleware Products. SelectAIA Service Constructor and click next to start the download.

Verify the installation of the extension using the menu Help | About, and click on the tab Extensions:

Altering JDeveloper preferences

Now we have to make the aia.jar known to the SOA stuff. In order to do this we use the preferences, using the menu Tools | Preferences.... The is aia.jar in the ...\Middleware\jdeveloper\lib directory.

After these changes JDeveloper needs a restart.

SOA and E20 Partner Community Forum – 2

Some notes and dump of thoughts on the second day of the SOA and E20 Partner Community Forum. A day filled with interesting breakout sessions. Some of them were discussing roadmaps and future developments in the stack, and thus subjective to an NDA.

SOA platform

Again after this session I came to the conclusion that in my opinion BAM is used too little.

During the session was raised whether people in the audience were using non-Oracle databases as dehydration store and Meta Data Store. The mainstream is using Oracle as dehydration store. And although it is certified, it is advised to use Oracle as the database for this purpose. On the Application Server, given the maturity of the J2EE platform, there is less discomfort in operations to deploy the SOA Suite on a non-Oracle App Server.

ADF

Only today I found out that there is an interesting JDeveloper 11g extension. The extension validates ADF code quality. Seems an interesting extension to check code quality besides the already available Java tools.

BPM

When comparing BPEL and BPM and looking into when to use what tool, the following was stated: For all things with human interaction BPM is the tool of choice. In integration driven appraoches BPEL is the tool of choice.

In Oracle point of view BPM includes:

  • People
  • Systems
  • Documents

without the need for separate platforms.

Example of a custom Spring Java worklist application for Oracle BPM.

SOA and E20 Partner Community Forum

Today I attended the first day of the SOA and E2.0 Partner Community Forum. For a detailed agenda of the event check this link. The event with 200 registrations was hosted at Capgemini in Utrecht, The Netherlands.

Tattie picking

The first keynote by Andrew Sutherland had a few great stories that leaded the way to show the rationale behind the Exalogic platform. This included a personal story on “tattie picking”. The larger part was on productisation and gave examples on increasing effiency in IT. One of the ways for the Exalogic platform is the one that is also used by Apple: If you limit the amount of hardware your OS of software stack has to be compliant with, that introduces a better controlled and optimized environment; “If you know the machine you need less code”. This is resulting in several efficiencies. Efficiencies both in the One Time Costs (CTB) and Recurring Costs (RTB).

One of the sound bites that stayed with me was:

The most sticky stack is the least sticky one

Indicating that the stack that is the most open and complying with standards is the one that is most likely to survive…

SOA/ BPM Reference Case

In the Partner SOA/ BPM Reference Case Leon Smiers of Capgemini introduced us to the BPM practise of Capgemini and two of their BPM cases. One of the quotes that I think is very true was:

SOA supports the success of BPM.

Besides that Leon stressed the structure, insight and compliance advantages that BPM efforts deliver. One of the things they learned by doing was the importance of showing BAM to business people. This really enables you to get visibility on a lot of stuff that is under the hood. Besides that it is a catalyst for generating more business value with ideas from the people you are showing BAM to.

WebCenter/ UCM Reference Case

During the WebCenter/ UCM Reference Case Vikram Setia of Infomentum shared great insight on how to deliver an excellent web site using Oracle technology. He did this in a very lively session showing us around a live site and telling what Oracle technologies were used behind the scenes. Besides the UCM and WebCenter stuff there were some cool uses database thingies like:

  • Text Clustering
  • Thesaurus
  • Locator

SOA and BPM 11gR1 PS3 Update

Another intresting session was the SOA and BPM 11gR1 PS3 Update by David Shaffer. Mr Shaffer showed us some of the history and some of the highlight in the current stack. A more detailed dive into the latter will be on day 2 of the conference.

Wednesday’s Breakout Sessions

On the second day I will be attending the following breakout sessions:

  • SOA Suite 11g PS3 & OSB
  • ADF/WebCenter 11g integration with BPM Suite 11g
  • BPM 11g, Whats New

JDeveloper 11.1.1.4. supports 64-bit versions of Windows and Java

There is a small note in the JDeveloper 11.1.1.4 Installation Guide:

This release of Oracle JDeveloper supports the 64-bit versions of Windows and Java.

More on the question What is 64-bit Java?, can be found on this Java Hotspot FAQ.

The Installation Guide mentioned before doesn’t show additional details on How-To get JDeveloper working on Windows 7 with an 64 bit Java version….
To get this working:

  • Download and install a recent 64 bit JDK for Windows 7 64 bit, eg jdk-6u24-windows-x64
  • go to the $Middleware_Home$\jdeveloper\jdev\bin directory and edit the jdev.conf
  • Alter the SetJavaHome to the directory in which you just installed the JDK:
#
# Directive SetJavaHome is not required by default, except for the base
# install, since the launcher will determine the JAVA_HOME.  On Windows
# it looks in ..\..\jdk, on UNIX it first looks in ../../jdk. If no JDK
# is found there, it looks in the PATH.
#
#SetJavaHome C:\Oracle\Middleware\jdk160_21
SetJavaHome C:\Program Files\Java\jdk1.6.0_24
  • And then start the jdev64W.exe in the $Middleware_Home$\jdeveloper\jdev\bin directory.

Additional hints

February 2012 Spyros Doulgeridis posted on his blog on Running JDeveloper in 64 bits. He shows additional guiding on:

  • Adjust JDeveloper’s memory settings in in the C:\Oracle\Middleware\jdeveloper\ide\bin\ide.conf
  • Increasing the memory of the embedded weblogic – in the setDomainEnv.cmd file
  • Configure Windows pagefile – to avoid the Virtual Memory Minimum Too Low error in Windows

Using Quartz with SOA Suite 11g

Already in 2006 Clemens posted on scheduling BPEL processes. More recently with BPEL in SOA Suite 11g a bug ( 8927175: PROVIDE QUARTZ SCHEDULER) was submitted. The rquest text:

The product does not have schedular to schedule BPEL processes. Need to schedule the BPEL processes through SOA11G and not through unsupported softwares(Quartz).

And the business need:

Some processes need to be scheduled at a particular time and at a particular day and should not be started Manually, increases the maintenance cost of the software.

These together indicate a clear need to schedule reoccurring processes. Although I’m not so sure that this functionality should be provided by this platform. One could see advantages in centralizing all scheduling task. There a good commercial product available for cases like that (Redwood’s Cronacle for example).

On Oracle Technet there is a good document on Configure a SOAScheduler for a composite in SOA Suite 11.

One Job, multiple Schedules

We need a Class that implements Job. Something like:

package net.deltalounge.quartzdemo;
 
import java.util.Map;
 
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.SchedulerException;
 
public class DemoJob implements Job {
    public DemoJob() {
        super();
    }
 
  public void execute(JobExecutionContext context)
     {
      Map dataMap = context.getJobDetail().getJobDataMap();
      RunMeTask task = new RunMeTask();
      String someString ="init";
      someString = context.getTrigger().getName();
      System.out.println("Quartz demo output: "+someString);      
    }
}

And we need a Class that creates and starts the Scheduler. This Class can also schedule the jobs. Here we actually see that although one Job Class is enough we need to declare mutiple JobDetails.

package net.deltalounge.quartzdemo;
 
import java.util.Map;
 
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.impl.StdSchedulerFactory;
 
public class QuartzAppCronTrigger {
  public static void main( String[] args ) throws Exception
      {
        //scheduler task details
        JobDetail job = new JobDetail();
        job.setName("someJob");
        job.setJobClass(DemoJob.class);
        //
        JobDetail job2 = new JobDetail();
        job2.setName("someOtherJob");
        job2.setJobClass(DemoJob.class);
 
        //configure scheduler time
        CronTrigger trigger = new CronTrigger();
        trigger.setName("someJobTrigger");
        trigger.setCronExpression("0/30 * * * * ?");
 
        //configure scheduler time 2
        CronTrigger trigger2 = new CronTrigger();
        trigger2.setName("someOtherTrigger");
        trigger2.setCronExpression("0/20 * * * * ?");
 
        //create the schedule
        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);
        scheduler.scheduleJob(job2, trigger2);
      }
 
}

If you don’t define multiple jobs prepare for an error like:

Exception in thread "main" org.quartz.ObjectAlreadyExistsException: Unable to store Job with name: 'someJob' and group: 'DEFAULT', because one already exists with this identification.
	at org.quartz.simpl.RAMJobStore.storeJob(RAMJobStore.java:222)
	at org.quartz.simpl.RAMJobStore.storeJobAndTrigger(RAMJobStore.java:195)
	at org.quartz.core.QuartzScheduler.scheduleJob(QuartzScheduler.java:732)
	at org.quartz.impl.StdScheduler.scheduleJob(StdScheduler.java:265)
	at net.deltalounge.quartzdemo.QuartzAppCronTrigger.main(QuartzAppCronTrigger.java:36)

VirtualBox Appliances for Developers

I’m a fan of ready to use appliances for development and demo purposes. Recently it was announced that additional developer Virtual Machines have been released by Oracle. These in addition to the SOA Suite and BPM appliance mentioned before.

Developers can simply download a few files, assemble them with a script , and then import and run the resulting pre-built VM in VirtualBox. This makes starting with these technologies even easier. Each appliance contains some Hands-On-Labs to start learning.

Java Developement

This VirtualBox Appliance contains:

  • Java SE (JDK) 1.6.0 u20 (note: Mac OS X 10.5 users must use Apple update)
  • Java FX 1.3.1 runtime
  • NetBeans IDE 6.9.1
  • GlassFish Server Open Source Edition 3.0.1 (installed with NetBeans)

The Aquarium says about this Java EE6 VM:

This is everything you need to get started with Java EE 6 development and you’ll even find three labs (with code and instructions) to start using JSF 2, JAX-RS 1.1, EJB 3.1, Servlet 3.0, JPA 2.0 and CDI 1.0!

For detailed instructions and downloads go here…

Oracle Database Development

This VirtualBox Appliance contains:

  • Oracle Enterprise Linux 5
  • Oracle Database 11g Release 2 Enterprise Edition
  • Oracle TimesTen In-Memory Database Cache
  • Oracle XML DB
  • Oracle SQL Developer
  • Oracle SQL Developer Data Modeler
  • Oracle Application Express 4.0
  • Oracle JDeveloper
  • Hands-On-Labs (accessed via the Toolbar Menu in Firefox)

For detailed instructions.

It is expected that more flavors will be available in 2011.

Small Oracle Developer Linkdump

Integration of ADF Faces with JavaServer Faces 2.0 is an exciting process that has just begun with the release of Oracle JDeveloper 11g R2 and will continue to be significantly enhanced with the subsequent releases. The aim of ADF Faces is to continue to provide the unparalleled level of functionality and productivity to developers while moving to JSF 2.0. From an ADF Faces framework perspective, most of the changes in adopting JSF 2.0 are internal and should be transparent to developers.

Test driving the VirtualBox SOA Suite and BPM 11g Appliance

Few weeks ago I mentioned the VirtualBox SOA Suite and BPM 11g R1 PS2 Appliance. In the last week we’ve been test driving it on several machines.

32-bits Windows7

We noticed that on some 32-bits Windows7 machines the WebLogic Server and SOA Suite fail to start. The reason seems to be that on some 32-bit Windows 7 machines the amount of memory that can be allocated to the VirtualMachine in VirtualBox is limited to 1500 MB.
VirtualBox explains:

The Base Memory sets the amount of RAM that is allocated and given to the VM when it is running. The specified amount of memory will be requested from the host operating system, so it must be available or made available as free memory on the host when attempting to start the VM and will not be available to the host while the VM is running. This is the same setting that was specified in the “New Virtual Machine” wizard.

This can cause a crash when starting the WebLogic Server since the SER_MEM_ARGS are set to:
SER_MEM_ARGS="-Xms512m -Xmx1536m"

These are set in the wls_env.sh which can be found in the /home/oracle/bin/. Altering the -Xmx to a lower value (lower than the amount you can allocate on your workstation) can solve this problem.

Oracle Service Bus

Since I’ve been involved in several projects in the last year that want to use both SOA Suite and the Oracle Service Bus (which at least from some perspectives is part of the SOA Suite) it was a bit disappointing for me that OSB isn’t included. I’ve been asking around for the rationale behind this choice without any satisfying answers so far. Please leave your thoughts in the comments or in this thread of the Oracle forums.

Sharing artifacts using the MDS Repository

Both during development and maintenance of code, deployment strategies relying on copying of artifacts will fail, or at least complicate the task at hand and frustrate reuse. SOA Suite offers a centralized storage for artifacts (like WSDL, XSD, and XSL files) that can be accessed both at design time and at run-time. It is called the MDS Repository, and comes with Metadata Services on top of it. It is part of the SOA Suite and doesn’t require additional installation. This blogpost will show you how to upload an artifact to the central MDS Repository, and how to use the uploaded artifact in your source code.

Locate and copy the WSDL

Locate the WSDL file in your project on the local file system, for example: C:\JDeveloper\mywork\AIApocBOUW\CreateInventoryTransactionRIBRMSProvABCSImpl.wsdl. In which a convention like C:\JDeveloper\mywork\__Workspace__\__project__ is used. You can also determine this path in JDeveloper by selecting the WSDL file and use CRTL-SHIFT-C (or by selecting contextmenu – Copy Path).

Use an FTP tool to move the file to the server running the SOA Suite. The path to use on the server depends on the application, version and component type. Typically in AIA there is a structure like $AIA_HOME/AIAMetaData/AIAComponents/ApplicationConnectorServiceLibrary/__Application__/__version__/__componentType__ . Where in AIA component types are ABCS Provider, ABCS Requestor, EBS, et cetera. In other environments you can create your own structure. Since you no longer need a local copy of the WSDL, remove it from your local file system.

Load the WSDL in the MDS Repository

To load the WSDL and other artifacts to the MDS repository there is an ANT script available on the server. To use ANT, make sure the needed environment settings are made correctly. When you installed AIA there is a Shell script available the will source both AIA and ANT environments: aiaenv.sh. This script can be found in ...../weblogic/aia30/aia_instances/aia30poc/bin. It can be convenient to copy this to your home directory.

  • Source AIA and ANT environment: source ./aiaenv.sh.
  • Alter the UpdateMetaDataDP.xml configuration file. It can be found in ...../weblogic/aia30/aia_instances/aia30poc/config.

In case your vi isn’t up to par use a tool like WinSCP and choose Edit in the context menu:

In the UpdateMetaDataDP.xml file alter the file set. In the example on which the screenshot is based
AIAComponents/ApplicationConnectorServiceLibrary/Retail/V1/RequesterABCS/CreateStockChangeLOCUSReqABCSImpl.wsdl
is added.

And now you are ready to run ANT using the actual loading script:
ant –f /fs01/app/oracle/esbtst01/weblogic/aia30/Infrastructure/Install/scripts/UpdateMetaData.xml


Check the output of the ANT script:

  • check that the correct number of files has been copied.
  • the server gave a HTTP response 200.
  • The deployment of the composite was successful.

Another check to verify a correct load into the MDS Repository is to use the MDS Browser in JDeveloper to find the file you just uploaded. A refresh of the view could be needed to include the latest changes and additions.

Using the WSDL in the MDS Repository in your source code

The last step is to reference to the WSDL in the MDS Repository, since the file has been removed from the local file system. Double click the Exposed Service to open the wizard:

Choose Existing WSDL to select the WSDL from the MDS Repository:

Check the change using the source view. In the import of the WSDL in the composite.xml there should now be an URL referring to oramds:, like in the example below:

<import namespace="http://xmlns.oracle.com/ABCSImpl/LOCUS/Core/CreateStockChangeLOCUSReqABCSImpl/V1"
        location="oramds:/apps/AIAMetaData/AIAComponents/ApplicationConnectorServiceLibrary/Locus/V1/RequesterABCS/CreateStockChangeLOCUSReqABCSImpl.wsdl"
        importType="wsdl"/>

Connect to SOA Suite on EC2

If you’re not using elastic IP you have to configure WebLogic / SOA Suite running on EC2 to listen to external calls. A good example of such an external call would be: you trying to deploy a composite from the JDeveloper installation on your local PC. If you don’t configure this you’ll run into:

Error sending deployment request to server

java.net.ConnectException: Connection timed out: connect

To configure the External Listen Address log into the WebLogic Console.

  • Select EnvironmentServer
  • Click the server (AdminServer)
  • Click Advanced to show the advanced settings
  • Enter the External Listen Address
  • Restart WebLogic

It can be helpful to also edit your host file to save you from retyping the quite long EC2 host name over and over again.