Saturday, January 29, 2011

Cheap SOA Scheduler with SOA Suite

We have discussed in another post some possibilities to create a scheduler in SOA Suite. They are all very complicated.

A cheap and dirty way to trigger a BPEL process at regular intervals is creating a TRIGGERME table with a field STATUS, and using a DBAdapter in the Exposed Services lane with a "Poll for new or updated rows" option, and using the same value for UNREAD and READ value in the STATUS field.
You can set the frequency of the polling to anything you want.

This pattern is valid only for regular scheduling with no control on the starting time, so it's really a raw scheduler.

Friday, January 28, 2011

Basta Berlusconi

Enough is enough.

oracle.fabric.common.FabricDeploymentException: Unable to register service. {rootCauses=[]}

You get this message when trying to deploy a composite to the SOAServer, and there is no way to get more info from the log...

If you go up in the stdout, you finally find the reason:

28-Jan-2011 12:17:27 o'clock WET Error oracle.integration.platform SOA-20003 Unable to register service.
oracle.webservices.provider.ProviderException: oracle.webservices.provider.ProviderException: No service {}BookCallbackService_2 defined in the WSDL

In fact the service name in the WSDL is BookCallbackService, and the _2 has been added by JDeveloper unbeknown to me. I had this problem countless times, and I really believe this can be handled better.

This is what you find in the log files:

