Archive

Posts Tagged ‘JDeveloper’

Using Quartz with SOA Suite 11g

January 16th, 2011 2 comments

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

December 8th, 2010 No comments

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

November 30th, 2010 No comments

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

November 9th, 2010 3 comments

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

November 4th, 2010 4 comments

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

September 1st, 2010 No comments

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.

Reference binding to Service without WSDL

August 5th, 2010 No comments

For the first time I had to make an integration to a service that had no WSDL deployed with it. Since the (SCA) Composite assumes a WSDL it takes some time to figure out how to realise this. Under default conditions a Reference in a (SCA) Composite in SOA Suite 11g looks something like:

<reference ui:wsdlLocation="SomeDataRef.wsdl"
                   name="SomeDataWebService">
  <interface.wsdl interface="http://ws.deltalounge.net/SomeDataService#wsdl.interface(SomeData)"
                  callbackInterface="http://ws.deltalounge.net/#wsdl.interface(SomeData)"/>
  <binding.ws port="http://ws.deltalounge.net/#wsdl.endpoint(SomeDataService/SomeData_pt)"
              location="http://ws.deltalounge.net/tstservices/SomeDataService?wsdl" />

The location of the binding.ws points to a WSDL. Which is no problem at compile time. However at runtime the WSDL can not be found and an error is raised.
This error can be prevented by pointing to the endpoint instead of to the WSDL. To accomplish this your Reference in a (SCA) Composite in SOA Suite 11g would look something like:

<reference ui:wsdlLocation="SomeDataRef.wsdl"
                   name="SomeDataWebService">
  <interface.wsdl interface="http://ws.deltalounge.net/SomeDataService#wsdl.interface(SomeData)"
                  callbackInterface="http://ws.deltalounge.net/#wsdl.interface(SomeData)"/>
  <binding.ws port="http://ws.deltalounge.net/#wsdl.endpoint(SomeDataService/SomeData_pt)"
              uri="http://ws.deltalounge.net/tst/services/SomeDataService"/>

Now there is an uri in the binding.ws refering to an endpoint.

SOA Suite 11gR1 PS2 notes and blogs

June 17th, 2010 No comments

In the blogpost on the release of SOA Suite 11gR1 PS2, I mentioned a link to the documentation index. Since it hasn’t been update by now, I suggest you go to the middleware documentation page. This page is more up to date and has the link to the web library and download address (Alert! approx. 860 MB) of E14571-01 – the Fusion Middleware Online Documentation Library 11g Release 1 (11.1.1.3.0).

SOA Suite 11gR1 PS2 installation notes

Besides the reference in the documentation library to the Install Guide and the Quick Install Guide, there are several blogs describing the installation of 11.1.1.3. Which is actually a patch on 11.1.1.2:

SOA Suite on Amazon EC2

This week it was announced that BPM 11g R1 is available as an Amazon Machine Image (AMI). This AMI includes SOA Suite 11gR1 Patchset 2 and JDeveloper with the SOA and BPM extension. In AWS filter on 64-bit and put soa-bpm in the search box. This should enable you to find oracle-soa-bpm-11gr1-ps2-4.1-pub. Some of the tips I posted on x SOA Suite in the cloud could be useful here as well.

Running SOA Suite 11g on your workstation

May 19th, 2010 3 comments

Fusion Middleware 11gThere are several advantages when working in a project with Oracle SOA Suite to have a local installation of the SOA Suite on your workstation. While developing and trying bits of code you can’t break other peoples work as you can on a central server. Running FMW 11g on a workstation with say memory on the low end of the spectrum can be challenging. In this blog I’ll show you some additional (to this previous post) measure that my blogless colleague Rob Heikoop came up with.

Rob came up with two things:

  • Create an All in One AdminServer as described on the Oracle wiki. We skipped BAM in the installation Use only one Domain in WLS. You’ll have to combine the admin en the SOA_domain. Running just one domain saves memory.
  • Keep the database centralized. In the central database each developer has it’s own SOA schema that is especially created for him. To do this run the RCU for every developer and use the prefix to reflect for example the developers initials (example of using RCU on slideshare). Not running the database on your workstation saves memory and CPU.

In order to have new developers being able to use this quickly we copy the reference installation (with plug-ins, patches and the works) and alter the configuration:

  • Alter the scripts in the C:\Devel\SOAMiddleware\user_projects\domains\soa_domain\bin directory to reflect your workstation name instead of that of the reference machine. You can do this easily by using an editor like Notepad++ and use Search > Find in files > Replace in files. Otherwise you’ll be stopping your teammates server…. (again sorry Rob)
  • Change the configuration files in C:\Devel\SOAMiddleware\user_projects\domains\soa_domain\config\jdbc to reflect the prefix created especially for you while using the RCU. Again Notepad++ can help you here.

Now you can start the tools:

  • WebLogic Server: C:\Devel\SOAMiddleware\user_projects\domains\soa_domain\bin\startWebLogic.cmd
  • JDeveloper: C:\Devel\SOAMiddleware\jdeveloper\jdeveloper.exe

SOA Suite 11gR1 PS2 released

April 28th, 2010 No comments

Previous I mentioned a preview of the 11g R1 PS2 new features. Here are a few links for this new release – 11.1.1.3.0:

Existing PS1 users simply apply the patch to upgrade to 11.1.1.3.0.

Other releases