Hi john,

This is expected, even though Synapse proxy services lets you create a proxy
with the '/' character, it is a special character for the URL based
dispatching because it breaks the splits the String representation of the
URL from the '/' character to find the service. Due to the presence of the
'/' in the name of the service, URL based dispatcher will not be able to
dispatch this because it only sees the version number as the service name
after the splitting.

Workaround for this is either to eliminate the '/' character and use some
other character instead or send the version as a parameter, for example

http://synserv/soap/2007-10-10/MyService ==>
http://synserv/soap/2007-10-10_MyService<http://synserv/soap/2007-10-10/MyService>
or
http://synserv/soap/2007-10-10/MyService ==>
http://synserv/soap/MyService?<http://synserv/soap/2007-10-10/MyService>
version=2007-10-10 <http://synserv/soap/2007-10-10/MyService>

Even here for the second case you will have to use a router inside the
mediation to decide the correct service, but this approach is more towards
the HTTP semantics.

Will it be possible for you to use one of these strategies?

Thanks,
Ruwan


On Wed, Mar 5, 2008 at 11:28 PM, J Bouck <[EMAIL PROTECTED]> wrote:

> I would like to use synapse to make available several versions of a
> web service available at the same time in the same synapse server.  It
> would seem to me that a logical way to version the web services is by
> date of deployment.  I would like to define synapse to have proxies
> defined like:
> http://synserv/soap/2007-10-10/MyService -> version 1 of the service
> http://synserv/soap/2008-01-10/MyService  -> version 2 of the service
> http://synserv/soap/2008-03-05/MyService -> version 3 of the service
> I know that I could do content-based versioning
> (http://wso2.org/library/2611), but I feel that versioning at the
> url/endpoint is the simpler solution.  Synapse 1.1.1 will let you
> define a proxy service called "2008-03-05/MyService",  but at run-time
> and discovery it does nothing but Accept (202) or redirect (302) you
> to the http://synserv/soap location.  It seems like a bug to me.
> Synapse or Axis2 doesn't seem to like services with a slash (/) in
> them like:
> <proxy name="2008-03-05/StockQuoteProxy" transports="https">
>      <target inSequence="inbound" outSequence="outbound"
> faultSequence="textfault"/>
>      <publishWSDL
>
>  uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
> </proxy>
>
> Any suggestions on a url-based versioning scheme that can be done with
> synapse configuration?
>
> ~john
>



-- 
Ruwan Linton
http://www.wso2.org - "Oxygenating the Web Services Platform"

Reply via email to