Caused By: oracle.fabric.common.FabricDeploymentException: Unable to register service. {rootCauses=[]}
at oracle.integration.platform.blocks.soap.WebServiceEntryBindingComponent.load(
at oracle.integration.platform.blocks.soap.WebServiceEntryBindingComponent.load(
at oracle.integration.platform.blocks.deploy.CompositeDeploymentConnection.deployServices(
at oracle.integration.platform.blocks.deploy.CompositeDeploymentConnection.deploy(
at oracle.integration.platform.blocks.deploy.CompositeDeploymentManagerImpl.initDeployment(
at oracle.integration.platform.blocks.deploy.CompositeDeploymentManagerImpl.load(
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

Thursday, January 27, 2011

Web Service Service in a SOA Composite with SOA Suite

Interestingly, you must call the exposed service the same way you call the service in the WSLD - the published service name will match the name you give to the component, and should match the service name in the WSDL.

I have discovered that if you change the name later, Jdeveloper doesn't adjust the " port" clause in the service definition inside the composite.xml. You must fix it manually otherwise you will never be able to deploy your composite (you can build the SAR file but not deploy.... :o( ) Authentication denied: Boot identity not valid

in reality, not necessarily the username/passowrd in the are wrong..... it could either be that the MS cannot connect to the Admin to verify the identity, or that the MS own LDAP files are corrupted or obsolete. Removing the LDAP files of the MS can help.

this is the complete message:

<Jan 27, 2011 10:30:03 AM GMT> <Critical> <WebLogicServer> <BEA-000386> <Server subsystem failed. Reason: Authentication denied: Boot identity not valid; The user name and/or password from the boot identity file ( is not valid. The boot identity may have been changed since the boot identity file was created. Please edit and update the boot identity file with the proper values of username and password. The first time the updated boot identity file is used to start the server, these new values are encrypted. Authentication denied: Boot identity not valid; The user name and/or password from the boot identity file ( is not valid. The boot identity may have been changed since the boot identity file was created. Please edit and update the boot identity file with the proper values of username and password. The first time the updated boot identity file is used to start the server, these new values are encrypted.
Truncated. see log file for complete stacktrace
Caused By: [Security:090303]Authentication Failed: User weblogic [Security:090295]caught unexpected exception
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Truncated. see log file for complete stacktrace
<Jan 27, 2011 10:30:03 AM GMT> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to FAILED>
<Jan 27, 2011 10:30:03 AM GMT> <Error> <WebLogicServer> <BEA-000383> <A critical service failed. The server will shut itself down>

As found elsewhere, the recipe is:

Follow the following steps:
1: remove the file completely from the managed server directory.
2: remove the ManagedServerDir/data/ldap directory completely.
3: Always keep backup of files before removing it.
4: Now try to start the server from the command prompt and provide the username/password used to login to the Admin Console.

Remember also - if you use nodemanager - to change the encrypted password in ./servers/myserver/data/nodemanager/

XSL transformation: source parts or variables are either simple type or complex type, thus cannot be used to create mapper file

some hint on this here

I was trying to use a variable
variable name="currentLine" type="ns1:Preactivation"

with ns1:Preactivation defined in a XSD. This is not accepted (don't ask me why,
SOA has reasons that the reason itself doesn't have).

If you change a WSDL and add an element of that type:
xs:element name="Preactivation" type="Preactivation"

and you declare the variable as of "element" type:

variable name="currentLine" element="ns1:Preactivation"

then the XSL mapping is happy to accept it.

WARNING: if you change the File Adapter that generated that WSDL, your element will be gone....

XML allergy

My frustration towards anything which is built on XML is growing to incommensurable height.

I could appreciate in the last few years an immense loss in productivity and maintainability in any project who - in one way or the other - has ended up using XML for its internal representation of data, rules, logic, dependencies etc.

Loose coupling means, basically, no control on your data; you lose the capacity to refactor your code; if you change anything you end up having to recode everything from scratch. Everything you do becomes throwaway code, there is no way to reuse, refactor, recycle, encapsulate.

We have been struggling for 2 months to accomplish something that, in pure Java, would have taken not more than 2 days. Using SOAP, XPaths and all the bloody associated technologies, we are not able to put together anything which can even vaguely match our client requirements. If you do something very basic, fine; as soon as you deviate a little from standard patterns, the complexity and difficulty grows exponentially.

XML reminds me of Superciuk, Alan Ford's anti-hero, running on Barbera wine and putting his enemies out of combat with his super-alcoholic breath. Let XML enter your organization, and you will be soon crawling on your knees.

Wednesday, January 26, 2011

SOA Suite enable xsl automapping

It is DEFINITELY a good idea to do it:

Tools/Preferences/XLS Maps/Auto Map/Enable auto map

For some funny reason it's not enabled by default...

Failed to execute countNodes() function : oracle.xml.parser.v2.XMLNodeList cannot be cast to java.lang.String.

An error occurs while processing the XPath expression; the expression is ora:countNodes($inputVariable.payload/ns1:BookLot).
The XPath expression failed to execute; the reason was: Failed to execute countNodes() function : oracle.xml.parser.v2.XMLNodeList cannot be cast to java.lang.String.

the BPEL was:

from ora:countNodes($inputVariable.payload/ns1:BookLot) /from
to $countLots /to

this tells me that the instructions should have been rather of this type:


ora:countNodes documentation:

This function returns size of elements as an integer.The signature of this function is ora:countNodes(variableName, partName?, locationPath?). The arguments are: 1) variableName - the source variable for the data, 2) partName - the part to select from the variable (optional), 3)locationPath - provides an absolute location path (with / meaning the root of the document fragment representing the entire part) to identify the root of a subtree within the document fragment representing the part (optional).

If I use

ora:countNodes('inputVariable', 'payload', '/ns1:BookLot')

I get always 0 in the result.

So I use count($inputVariable.payload/ns1:BookLot)

and I still get 0.

AFTER I put a Mediator between the File Adapter and the BPEL process, the result of count() is correct. Apparently there was some namespace mismatch if I go directly from FileAdapter to BPEL.

Adding a new Source to the BPEL XSL Transformation in SOA Suite doesn't reflect in the oracle-xsl-mapper mapSources

you must delete from XSL and recreate it from scratch.


select count from multiple table

(Select Count(*) From table1),
(Select Count(*) From table2)
from dual;

it works!

Tuesday, January 25, 2011

Its increment does not match its pre-allocation size

25-Jan-2011 19:17:44 o'clock WET Error oracle.soa.bpel.engine.dispatch BEA-000000 failed to handle message faultName: {{}bindingFault}
messageType: {{}RuntimeFaultMessage}
parts: {{summary= summary Exception occured when binding was invoked.
Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'insert' failed due to: DBWriteInteractionSpec Execute Failed Exception.
insert failed. Descriptor name: [BOOK_LOT.BOOKLot].
Caused by Exception [EclipseLink-7027] (Eclipse Persistence Services - 2.1.2.v20101206-r8635): org.eclipse.persistence.exceptions.ValidationException
Exception Description: The sequence named [BOOK_LOT_SEQUENCE] is setup incorrectly. Its increment does not match its pre-allocation size..
Please see the logs for the full DBAdapter logging output prior to this exception. This exception is considered not retriable, likely due to a modelling mistake.
The invoked JCA adapter raised a resource exception.
Please examine the above error message carefully to determine a resolution.
,detail= detail
Exception Description: The sequence named [BOOK_LOT_SEQUENCE] is setup incorrectly. Its increment does not match its pre-allocation size. /detail ,code= code null /code }

the or-mapping file specifies:

            sequence-name BOOK_LOT_SEQUENCE /sequence-name
            sequence-field table="BOOK_LOT" name="ID_BOOK_LOT"/


some more (useless) info on the OR-MAPPING file.

after hours of googling, I found out the solution:

you must change the DBAdapter properties in WebLogic deployments console, make the preallocationSize same as the one used for the sequence (Increment By field):

Create Sequence Book_Lot_Sequence Start With 1 Increment By 1 Nominvalue Nomaxvalue Nocycle Nocache; selectionFailure

the entire error message was:

25-Jan-2011 18:54:26 o'clock WET Error oracle.soa.bpel.engine.xml BEA-000000 faultName: {{
messageType: {{}RuntimeFaultMessage}
at com.collaxa.cube.engine.ext.bpel.common.BPELWMPHelper.evalFromValue(
at com.collaxa.cube.engine.ext.bpel.v1.wmp.BPEL1AssignWMP.__executeStatements(
at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(

going in the BPEL Instance flow trace, the actual error is traced:

Error in evaluate from expression at line "151". The result contains 5 nodes for the XPath expression : "/ns7:Root-Element/ns7:Books/ns7:BOOK_NO".

basically I had to specify an index in the XPath to return only 1 element....

If you don't provide a fault handler, the actual cause is not logged in the logs...

Life is too short for the wrong job

OSB Stubs implementing asynchronous callback

I needed to implement a stub acting as follows:

1) request-reply (the reply sends back an ACK)
2) asynchronous callback 10 seconds later to send the response to the request made in point 1

Of course there are zillion of solutions... Citrus Framework, Asynchronous BPEL, a WS with a separate thread to process the callback, a JMS queue...

I decided the - for me - simplest solution: in the main PS, publish to a Callback PS which does a Java Callout to a Thread.sleep(10000), then routes the callback.
Publish is a non blocking operation (in most circumstances, unless you do HTTP with a QoS "exactly once").

It works like a charm. I don't know how OSB implements this non-blocking operation internally, nor which impact a Thread.sleep() has on the bus.... time will tell.... anyway it doesn't go to production, so it doesn't have to be a robust solution.

Sunday, January 23, 2011

the version of incoming SOAP message does not match the one returned from provider: FabricProvider

The fault code value says "env:VersionMismatch"

The entire stacktrace is:

Error oracle.webservices.service OWS-04086 the version of incoming SOAP message does not match the one returned from provider: FabricProvider
at oracle.integration.platform.blocks.soap.FabricProviderServlet.doPost(
at javax.servlet.http.HttpServlet.service(
at javax.servlet.http.HttpServlet.service(

OWS-04086: {0}
Cause: An unexpected error occured
Action: None

Level: 1


Impact: Configuration

I have literally NO CLUE. Probably I am passing a SOAP 1.2 to SOA Suite, and it returns me a SOAP 1.1. I will figure this out...

Here it says:

If a SOAP node receives a message whose version is not supported it MUST generate a fault (see 5.4 SOAP Fault) with a Value of Code set to "env:VersionMismatch".

Also here it says:
A SOAP/1.1 node receiving a SOAP Version 1.2 message will according to SOAP/1.1 generate a version mismatch SOAP fault based on a SOAP/1.1 message construct.

The class is in C:\Oracle1\Middleware\oracle_common\modules\oracle.webservices_11.1.1\wsserver.jar

Unfortunately, by looking at the code of this class, there is no way to set a debug flag to trace the message returned.

SOAP1.1 uses
SOAP1.2 uses

If I change the NS of my message to
I get:

oracle.fabric.common.FabricException: Mime Header Content-Type: application/soap+xml requires SOAP envelope namespace: Mime Header Content-Type: application/soap+xml requires SOAP envelope namespace:

which makes sense since the WSDL is a SOAP 1.2 and hence the WebService uses 1.2 headers - which are not compatible with 1.1

We have a real issue here for support of SOAP 1.2 services in SOA Suite- evidently come internal component is only SOAP 1.1 compliant and doesn't recognize SOAP 1.2 messages.

oracle.adf.rc.exception.MissingParameterException: required parameter [base] is missing or null

oracle.adf.rc.exception.MissingParameterException: required parameter [base] is missing or null at oracle.adf.rc.util.CatalogUtils.checkNotNull

This SOA Suite runs me crazy.... Everything seems to be running fine, but I am unable to connect to the Application Server and deploy stuff from JDeveloper....

Saturday, January 22, 2011

Wonderful Morocco

Here at JMA we don't spend all the time coding or reading IT books or swearing against SOAP, XML and WSDL. Once in a while we remember that there is a wonderful world out there.

I have spent my last 2 months in Morocco. It's a wonderful country and the people here are very open minded, friendly and helpful. Almost everybody here can speak fluent French, so no communication issues. Probably with Spanish you can also get by. English is less common.

I live in Casablanca Medina and I love the atmosphere. It's a bit like living in the Middle Ages, I think little has changed in the last 100 years here. Plenty of life in the street until late, bars are fully packed with people socializing and watching together TV, cars are NOT allowed (and this is my favorite spot, I hate cars).

The rest of Casablanca is simply appalling, too modern, a concrete jungle, and extremely polluted. I would suggest seeing Hassan II Mosque - very inspiring, next to the ocean, the waves have a soothing effect on my soul.
Also the Houbous quarter is nice, with Palais Royal and the traditional street market.

Rabat is much more quiet, don't miss:

Kasbah of the Udayas,
Archaeological Museum

Marrakesh is a very enjoyable city, although you will be stopped continuously in the street by street sellers. Remember to always bargain the price, the first price is always at least 3 times the regular price. You can walk for hours in its narrow streets without feeling bored.

A trip to Meknes is very rewarding, particularly nice its Medina full of Berber traditions, the impressive Bab Mansour gate, the immense Royal stables;
at 30 minutes by taxi there is
Volubilis, definitely worth a visit both for the Roman Ruins and for the beautiful view on the hills.

Volubilis Ruins

Fes is extraordinary city, there you can admire many Madrassas and Temples. Its tanneries are very impressive, you can admire the entire industrial process and feel lucky your profession is not the tanner.

Ifrane was definitely disappointing, the High Atlas is no competitor for Italian Alps, the mountains are more like highlands and the landscape quite boring, forests are small and sparse, and Ifrane city very modern and dull. I walked 10 minutes in its street and run away.

Some travelling tips:

inside the Casablanca Medina there are many cheap (10 Euros or less) hotels: the IH Youth Hostel, Hotel Des Amis, La Victoire, Candide.... they are decent, comfortable, the only problem is no hot water - but you can get a hot shower in some Hammam for 1 Euro.
In Medinas, often rooms have no electricity plugs.

Trains are excellent (see and VERY cheap.
Many buses are run by CTM - I have never taken them.

In Casablanca you can find "petit taxis" and "grand taxis", the former are RED and more expensive, the latter are Mercedes, collective (6 people) and less expensive.

From Meknes to Volubilis you can take a collective taxi for 2.5 Euros. Same price from Meknes to Ifrane (60 Km).

A few taxi drivers will try to overcharge you - react firmly and invoke the meter. In the worst case say that you want a policeman to settle the case.

Friday, January 21, 2011

How to repair a broken Ethernet RJ45 plug


seems to be the universal reference on this topic, the Zen Master of Plug fixing...
I will practice soon myself this new art... I can't stand losing connection every time someone touches my cable....

On the other hand, it's really sad how most companies that do IT don't even bother to buy a 10 Euros crimper and some wireless routers... I keep noticing that even a 15 years old kid has better IT equipment at home than most IT development premises. This is one of the many, many sad sides of our profession.

package body "DEV_MDS.MDS_INTERNAL_SHREDDED" has errors

after upgrading from to, I get this error:

oracle.mds.exception.MDSExceptionList: MDS-01329: unable to load element "persistence-config"
MDS-01370: MetadataStore configuration for metadata-store-usage "OWSM_TargetRepos" is invalid.
ORA-04063: package body "DEV_MDS.MDS_INTERNAL_SHREDDED" has errors
ORA-06508: PL/SQL: could not find program unit being called: "DEV_MDS.MDS_INTERNAL_SHREDDED"
ORA-06512: at line 1

even if I drop the schemas and create again, I still have the problem. I tried reinstalling SOASuite, nothing.

I have uninstalled OracleXE, reinstalled it, before I run RCU I do:


and :

run SQLPlus
conn system/oracle (or whatever password)
show parameter processes

by default “processes” should be 40. We should make it 300:

alter system set processes=300 scope=spfile;

conn / as sysdba
shutdown immediate


conn / as sysdba

show parameter sga

(sga_target should be 768MB)
alter system set sga_target=350M scope=spfile;
alter system set sga_max_size=350M scope=spfile;
shutdown immediate

and it works....

If you still get errors, open the 3 MDS packages in Oracle SQL Developer and recompile them, you should get rid of the MDS SHREDDED bla error message

Lesson learned:
a) always wait a couple of weeks from a software release before you install the product yourself
b) choose a volunteer to perform the installation, and give the green light to the others only after he has successfully tested the product

Oracle Drop Database

this should do the job:

sqlplus "sys as sysdba"
shutdown abort;
startup mount exclusive restrict;
drop database;

WSM-06219 oracle.wsm.policymanager.accessor.BeanAccessor warning

oracle.wsm.resources.policyaccess WSM-06219 A task scheduler was not available for configuring the oracle.wsm.policymanager.accessor.BeanAccessor repository accessor for the default context.

this warning appears during startup of WLS/OSB/SOASuite server

After the server goes in RUNNING state, it disappears.

For the time being I will simply ignore it.

RCU : failing prerequisites creating ESS schema

oracle.sysman.assistants.rcu.backend.validation.PrereqException: RCU-6083:Failed - Check prerequisites requirement for selected component:ESS
Please refer to RCU log at C:\temp\rcuHome\rcu\log\logdir.2011-01-21_09-53\rcu.log for details.
at oracle.sysman.assistants.rcu.backend.validation.PrereqEvaluator.executePrereqTask(
at oracle.sysman.assistants.rcu.backend.task.PrereqTask.execute(

the funny thing is that the log says to refer to itself for details.... but provides no details!

I see here other people struggling with this issue.

Luckily I don't need ESS, so I simply removed it and RCU worked....

Thursday, January 20, 2011

Property setBatchSize is not defined for oracle.tip.adapter.file.inbound.FileActivationSpec

Invalid JCA transport endpoint configuration, exception: javax.resource.ResourceException: BINDING.JCA-12532 Cannot set JCA WSDL Property. Error while setting JCA WSDL Property. Property setBatchSize is not defined for oracle.tip.adapter.file.inbound.FileActivationSpec Please verify the spelling of the property.

Unfortunately in OSB BatchSize is not supported (unlike in SOA Suite).
I think in it is.

OSB parsing a file into XML with FileAdapter: memory consumption

this is the behaviour of memory every time we parse a 5MB file into XML.
Basically 5MB of info generates a 500 MB spike in the heap memory - luckily garbage collected quite soon.

A 10000% increase in memory occupation in not such a great idea.

The believers that XML is the next best thing after sex should probably change their mind. And not in the sense that XML is better than sex.

BEA-000337 StuckThreadMaxTime with OSB FileAdapter

20-Jan-2011 10:57:20 o'clock WET Error WebLogicServer BEA-000337 [STUCK] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "602" seconds working on the request "$WorkAdapterImpl@57134e4b", which is more than the configured time (StuckThreadMaxTime) of "600" seconds. Stack trace:
java.lang.Object.wait(Native Method)

I keep getting this error.

Besides, the number of Stuck Threads increases with time, all of them are$WorkAdapterImpl@blablabla

Another stack trace is:$

Here it solves the problem:

basically it suggests to create a WorkManager "FilesPollingWorkManager" for the FileAdapter polling thread and setting "Ignore Stuck Threads" to true, and assigning this FilesPollingWorkManager as "Dispatch-Policy" to the File Polling Proxy Service

FileAdapter claiming that a message is malformed

20-Jan-2011 10:10:32 o'clock WET warning jca_framework_and_adapter BEA-000000 onReject: The resource adapter 'File Adapter' requested handling of a malformed inbound message. However, the following activation property has not been defined: 'rejectedMessageHandlers'. Please define it and redeploy. Will use the default Rejection Directory file://jca\Read\rejectedMessages for now.

20-Jan-2011 10:10:32 o'clock WET warning jca_framework_and_adapter BEA-000000 onReject: Sending invalid inbound message to Rejection Handler:

This happens when processing a 40000 lines file (5 MB of info).
The funny thing is that if I halve the number of lines, it works. And the second half of the file is exactly the same as the first. So I am sure it's NOT a problem with the data format, but rather with the message size.
No further clue is provided by the adapter.

Here look at 25.1.5 Logging for how to turn on debug flag (go to
C:\Oracle1\Middleware\user_projects\domains\soadev\alsbdebug.xml and set
alsb-jca-framework-adapter-debug to true, then restart the server)

but to no avail.

Where is file://jca\Read\rejectedMessages defined?
Here they give some clues, like setting

property name="rejectedMessageHandlers" to file://C:/orabpel/samples/test/errorTest
but it's not accepted by FileAdapter.

see also here the official Oracle doc.

The adapter implementation is oracle.tip.adapter.file.inbound.FileActivationSpec

See here for a list of properties for the Adapter.

Here an interesting post on the OSB/Batch Reading topic.

At last I use these settings:

<adapter-config name="MyFileReader" adapter="File Adapter" wsdlLocation="MyFileReader.wsdl" xmlns="">
  <connection-factory location="eis/FileAdapter" UIincludeWildcard="*.txt" adapterRef=""/>
  <endpoint-activation portType="Read_ptt" operation="Read">
    <activation-spec className="oracle.tip.adapter.file.inbound.FileActivationSpec">
      <property name="UseHeaders" value="false"/>
      <property name="PhysicalDirectory" value="C:/acmepoc/myFiles/in"/>
      <property name="Recursive" value="true"/>
      <property name="PublishSize" value="200"/>
       <property name="DeleteFile" value="true"/>
      <property name="IncludeFiles" value=".*\.txt"/>
      <property name="PollingFrequency" value="10"/>
      <property name="MinimumAge" value="0"/>


and I get a beautiful OutOfMemoryException :

JCA_FRAMEWORK_AND_ADAPTER BEA-000000 InboundTranslatorDelegate caught Generic Exception , the Resource Adapter will ignore this
java.lang.OutOfMemoryError: Java heap space

Wednesday, January 19, 2011

JDeveloper File Adapter working in OSB

We imported in OSB the .jca, .wsdl and .xsd files generated by the File Adapter Wizard and Native Format Language in JDeveloper.

Once imported in Eclipse (Import/Import/File System), right click on the JCA file, and "generate service": this will generate a Proxy Service based on JCA.

You can choose to keep your setting in the JCA file, or to customize them in the Proxy Service.

The beautiful thing is that the nxsd extension are recognized and the XML generated exactly as it was run in SOA Suite. I prefer by far NFL than MFL.

Here the official doc for FileAdapter

Got minus one from a read call

weblogic.common.resourcepool.ResourceDeadException: 0:weblogic.common.ResourceException: Could not create pool connection. The DBMS driver exception was: Got minus one from a read call

they suggest:

I also had this kind of error. I suppose that the root cause was the leak of available sessions on the oracle side. My glassfish server had 400-connection jdbc pool size and Oracle 10g had following parameters:
processes = 420
sessions = 467
transactions = 514
Every request to the DB failed with "IO Exception: Got minus one from a read call".
Increasing Oracle values (processes = 450; sessions = 500; transactions = 550) fixed the problem.

Tuesday, January 18, 2011

wls1034 and is out


a great post on the whole upgrade

Here is WebLogic + OEPE, JDeveloper

Here the whole download page.


Server Exception during PPR, #6[[
javax.el.ELException: oracle.sysman.emSDK.webservices.wsdlapi.SoapTestException: null

 at javax.el.BeanELResolver.getValue(
 at javax.el.CompositeELResolver.getValue(
 at com.sun.faces.el.FacesCompositeELResolver.getValue(
 at com.sun.el.parser.AstValue.getValue(
 at com.sun.el.parser.AstNotEqual.getValue(
 at com.sun.el.parser.AstAnd.getValue(


caused by:

java.lang.NullPointerException at oracle.sysman.emSDK.webservices.wsdlparser.OperationInfoImpl.getHttpResponseMessage(
 at oracle.sysman.emas.model.wsmgt.PortName.getResponse(

Testing a Business Rules based composite proves to be quite challenging...
the Enterprise Manager console seems to have difficulties handling it.

A second attempt gives:

A Decision Service of the given name doesnt exist.[[
The component OracleRules1 in composite OBRPerfTest does not expose a service .
Check the services that are exposed by component OracleRules1. If the error persists, contact Oracle Support Services.

Monday, January 17, 2011

SOA Suite, exposing a Decision Service as a Web Service

Drop your Business Rule in the Components lane, code it, then simply click on its handle, drag it to the "Exposed Services" lane and release it. The Web Service interface is magically created.

Here is some doc.

The problem is that when you test it through the EM console, it requires some additional parameters:

The test was not run. Invalid input arguments for the following fields:
name value required
processId value required
processVersion value required
domainId value required
processURL value required
instanceId value required

I think the Decision Service assumes it's running into a BPEL instance, so you must "simulate" all the parameters of a BPEL instance.... :o(

Whatever I enter, I keep getting an exception:

java.lang.Exception: oracle.sysman.emSDK.webservices.wsdlapi.SoapTestException: null at oracle.sysman.emas.model.wsmgt.WSTestModel.invokeOperation( at oracle.sysman.emas.view.wsmgt.WSView.invokeOperation( at oracle.sysman.emas.view.wsmgt.WSView.invokeOperation( at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke( at sun.reflect.DelegatingMethodAccessorImpl.invoke( at java.lang.reflect.Method.invoke( at com.sun.el.parser.AstValue.invoke( at com.sun.el.MethodExpressionImpl.invoke( at org.apache.myfaces.trinidadinternal.taglib.util.MethodExpressionMethodBinding.invoke( at org.apache.myfaces.trinidad.component.UIXComponentBase.broadcastToMethodBinding( at org.apache.myfaces.trinidad.component.UIXCommand.broadcast( at$ at at at at$ at at at at javax.faces.component.UIViewRoot.broadcastEvents( at javax.faces.component.UIViewRoot.processApplication( at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._invokeApplication( at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase( at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute( at javax.faces.webapp.FacesServlet.service( at weblogic.servlet.internal.StubSecurityHelper$ at weblogic.servlet.internal.StubSecurityHelper.invokeServlet( at weblogic.servlet.internal.ServletStubImpl.execute( at weblogic.servlet.internal.TailFilter.doFilter( at weblogic.servlet.internal.FilterChainImpl.doFilter( at at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter( at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter( at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter( at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl( at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter( at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter( at weblogic.servlet.internal.FilterChainImpl.doFilter( at Source) at weblogic.servlet.internal.FilterChainImpl.doFilter( at oracle.sysman.emSDK.license.LicenseFilter.doFilter( at weblogic.servlet.internal.FilterChainImpl.doFilter( at oracle.adf.model.servlet.ADFBindingFilter.doFilter( at weblogic.servlet.internal.FilterChainImpl.doFilter( at oracle.sysman.emas.fwk.MASConnectionFilter.doFilter( at weblogic.servlet.internal.FilterChainImpl.doFilter( at oracle.adf.library.webapp.LibraryFilter.doFilter( at weblogic.servlet.internal.FilterChainImpl.doFilter( at at weblogic.servlet.internal.FilterChainImpl.doFilter( at at weblogic.servlet.internal.FilterChainImpl.doFilter( at at weblogic.servlet.internal.FilterChainImpl.doFilter( at at weblogic.servlet.internal.FilterChainImpl.doFilter( at oracle.dms.wls.DMSServletFilter.doFilter( at weblogic.servlet.internal.FilterChainImpl.doFilter( at weblogic.servlet.internal.RequestEventsFilter.doFilter( at weblogic.servlet.internal.FilterChainImpl.doFilter( at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.doIt( at weblogic.servlet.internal.WebAppServletContext$ at at at weblogic.servlet.internal.WebAppServletContext.securedExecute( at weblogic.servlet.internal.WebAppServletContext.execute( at at at Caused by: oracle.sysman.emSDK.webservices.wsdlapi.SoapTestException: null at oracle.sysman.emSDK.webservices.wsdlapi.dispatch.DispatchUtil.invoke( at oracle.sysman.emSDK.webservices.wsdlparser.OperationInfoImpl.invokeWithDispatch( at oracle.sysman.emas.model.wsmgt.PortName.invokeOperation( at oracle.sysman.emas.model.wsmgt.WSTestModel.invokeOperation( ... 69 more Caused by: at at at at at oracle.sysman.emSDK.webservices.wsdlapi.dispatch.DispatchUtil.invoke( ... 72 more 

InteractionSpec parameter has invalid value of oracle.tip.adapter.file.outbound.ChunkedInteractionSpec

I get this error message when I open this FileAdapter:



Here it seems like oracle.tip.adapter.file.outbound.ChunkedInteractionSpec is a perfectly valid value...

The funny thing is that it deploys just fine.... it MIGHT be a problem in the JDev version number, the application was developed by another developer...

Anyway here it says that in the ChunkSize property has been added to the File Adapter, so that you can be fed morcels of file without actually having to pull the info in chunked mode.

Thursday, January 13, 2011

BEA-395133: XQuery expression evaluates to an invalid XQuery resource name

see here for message catalogue

You were trying to use Dynamic XQuery invocation and you got this message.
Yet the XQuery exists. What can be wrong.

The doc is here.

In fact, the problem was that one should specify the XQuery WITHOUT the .xq at the end :o) - idiot me.

Designing and Modelling vs Coding

This is my 2 cents wisdom on the oldest topic on IT: should you DESIGN AND MODEL everything upfront, or should you just CODE IT and refactor it as you progress in the task?

I have no doubt that IT work is like LIFE - in the biological sense of it:

a LOT of microchoices made IN ACTION, a continuous adaptation to an EVER CHANGING WORLD, but with a few important principles to guide us: ROBUSTNESS, ABILITY TO REFACTOR AND RECYCLE, AGILITY IN CHANGE, ABSOLUTE CLARITY IN INTERFACES AND CONTRACTS.

Any living creature is designed with these same principles. Some strange creatures do live without any agility (PANDAS), but often they are doomed for extinction as the environment changes. The key to the success of human as living creatures is their ADAPTABILITY.

Emotions play en enormous role in a project. Enthusiastic people achieve so much more that bored, 9-5 workers waiting only for Friday 5pm to come. And NOTHING motivates people more than SEEING ACTUAL WORKING CODE, and being able to model it and improve it.

So my motto is:
while (not (dead or retired) ) {
  analyze a little; 
  design a little; 
  code a little; 
  test a little;
  thread.sleep(8 hours);
  randomly enjoy your life outside the computer world;


I get this while iterating on a collection (a regular java.lang.Vector) and at the same time changing it:

for (PreactivationCallbackTask task : tasks) {
tasks.remove(task); // changing the collection while you iterate is not allowed

I get this:

at java.util.AbstractList$Itr.checkForComodification(
at java.util.AbstractList$

here the javadoc for java.util.ConcurrentModificationException

The only way out is to change the collection OUTSIDE the for loop.

This post provides an excellent explanation.

Tuesday, January 11, 2011

Erik Lynch's Tree of Life

I saw this drawing in 1999, in a Californian school posted on a billboard. I was so fascinated that I took immediately a picture. I find this drawing one of the most brilliant pieces of art I have ever seen in my life.

I hope Erik Lynch doesn't mind if I reproduce here his masterpiece. God bless him.

Something very similar has been drawn by another Northern American artist:

SOA-20003 unable to register service

SOA-20003 unable to register service
oracle.webservices.provider.ProviderException: java.lang.NullPointerException

This error occurs while I try to deploy a composite.

SOA-20003: Unable to register service.
    Cause: There was an issue during the attempt to create the endpoint for the composite service
    Action: Make sure that the WSDL either has a service and port that correspond to the values specified in the composite file or that there is no empty service node in the WSDL

    Level: 1

    Type: ERROR

    Impact: Deployment

The problem in fact was that I coded by hand the WSDL (naughty me) and I put a service name not matching the Web Service name created in the Composite.

I recreated the WSDL using the JDeveloper wizard associated to the Composite Exposed Services for WS Adapter, and it works.

This wizard doesn't produce a "service" entry in the WSDL - this might be the reason for the failure, the Composite doesn't expect to have a "complete" WSDL, the Engine will take care of generating a true one.

Especially, forget about imposing an Endpoint URL by using the "soap:address location" in the wsdl:service/wsdl:port section: the SOA Composite will generate its endpoint using his own logic.

Sunday, January 9, 2011


if you invoke a BPEL process, the inputVariable will be a com.collaxa.cube.engine.types.bpel.CXMessageVariable , and if you do toString you get:


so it looks like a hashTable kind of thingie. Just get the element with key "payload" and you can work as usual with a XMLElement.

Normally you would get the XmlElement with this function:


Saturday, January 8, 2011

BPEL how to loop over elements of a collection

In BPEL, if you want to get the value of an indexed variable, like in this XPath:


you must do some acrobatics using a "concat" function:

bpws:getVariableData('Invoke_ReadLinesForLot_ReadLinesForLotSelect_OutputVariable','PreactivationCollection',concat('/ns5:PreactivationCollection/ns5:Preactivation[', bpws:getVariableData('lineIndex'), ']'))"

This is the mess you end up entangled with when, instead of using a proper programming language (DSL), you resort to XML to implement your programming needs.

BPEL is yet another EXTREMELY poor implementation of something which otherwise contains powerful programming paradigms.

Friday, January 7, 2011

oracle.xml.parser.v2.XMLElement, debugging and logging in BPEL

oracle.xml.parser.v2.XMLElement is the result of any XPath operation on a variable. Obvious, it's the way SOA Suite internally represents the payload and complex variables.

You can embed a Java activity like this:

oracle.xml.parser.v2.XMLElement currentLine = (oracle.xml.parser.v2.XMLElement)getVariableData("currentLine");     
System.out.println("currentLine=" + currentLine);

If you want to print the XML, here is how:

oracle.xml.parser.v2.XMLElement currentLine = (oracle.xml.parser.v2.XMLElement)getVariableData("currentLine");     
System.out.println("currentLine=" + currentLine);
addAuditTrailEntry("currentLine is: " + currentLine); writer = new;
try {
  String payloadAsString = writer.toString();
  System.out.println("currentLine=" + payloadAsString);

catch (Exception e) {

See also here for more on logging in BPEL.

SOAP: the S stands for Simple

hahaha this is really hilarious. The people who have invented SOAP should be crucified by their balls - assuming they have 2 - and hung with their guts - sure they have, it takes guts to impose to the world such a pathetic underspecified underperforming ball of mud.

Failed to compile bpel generated classes

Error(38,37): Failed to compile bpel generated classes.
failure to compile the generated BPEL classes for BPEL process "BPELProcess3" of composite "default/PVPreactivationPhase2!1.0"
The class path setting is incorrect.
Ensure that the class path is set correctly. If this happens on the server side, verify that the custom classes or jars which this BPEL process is depending on are deployed correctly. Also verify that the run time is using the same release/version.

here some other people facing a similar issue

I do this:

ant -verbose -f ant-sca-compile.xml -Dscac.input=C:/

the classpath is a monster:

C:\Program Files\Java\jdk1.6.0_21\lib\tools.jar

the error message suggests to open C:\Users\pierre\AppData\Local\Temp\out.err

there I find only:

WARNING: CubeProcessor.compileGeneratedClasses() classpath is: C:\JDeveloper\mywork\PVPreactivation\PVPreactivationPhase2\SCA-INF\classes;C:\JDeveloper\mywork\PVPreactivation\PVPreactivationPhase2\SCA-INF\gen-classes;C:\Oracle1\Middleware\jdeveloper\..\oracle_common\modules\commonj.sdo_2.1.0.jar;C:\Oracle1\Middleware\jdeveloper\..\oracle_common\modules\oracle.fabriccommon_11.1.1\fabric-common.jar;C:\Oracle1\Middleware\jdeveloper\..\oracle_common\modules\oracle.xdk_11.1.0\xmlparserv2.jar;C:\Oracle1\Middleware\jdeveloper\soa\modules\oracle.soa.bpel_11.1.1\orabpel-common.jar;C:\Oracle1\Middleware\jdeveloper\soa\modules\oracle.soa.bpel_11.1.1\orabpel-exts.jar;C:\Oracle1\Middleware\jdeveloper\soa\modules\oracle.soa.bpel_11.1.1\orabpel-thirdparty.jar;C:\Oracle1\Middleware\jdeveloper\soa\modules\oracle.soa.bpel_11.1.1\orabpel-validator.jar;C:\Oracle1\Middleware\jdeveloper\soa\modules\oracle.soa.bpel_11.1.1\orabpel.jar;C:\Oracle1\Middleware\jdeveloper\soa\modules\oracle.soa.fabric_11.1.1\fabric-client.jar;C:\Oracle1\Middleware\jdeveloper\soa\modules\oracle.soa.fabric_11.1.1\fabric-ext.jar;C:\Oracle1\Middleware\jdeveloper\soa\modules\oracle.soa.fabric_11.1.1\fabric-runtime.jar;C:\Oracle1\Middleware\jdeveloper\soa\modules\oracle.soa.fabric_11.1.1\oracle.soa.fabric.jar;C:\Oracle1\Middleware\jdeveloper\soa\modules\oracle.soa.fabric_11.1.1\soa-infra-tools.jar;C:\Oracle1\Middleware\jdeveloper\soa\modules\oracle.soa.ext_11.1.1\classes/;C:\Oracle1\Middleware\jdeveloper\..\oracle_common\soa\modules\oracle.soa.mgmt_11.1.1\soa-infra-mgmt.jar

and in the same directory, in out.xml, I find:


but in fact only in the stdout of the ant console you can find the actual cause of error (a missing variable in a Java scriptlet). Fix the Java Scriptlet compilation problem and the error will go away.

C:\Oracle1\Middleware\jdeveloper\integration\seed\soa\configuration\bpm-xpath-functions-config.xml (The system cannot find the file specified)

C:\Oracle1\Middleware\jdeveloper\integration\seed\soa\configuration\bpm-xpath-functions-config.xml (The system cannot find the file specified)

wft???? I hope it's not impacting anything....

A BPEL book for the coming Spring: WS-BPEL 2.0 with Oracle SOA Suite 11g

WS-BPEL 2.0 for SOA Composite Applications with Oracle SOA Suite 11g

Many more books on the BPEL topic here

Reading this book on "BPEL with SOA Suite" was a major source of inspiration, but it definitely requires some background.
If you are looking for a quick tutorial on how to write your first HelloWorld BPEL process,you might look elsewhere, like "Getting Started With Oracle SOA Suite 11g R1". "BPEL with SOA Suite" goes very deep in the strategic and historical reasons behind the creation of BPEL. It focuses mostly on those programming paradigms missing from traditional languages and which should have driven your company to the adoption of a BPEL engine and of a Service Bus. Compensation, parallel flows, correlation of asynchronous flows are illustrated here to a dizzying technical depth.
In a previous project there was a lot of debate on what should go in our BPEL and what in the SB (OSB) and how to integrate the two: in the chapters on ESB OSB I found clear usage patterns for both.
The usually overlooked subject of Repositories and Registries is covered with attention to the needs of developers and delivery managers.

For the first time I understood the differences between orchestration and choreography, how to approach fault handling and compensation,
how to apply the interoperability between BPMN and BPEL.
There are several example illustrating correlation,compensation,joins, which are advanced enough to make a BPEL guru out of you once you have understood them.

On the whole I felt that this books is a good compromise between an academic conceptual approach of integration issues - very useful from an architectural standpoint - and a more hands-on, let's-play-with-the-tool approach very appreciated by developers. It's an immense source of "pearls of wisdom" and it adopts a very refined technical vocabulary. Master the concepts illustrated in this book and you will be top notch.

Thursday, January 6, 2011

Event Delivery Network

I love the concept of an Event-Driven SOA. Events decouple producers and consumers, they allow multiple consumers, they allow asynchronous interaction etc.

here an entire chapter on the EDN topic

here how to create an Event with a PL-SQL procedure.

The mystery so far is how to generate an Event from Java....apart the horrendous command line interface.... probably for JMS based events there is another way....

Sunday, January 2, 2011

A book for 2011 : The TCP/IP Guide by Kozierok

Fascinating quote: "the future of information technology lies not so much in bigger and faster computers, but in better ways of exchanging information between them".

The book seems to be really an awesome resource for Network Specialists, but it's 1600 pages.... more than what average developer is actually ready to read....probably a version "ad usum delphini" would be helpful...