Wayne,
There is a more transparent solution that has been implemented as part
of SYNAPSE-200 [1]. As Ruwan suggested, you need to store the WSDL
and XSD documents in a registry you have to set up in Synapse.
However, you don't need to modify them because Synapse is able to
configure a custom resolver that resolves WSDL and XSD locations to
registry entries.
In your Synapse configuration this looks as follows:
<publishWSDL key="conf/bis.wsdl">
<resource location="bis.xsd" key="conf/bis.xsd"/>
</publishWSDL>
In this example, bis.wsdl imports an XSD by using the (relative)
location bis.xsd. The configuration tells Synapse to pull this XSD
from the registry by using "conf/bis.xsd" as key.
This mechanism should work for WSDL (1.1 and 2.0) and XSD imports and
support both relative and absolute URLs. Therefore you should be able
to use something like:
<resource location="http://www.standards.org/standard.wsdl"
key="standard.wsdl"/>
However, probably not all possible cases have been tested yet. If you
encounter any problem, please file a JIRA.
Regards,
Andreas
[1] http://issues.apache.org/jira/browse/SYNAPSE-200
Quoting Wayne Keenan <[EMAIL PROTECTED]>:
Hi
Thanks for the suggestion. I was hoping for a more transparent solution.
The XSD that are directly included by the WSDL include furhter XSD's. I will
be working with umpteen unknown WSDL's as the system grows and so would like
to avoid the maintenance by introducing some kind of transparent and
persisted cache without altering the original WSDL.
This is potentially not directly a Synapse problem, but a XML parser issue,
but I would like to understand how to get the XML parser using a Synapse
compatible repository, if that's one way to solve it.
Regards
Wayne
On Fri, Apr 11, 2008 at 6:13 AM, Ruwan Linton <[EMAIL PROTECTED]>
wrote:
Hi Wayne,
Yes. It is already possible with the Synapse registry. In-order to get
this
functionality you need to enable the registry in the synapse.xml and
change
the wsdl in such a way that the include URIs refer to the XSDs uploaded to
the registry rather than the once available over the internet.
You can enable the registry by putting the following configuration
fragment
to the top of the synapse.xml under the definitions tag;
<registry provider="org.apache.synapse.registry.url.SimpleURLRegistry">
<parameter name="root">file:./registry/</parameter>
<parameter name="cachableDuration">15000</parameter>
</registry>
Thanks,
Ruwan
On Thu, Apr 10, 2008 at 7:28 PM, Wayne Keenan <[EMAIL PROTECTED]>
wrote:
> Hi,
>
> I have an 'industry standard' WSDL published thru a Synapse proxy which
> pulls in about 30 external XSD's off the internet.
> I was wondering if anyone had manage to create an xinclude URI resolver
> that
> would use a local registry as opposed to pulling
> the XSD's off the net.
> I guess a secondary solution would be to introduce something a the
network
> level but I was hoping anyone could point me in the direction of some
sort
> of repository integration for the XML parser.
>
> If this isn't directly possible at the moment, would anyone care to
> outline
> thoughts on the feasibility, possible leverage of existing solutions and
> perhaps touch points in various code modules I might need analyse to
> support
> such functionality in the: XML Parser, Synapse Proxy and Synapse
> Repository.
>
>
> Regards
> Wayne
>
--
Ruwan Linton
http://www.wso2.org - "Oxygenating the Web Services Platform"