Angelos PaaS4SaaS Blog

Friday, 1 April 2011

Two useful links (Continuous Integration for SOA and Custom BPM11g Worklists)

 

Every now and again I see some useful links which I think is worth sharing..

 

1. How to do continuous integration  (Hudson,CruiseControl + Ant etc) for SOA , link

and

2. How to create custom worklist pages, for the BPM11g product. link

 

both certainly worth looking at.

Wednesday, 9 February 2011

SOASuite 11.1.1.4 : Error Logging into BPM11g Composer?

Hey all, I’ve just installed SOA Suite 11.1.1.4 and noticed a few funnies which people might hit, thankfully each of them have an easy solution.

 

1. Some applications are installed but dont appear to work?

If when you install SOASuite you may notice that the following applications dont appear to work, however they do appear as deployments in Weblogic Server Console

e.g.  SOA Composer (composer), FMW Welcome Page Application (11.1.0.0.0) and some of the adaptors.

If they appear in the deployments list state as “installed” and not Active, then its likely that they haven't been targeted to a specific server.

image

 

The solution is to target the application the desired managed server , e.g. AdminServer in a development environment.

This is done by selecting the application, tab “Targets”, select all components, Button[change Targets] and select the appropriate server.

This change can be done without restarting the Weblogic Server

2. You might find that when you try to log into the BPM Composer at http://machine:7001/bpm/composer , the login screen will appear but you cant log in.

The error log might mention the following

image

 

The solution to this is two fold,

a) When creating the domain, avoid using 127.0.0.1 as the Listener address, or “Any Addresses”, if this is a development machine create an alias in your /etc/hosts file and then use this alias in the domain creation wizard.

e.g.   my host file contains an entry    

mypc     127.0.0.1

 

And in the Fusion middleware Configuration wizard

image

 

Twill then work!

 

if it still doesnt you can try setting the ServerURL attribute to http://mypc in the SoaInfraMBean instead of blank.

This is accomplished by using Enterprise Manager. Use the System MBean Browser to navigate to Application Defined MBeans->oracle.as.soainfra.config->[ server]->SoaInfraConfig->soa-infra.

Then changing the value of 'ServerURL' to http://mypc

 

Failing that give support a call….

Weblogic 10.3.4 (PS3) nodemanager wont start?

Hi all, well Im back from Australia and one of the things which happened was Oracle announced the PS3 release of oracles SOA & Webcenter products have been released. Now I normally use pre-installed images but I always like to install the products at least once that way I get to see its installation caveats..

Here’s one.

Installation on Windows 7 64bit, 64bit JVM, generic weblogic Server installer.

All worked fine, EXCEPT I cant start the node manager, I get the following error

<08-Feb-2011 17:16:48> <INFO> <Loading domains file: D:\products\wls1034\WLSERV~1.3\common\NODEMA~1\nodemanager.domains>
<08-Feb-2011 17:16:48> <SEVERE> <Fatal error in node manager server>
weblogic.nodemanager.common.ConfigException: Native version is enabled but nodemanager native library could not be loaded
    at weblogic.nodemanager.server.NMServerConfig.initProcessControl(NMServerConfig.java:249)
    at weblogic.nodemanager.server.NMServerConfig.<init>(NMServerConfig.java:190)
    at weblogic.nodemanager.server.NMServer.init(NMServer.java:182)
    at weblogic.nodemanager.server.NMServer.<init>(NMServer.java:148)
    at weblogic.nodemanager.server.NMServer.main(NMServer.java:390)
    at weblogic.NodeManager.main(NodeManager.java:31)
Caused by: java.lang.UnsatisfiedLinkError: D:\products\wls1034\wlserver_10.3\server\native\win\32\nodemanager.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1728)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1028)
    at weblogic.nodemanager.util.WindowsProcessControl.<init>(WindowsProcessControl.java:17)
    at weblogic.nodemanager.util.ProcessControlFactory.getProcessControl(ProcessControlFactory.java:24)
    at weblogic.nodemanager.server.NMServerConfig.initProcessControl(NMServerConfig.java:247)
    ... 5 more

Ok it appears that the node manager has gotten confused and thinks this is a 32bit install of Weblogic Server whereas it is the 64bit install.. Might have been something I did, or didnt do, on installation (e.g. –d64 on the jvm command line), however the workaround is pretty easy.

 

1. Create a file called nodemanager.properties in %WL_HOME%\common\nodemanager

on my machine it was D:\products\wls1034\wlserver_10.3\common\nodemanager

2. Add the following line to it

NativeVersionEnabled=false

3. And start it up!, this will force it not to use .DLL files and use emulation/non native methods instead..

 

 

Wednesday, 12 January 2011

SOA Composite Sensors : Good Practice

 

I was discussing a interesting design problem with a colleague of mine Niall (his blog) on the topic of how to cancel an inflight SOA Composite process.  Obviously one way to do this is to cancel the process from enterprise Manager ( http://hostSmile with tongue outort/em ) , however we were thinking this isnt a “user friendly” way of doing this..

If you look at Nialls blog you’ll see he’s highlighted a number of different APIs which enable you the ability to manipulate the SCA instance, e.g.

  • Code Snippet to purge (delete) an instance
  • How to determine the instanceId from a composite_sensor_value using the “composite_sensor_value” table
  • How to determine a BPEL Process status using the cube_instance table

Now all of these require that you know the instanceId of your SOA Composite, how does one find this out? Well the easiest way of doing this is to create a composite sensor on the SCA component. A composite sensor is simply a way of publishing a piece of business data as part of your composite. The magic here is that you can later query composites based on this value.

So a good best practice is that for any composites you create consider publishing a composite sensor value using a primary key of some sort , e.g. orderId, that way if you need to manipulate/query composites you can easily look up the instanceId using the sensorid.

For information on how to create a composite Sensor id see this documentation link