ant elder wrote:
On Wed, Jul 1, 2009 at 4:57 PM, Mike
Edwards<[email protected]> wrote:
Folks,

I have been using the helloworld-bpel sample as a testcase on 2.x to try to
get the BPEL code working with ODE 1.3.2 and now that I think that I've got
the BPEL code working, I think I've discovered that this BPEL Sample is
actually bogus and needs fixing.  If anyone thinks otherwise, please shout
now before I spend a load of effort making corrections.

There are 2 problems, I believe:

1) The CLIENT code uses a Java interface to describe the service interface
implemented by the BPEL process.  The BPEL process describes the interface
using a WSDL portType (naturally).  Problem is that the Java interface is
*NOT* the JAX-WS mapping of the WSDL.  In particular, the namespaces are
totally screwed up (as I discovered when looking at the actual data received
by the BPEL process).

I believe that this should be fixed by gen-ing the Java interface from the
WSDL using the JAX-WS tools.


I thought the interfaces just needed to be a "compatible", i.e. just
that the operation names match, not the namespace/package name too?

   ...ant

Ant,

So what happens when the target service receives an XML element that is from a namespace that the target has never heard of before?

Where the service is dealing with XML directly, this is a crucial aspect of the data that is delivered to the service. If I switched the BPEL processor to "verify" mode, it would scan the incoming messages for their conformance with the schema - and currently it would reject them out of hand.

Why it gets to be VERY important is in those XPath vectors that are used to pick out specific elements from the incoming/outgoing data structures in relation to BPEL <assign/> operations. If the namespaces don't match, then the XPath expressions always return null and the BPEL process will throw an exception.

Thinking about it, what are we doing for cases where XML is delivered a across the wire (eg Web services protocol) and the target service is a Java component using a Java interface. Do we simply coerce the XML to the required package name or do we honour JAX-WS and convert to a Java package name as specified by JAX-WS? We should do the latter IMHO, since otherwise you COULD be using multiple namespaces and have clashing simple names, that are actually resolved by their being in different packages/XML namespaces.

It is one thing to be "compatible" and not worry about the namespace of the operation names in the interface. It is very different to mess with the datatypes of requests and responses.


Yours,  Mike.

Reply via email to