Hi, Wayne --
I have a WSDl that tries to pull in XSD from the network. I
understand that
this is not supported in ODE and the suggested practice is to assemble
the XSDs locally.
It isn't the way that users would necessarily like to have the feature
("Just find my stuff!"), but if you believe in "least surprise" as a
design constraint, it's the best choice. Resources can move, be
unavailable, change, etc. It's better to have the user make explicit
choices.
You *could* try to engineer in a feature that would supply a different
ResourceFinder implementation to the compiler (via the
BpelC#setResourceFinger) and actually fetch WSDL/schema, but that will
surely open at least one can of worms. Maybe a --resource-finder-
fqcn=org.foo.Finder and then require a default constructor?
I will do so, but I would like to avoid altering the WSDL at all
costs, as
it includes many XSD's, and those XSD's pull in further XSD's
recursively.
I was thinking it would be ideal if ODE supported mapping of the
imports
URN's to local files, similarly to Apache Synapse. Or is there
something
that does this currently that I am missing? or is it in the works?
Once upon a time, one of ODE's forbears (PXE) did exactly this,
although it used a URI mapping scheme to pack the WSDLs and schemas
all into a big JAR file. Even after you get over the obvious
obstacles (circular references), it's still fraught with peril around
target namespace versus location URIs for schema references, relative
versus absolute URIs and base URIs, etc.
Ode uses the import functionality native to WSDL and BPEL to get the
job done; deploy.xml references processes that reference WSDL and
schema documents, and the default there is to relativize all URIs and
omit anything that doesn't fit that mold. (Matthieu or Alex correct
me if I'm wrong.)
Also, can anyone recommend a tool to pull down the whole lot in the
1st
place?
I've used wget with the --recursive flag for that purpose.
-- Paul