ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexey Ousov <aou...@gmail.com>
Subject calling BPEL from another BPEL
Date Wed, 26 Nov 2008 13:09:19 GMT
Hello All!
I noticed interesting thing: if one BPEL process calls another BPEL 
process on the same ODE instance, ODE engine recognizes local call and 
routes message straight to calling process without doing HTTP 
serialization/deserialization etc.. Both processes are in-memory 
processes if this important. Is that so? Is it bug or feature? Can it be 
turned off?

This causes some interesting features/bugs in my code.
1. I have authorization handler, which is made in form of 
"org.apache.axis2.engine.Handler". This caller intercepts all outgoing 
calls, and adds authorization information. If BPEL process calls local 
java service, this handler called, and process authorized. But in case 
of inter-process calls this handler never called, so authorization info 
is not added. This is not problem, just feature to remember about.
2. Strange bug. Both caller and calling processes seems to share cached 
data, especially this concerns xslt stylesheets. So if caller and 
calling processes both have xslt stylesheet with *the same name*, doing 
bpws:doXsltTransofrm from both processes with xslt url relative to 
process (just file name) can take wrong stylesheet (in fact stylesheet 
of last deployed process). It took a lot of time to track this down.
3. Cached wsdls are also take place. So if caller and calling processes 
both use same but little modified wsdl (in my case fault names were 
different) BPEL process cannot find fault by name, because wrong wsdl 
were cached and used.


View raw message