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.
Regards,
Alexey