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

Reply via email to