You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Dave Kallstrom <da...@gmail.com> on 2007/09/13 20:53:03 UTC

Wsdl Versioning

We have recently migrated our web services offering from xfire to cxf and
everything is going well. Now the issue is that we have several clients who
would like different features and I am wondering how best to accomplish
this. The changes being requested will likely result in a different wsdl so
I would like to be able to version our wsdls with different namespaces. The
question is where do I inspect the wsdl namespace and then how do I provide
different functionality depending on the incoming namespace? I am using
aegis bindings and cxf.xml with the cxf servlet.
Any ideas would be appreciated.

-- 
Dave Kallstrom

Re: Wsdl Versioning

Posted by Glen Mazza <gl...@verizon.net>.
Besides the other links you have been given, you may wish to see how
eBay does it, both in its WSDL and in client calls to it.  eBay updates
their WSDL quite frequently--once or twice per month.

http://www.jroller.com/gmazza/date/20070817

(Note, due to a bug--CXF-945--I'm trying to track down, I haven't been
able to get the eBay WSDL to work with CXF, but I'm assuming that
problem is not related to the versioning system used.)

HTH,
Glen

Am Donnerstag, den 13.09.2007, 13:53 -0500 schrieb Dave Kallstrom:
> We have recently migrated our web services offering from xfire to cxf and
> everything is going well. Now the issue is that we have several clients who
> would like different features and I am wondering how best to accomplish
> this. The changes being requested will likely result in a different wsdl so
> I would like to be able to version our wsdls with different namespaces. The
> question is where do I inspect the wsdl namespace and then how do I provide
> different functionality depending on the incoming namespace? I am using
> aegis bindings and cxf.xml with the cxf servlet.
> Any ideas would be appreciated.
> 


Re: Wsdl Versioning

Posted by Dave Kallstrom <da...@gmail.com>.
That did it. Thanks again.

On 9/18/07, Dave Kallstrom <da...@gmail.com> wrote:
>
> I was wondering about that. I'll give that a shot tomorrow.
> Thanks a lot for the help.
>
> On 9/18/07, Liu, Jervis < jliu@iona.com> wrote:
> >
> > Ok, I see the tricks. MultipleEndpointObserver only steps in when there
> > are more than one endpoint registered on the same address.
> > MultipleEndpointObserver is the one who initializes the endpoint set. So the
> > config below works:
> >
> >
> >     <bean id="aegisBinding" class="
> > org.apache.cxf.aegis.databinding.AegisDatabinding"/>
> >
> >     <bean id="versionBean" class="
> > collective.webservices.VersionInterceptor
> > "/>
> >
> >     <bean id="aegisConfig" class="
> > org.apache.cxf.aegis.databinding.AegisServiceConfiguration"/>
> >
> >     <bean id="defaultConfig" class="
> > org.apache.cxf.service.factory.DefaultServiceConfiguration "/>
> >
> >     <bean id="jaxConfig" class="
> > org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/>
> >
> >     <bean id="serviceBean" class="
> > collective.webservices.CollectiveServicesImpl ">
> >         <property name="assetFactory" ref="assetFactoryBean"></property>
> >     </bean>
> >
> >     <bean id="assetFactoryBean" class="
> > collective.webservices.DefaultWSAssetFactory "/>
> >
> >     <jaxws:endpoint id="CollectiveServices" implementor="#serviceBean"
> > address="/CollectiveServices" >
> >         <jaxws:serviceFactory>
> >             <bean class="
> > org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
> >                 <property name="dataBinding" ref="aegisBinding"/>
> >                 <property name="serviceConfigurations">
> >                     <list>
> >                         <ref bean="jaxConfig"/>
> >                         <ref bean="aegisConfig"/>
> >                         <ref bean="defaultConfig"/>
> >                     </list>
> >                 </property>
> >             </bean>
> >         </jaxws:serviceFactory>
> >     </jaxws:endpoint>
> >
> >     <jaxws:endpoint id="CollectiveServices2" implementor="#serviceBean"
> > address="/CollectiveServices" >
> >         <jaxws:serviceFactory>
> >             <bean class="
> > org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
> >                 <property name="dataBinding" ref="aegisBinding"/>
> >                 <property name="serviceConfigurations">
> >                     <list>
> >                         <ref bean="jaxConfig"/>
> >                         <ref bean="aegisConfig"/>
> >                         <ref bean="defaultConfig"/>
> >                     </list>
> >                 </property>
> >             </bean>
> >         </jaxws:serviceFactory>
> >     </jaxws:endpoint>
> >
> >      <cxf:bus>
> >          <cxf:inInterceptors>
> >              <ref bean="versionBean"/>
> >          </cxf:inInterceptors>
> >      </cxf:bus>
> >
> > > -----Original Message-----
> > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > Sent: 2007?9?19? 3:05
> > > To: cxf-user@incubator.apache.org
> > > Subject: Re: Wsdl Versioning
> > >
> > >
> > > And here is my cxf.xml file
> > >
> > >     <bean id="aegisBinding" class="
> > > org.apache.cxf.aegis.databinding.AegisDatabinding "/>
> > >
> > >     <bean id="versionBean"
> > > class="collective.webservices.VersionInterceptor
> > > "/>
> > >
> > >     <bean id="aegisConfig" class="
> > > org.apache.cxf.aegis.databinding.AegisServiceConfiguration"/>
> > >
> > >     <bean id="defaultConfig" class="
> > > org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
> > >
> > >     <bean id="jaxConfig" class="
> > > org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/>
> > >
> > >     <bean id="serviceBean" class="
> > > collective.webservices.CollectiveServicesImpl ">
> > >         <property name="assetFactory"
> > > ref="assetFactoryBean"></property>
> > >     </bean>
> > >
> > >     <bean id="assetFactoryBean" class="
> > > collective.webservices.DefaultWSAssetFactory"/>
> > >
> > >     <jaxws:endpoint id="CollectiveServices" implementor="#serviceBean"
> > > address="/CollectiveServices" >
> > >         <jaxws:serviceFactory>
> > >             <bean class="
> > > org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
> > >                 <property name="dataBinding" ref="aegisBinding"/>
> > >                 <property name="serviceConfigurations">
> > >                     <list>
> > >                         <ref bean="jaxConfig"/>
> > >                         <ref bean="aegisConfig"/>
> > >                         <ref bean="defaultConfig"/>
> > >                     </list>
> > >                 </property>
> > >             </bean>
> > >         </jaxws:serviceFactory>
> > >     </jaxws:endpoint>
> > >      <cxf:bus>
> > >          <cxf:inInterceptors>
> > >              <ref bean="versionBean"/>
> > >          </cxf:inInterceptors>
> > >      </cxf:bus>
> > >
> > >
> > > On 9/18/07, Dave Kallstrom <da...@gmail.com> wrote:
> > > >
> > > > It is most likely my as I am not all that smart.
> > > > Here is my cxf.xml file and my version interceptor..
> > > > I know that my interceptor is being called however the
> > > endpoint set is
> > > > always null.
> > > >
> > > > public class VersionInterceptor extends
> > > > AbstractEndpointSelectionInterceptor
> > > > {
> > > >
> > > >     public VersionInterceptor()
> > > >     {
> > > >         super(Phase.POST_STREAM);
> > > >         addBefore( StaxInInterceptor.class.getName());
> > > >         System.out.println("VersionInterceptor#init()");
> > > >     }
> > > >
> > > >     @Override
> > > >     protected Endpoint selectEndpoint(Message message,
> > > Set<Endpoint> eps)
> > > >     {
> > > >         InputStream is = message.getContent(InputStream.class);
> > > >         System.out.println ("Message " + message);
> > > >         System.out.println("EndpointSet " + eps);
> > > > }
> > > > }
> > > >
> > > > On 9/17/07, Liu, Jervis < jliu@iona.com> wrote:
> > > > >
> > > > > Hi Dave, Firstly you need to make sure you are using SOAP
> > > binding, at
> > > > > the moment only the SOAP binding is using
> > > MultipleEndpointObserver. Then you
> > > > > can add your interceptor (that extends from
> > > > > AbstractEndpointSelectionInterceptor) into the chain using spring
> > > > > configuration similar to the way how logging interceptor
> > > is added, see [1].
> > > > > Please pay attention to the phase of your interceptor,
> > > your interceptor
> > > > > needs to be the very first one that being invoked in the
> > > inbound interceptor
> > > > > chain. You might see AttachmentInInterceptor is invoked
> > > before your
> > > > > interceptor, but that is ok. I believe using Phase.POST_STREAM and
> > > > > addBefore( StaxInterceptor.class.getName()) should give
> > > you the right
> > > > > phase.
> > > > >
> > > > >
> > > > > [1]. http://cwiki.apache.org/CXF20DOC/configuration.html
> > > > >
> > > > > Cheers,
> > > > > Jervis
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Dave Kallstrom [mailto: dave.kallstrom@gmail.com]
> > > > > > Sent: 2007?9?17? 23:58
> > > > > > To: cxf-user@incubator.apache.org
> > > > > > Subject: Re: Wsdl Versioning
> > > > > >
> > > > > >
> > > > > > It looks like I might not be able to set this up through
> > > > > > cxf.xml? I don't
> > > > > > see a way to get the MultipleEndpointObserver from the
> > > > > > JaxWsServiceFactoryBean so that I can add a
> > > routingInterceptor to it.
> > > > > >
> > > > > > On 9/15/07, Liu, Jervis <jliu@iona.com > wrote:
> > > > > > >
> > > > > > > Hi, your interceptor needs to extend from
> > > > > > > AbstractEndpointSelectionInterceptor. Also make sure you
> > > > > > have registered
> > > > > > > your routing interceptor with the MultipleEndpointObserver,
> > > > > > please refer to
> > > > > > >
> > > > > > \trunk\systests\src\test\java\org\apache\cxf\systest\versionin
> > > > > > g\Server.java
> > > > > > >
> > > > > > > Cheers,
> > > > > > > Jervis
> > > > > > >
> > > > > > > > -----Original Message-----
> > > > > > > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > > > > > > Sent: 2007?9?15? 2:39
> > > > > > > > To: cxf-user@incubator.apache.org
> > > > > > > > Subject: Re: Wsdl Versioning
> > > > > > > >
> > > > > > > >
> > > > > > > > Thanks for the response. I tried adding an incoming
> > > > > > > > interceptor that extends
> > > > > > > > AbstractEndpointInterceptor very similar to the example. The
> > > > > > > > only problem I
> > > > > > > > see is
> > > > > > > > that the incoming set of endpoints to my selectEndpoint
> > > > > > > > methid is always
> > > > > > > > null. My no arg constructor is calling
> > > > > > > > super( Phase.POST_STREAM) and then
> > > > > > > > addBefore(StaxInterceptor.class.getName())
> > > > > > > > Am I doing this correctly? Or could it be because I
> > > only have
> > > > > > > > one endpoint?
> > > > > > > >
> > > > > > > > On 9/14/07, Jean-François Daune <jf...@cigersoft.be> wrote:
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > This document is quite interesting about this subject:
> > > > > > > > >
> > > > > > > > >
> > > > > >
> > > http://blogs.iona.com/sos/20070410-WSDL-Versioning-Best-Practise.pdf
> > > > > > > > >
> > > > > > > > > Cheers,
> > > > > > > > >
> > > > > > > > > J-F
> > > > > > > > >
> > > > > > > > > -----Message d'origine-----
> > > > > > > > > De : Liu, Jervis [mailto: jliu@iona.com ]
> > > > > > > > > Envoyé : vendredi 14 septembre 2007 3:55
> > > > > > > > > À : cxf-user@incubator.apache.org
> > > > > > > > > Objet : RE: Wsdl Versioning
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Hi Dave, we've had a very basic versioning implementation.
> > > > > > > > Basically how
> > > > > > > > > it works is an interceptor sitting at the beginning of
> > > > > > > > in-bound interceptor
> > > > > > > > > chain as a mediator to inspect then dispatch the coming
> > > > > > > > request to different
> > > > > > > > > endpoints. An example can be found from a system
> > > test sample:
> > > > > > > > >
> > > > > > > >
> > > \trunk\systests\src\test\java\org\apache\cxf\systest\versionin
> > > > > > > > g. Let me know
> > > > > > > > > if you have any further questions. Willem Jiang is
> > > > > > > > currently working on
> > > > > > > > > adding a much more powerful routing support using Apache
> > > > > > > > Camel, hopefully
> > > > > > > > > this will provide a better foundation for implementing
> > > > > > > > versioning in CXF
> > > > > > > > > once it is done.
> > > > > > > > >
> > > > > > > > > Cheers,
> > > > > > > > > Jervis
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > > -----Original Message-----
> > > > > > > > > > From: Dave Kallstrom [mailto: dave.kallstrom@gmail.com]
> > > > > > > > > > Sent: 2007?9?14? 2:53
> > > > > > > > > > To: cxf-user@incubator.apache.org
> > > > > > > > > > Subject: Wsdl Versioning
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > We have recently migrated our web services offering from
> >
> > > > > > > > > > xfire to cxf and
> > > > > > > > > > everything is going well. Now the issue is that we have
> > > > > > > > > > several clients who
> > > > > > > > > > would like different features and I am
> > > wondering how best to
> > > > > > > > > > accomplish
> > > > > > > > > > this. The changes being requested will likely
> > > result in a
> > > > > > > > > > different wsdl so
> > > > > > > > > > I would like to be able to version our wsdls
> > > with different
> > > > > > > > > > namespaces. The
> > > > > > > > > > question is where do I inspect the wsdl
> > > namespace and then
> > > > > > > > > > how do I provide
> > > > > > > > > > different functionality depending on the
> > > incoming namespace?
> > > > > > > > > > I am using
> > > > > > > > > > aegis bindings and cxf.xml with the cxf servlet.
> > > > > > > > > > Any ideas would be appreciated.
> > > > > > > > > >
> > > > > > > > > > --
> > > > > > > > > > Dave Kallstrom
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > ----------------------------
> > > > > > > > > IONA Technologies PLC (registered in Ireland)
> > > > > > > > > Registered Number: 171387
> > > > > > > > > Registered Address: The IONA Building, Shelbourne Road,
> > > > > > > > Dublin 4, Ireland
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > > Dave Kallstrom
> > > > > > > >
> > > > > > >
> > > > > > > ----------------------------
> > > > > > > IONA Technologies PLC (registered in Ireland)
> > > > > > > Registered Number: 171387
> > > > > > > Registered Address: The IONA Building, Shelbourne Road,
> > > > > > Dublin 4, Ireland
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Dave Kallstrom
> > > > > >
> > > > >
> > > > > ----------------------------
> > > > > IONA Technologies PLC (registered in Ireland)
> > > > > Registered Number: 171387
> > > > > Registered Address: The IONA Building, Shelbourne Road, Dublin 4,
> > > > > Ireland
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Dave Kallstrom
> > >
> > >
> > >
> > >
> > > --
> > > Dave Kallstrom
> > >
> >
> > ----------------------------
> > IONA Technologies PLC (registered in Ireland)
> > Registered Number: 171387
> > Registered Address: The IONA Building, Shelbourne Road, Dublin 4,
> > Ireland
> >
>
>
>
> --
> Dave Kallstrom




-- 
Dave Kallstrom

Re: Wsdl Versioning

Posted by Dave Kallstrom <da...@gmail.com>.
I was wondering about that. I'll give that a shot tomorrow.
Thanks a lot for the help.

On 9/18/07, Liu, Jervis <jl...@iona.com> wrote:
>
> Ok, I see the tricks. MultipleEndpointObserver only steps in when there
> are more than one endpoint registered on the same address.
> MultipleEndpointObserver is the one who initializes the endpoint set. So the
> config below works:
>
>
>     <bean id="aegisBinding" class="
> org.apache.cxf.aegis.databinding.AegisDatabinding"/>
>
>     <bean id="versionBean" class="
> collective.webservices.VersionInterceptor
> "/>
>
>     <bean id="aegisConfig" class="
> org.apache.cxf.aegis.databinding.AegisServiceConfiguration"/>
>
>     <bean id="defaultConfig" class="
> org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
>
>     <bean id="jaxConfig" class="
> org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/>
>
>     <bean id="serviceBean" class="
> collective.webservices.CollectiveServicesImpl">
>         <property name="assetFactory" ref="assetFactoryBean"></property>
>     </bean>
>
>     <bean id="assetFactoryBean" class="
> collective.webservices.DefaultWSAssetFactory"/>
>
>     <jaxws:endpoint id="CollectiveServices" implementor="#serviceBean"
> address="/CollectiveServices" >
>         <jaxws:serviceFactory>
>             <bean class="
> org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
>                 <property name="dataBinding" ref="aegisBinding"/>
>                 <property name="serviceConfigurations">
>                     <list>
>                         <ref bean="jaxConfig"/>
>                         <ref bean="aegisConfig"/>
>                         <ref bean="defaultConfig"/>
>                     </list>
>                 </property>
>             </bean>
>         </jaxws:serviceFactory>
>     </jaxws:endpoint>
>
>     <jaxws:endpoint id="CollectiveServices2" implementor="#serviceBean"
> address="/CollectiveServices" >
>         <jaxws:serviceFactory>
>             <bean class="
> org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
>                 <property name="dataBinding" ref="aegisBinding"/>
>                 <property name="serviceConfigurations">
>                     <list>
>                         <ref bean="jaxConfig"/>
>                         <ref bean="aegisConfig"/>
>                         <ref bean="defaultConfig"/>
>                     </list>
>                 </property>
>             </bean>
>         </jaxws:serviceFactory>
>     </jaxws:endpoint>
>
>      <cxf:bus>
>          <cxf:inInterceptors>
>              <ref bean="versionBean"/>
>          </cxf:inInterceptors>
>      </cxf:bus>
>
> > -----Original Message-----
> > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > Sent: 2007?9?19? 3:05
> > To: cxf-user@incubator.apache.org
> > Subject: Re: Wsdl Versioning
> >
> >
> > And here is my cxf.xml file
> >
> >     <bean id="aegisBinding" class="
> > org.apache.cxf.aegis.databinding.AegisDatabinding"/>
> >
> >     <bean id="versionBean"
> > class="collective.webservices.VersionInterceptor
> > "/>
> >
> >     <bean id="aegisConfig" class="
> > org.apache.cxf.aegis.databinding.AegisServiceConfiguration"/>
> >
> >     <bean id="defaultConfig" class="
> > org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
> >
> >     <bean id="jaxConfig" class="
> > org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/>
> >
> >     <bean id="serviceBean" class="
> > collective.webservices.CollectiveServicesImpl">
> >         <property name="assetFactory"
> > ref="assetFactoryBean"></property>
> >     </bean>
> >
> >     <bean id="assetFactoryBean" class="
> > collective.webservices.DefaultWSAssetFactory"/>
> >
> >     <jaxws:endpoint id="CollectiveServices" implementor="#serviceBean"
> > address="/CollectiveServices" >
> >         <jaxws:serviceFactory>
> >             <bean class="
> > org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
> >                 <property name="dataBinding" ref="aegisBinding"/>
> >                 <property name="serviceConfigurations">
> >                     <list>
> >                         <ref bean="jaxConfig"/>
> >                         <ref bean="aegisConfig"/>
> >                         <ref bean="defaultConfig"/>
> >                     </list>
> >                 </property>
> >             </bean>
> >         </jaxws:serviceFactory>
> >     </jaxws:endpoint>
> >      <cxf:bus>
> >          <cxf:inInterceptors>
> >              <ref bean="versionBean"/>
> >          </cxf:inInterceptors>
> >      </cxf:bus>
> >
> >
> > On 9/18/07, Dave Kallstrom <da...@gmail.com> wrote:
> > >
> > > It is most likely my as I am not all that smart.
> > > Here is my cxf.xml file and my version interceptor..
> > > I know that my interceptor is being called however the
> > endpoint set is
> > > always null.
> > >
> > > public class VersionInterceptor extends
> > > AbstractEndpointSelectionInterceptor
> > > {
> > >
> > >     public VersionInterceptor()
> > >     {
> > >         super(Phase.POST_STREAM);
> > >         addBefore(StaxInInterceptor.class.getName());
> > >         System.out.println("VersionInterceptor#init()");
> > >     }
> > >
> > >     @Override
> > >     protected Endpoint selectEndpoint(Message message,
> > Set<Endpoint> eps)
> > >     {
> > >         InputStream is = message.getContent(InputStream.class);
> > >         System.out.println ("Message " + message);
> > >         System.out.println("EndpointSet " + eps);
> > > }
> > > }
> > >
> > > On 9/17/07, Liu, Jervis < jliu@iona.com> wrote:
> > > >
> > > > Hi Dave, Firstly you need to make sure you are using SOAP
> > binding, at
> > > > the moment only the SOAP binding is using
> > MultipleEndpointObserver. Then you
> > > > can add your interceptor (that extends from
> > > > AbstractEndpointSelectionInterceptor) into the chain using spring
> > > > configuration similar to the way how logging interceptor
> > is added, see [1].
> > > > Please pay attention to the phase of your interceptor,
> > your interceptor
> > > > needs to be the very first one that being invoked in the
> > inbound interceptor
> > > > chain. You might see AttachmentInInterceptor is invoked
> > before your
> > > > interceptor, but that is ok. I believe using Phase.POST_STREAM and
> > > > addBefore(StaxInterceptor.class.getName()) should give
> > you the right
> > > > phase.
> > > >
> > > >
> > > > [1]. http://cwiki.apache.org/CXF20DOC/configuration.html
> > > >
> > > > Cheers,
> > > > Jervis
> > > >
> > > > > -----Original Message-----
> > > > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > > > Sent: 2007?9?17? 23:58
> > > > > To: cxf-user@incubator.apache.org
> > > > > Subject: Re: Wsdl Versioning
> > > > >
> > > > >
> > > > > It looks like I might not be able to set this up through
> > > > > cxf.xml? I don't
> > > > > see a way to get the MultipleEndpointObserver from the
> > > > > JaxWsServiceFactoryBean so that I can add a
> > routingInterceptor to it.
> > > > >
> > > > > On 9/15/07, Liu, Jervis <jliu@iona.com > wrote:
> > > > > >
> > > > > > Hi, your interceptor needs to extend from
> > > > > > AbstractEndpointSelectionInterceptor. Also make sure you
> > > > > have registered
> > > > > > your routing interceptor with the MultipleEndpointObserver,
> > > > > please refer to
> > > > > >
> > > > > \trunk\systests\src\test\java\org\apache\cxf\systest\versionin
> > > > > g\Server.java
> > > > > >
> > > > > > Cheers,
> > > > > > Jervis
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > > > > > Sent: 2007?9?15? 2:39
> > > > > > > To: cxf-user@incubator.apache.org
> > > > > > > Subject: Re: Wsdl Versioning
> > > > > > >
> > > > > > >
> > > > > > > Thanks for the response. I tried adding an incoming
> > > > > > > interceptor that extends
> > > > > > > AbstractEndpointInterceptor very similar to the example. The
> > > > > > > only problem I
> > > > > > > see is
> > > > > > > that the incoming set of endpoints to my selectEndpoint
> > > > > > > methid is always
> > > > > > > null. My no arg constructor is calling
> > > > > > > super(Phase.POST_STREAM) and then
> > > > > > > addBefore(StaxInterceptor.class.getName())
> > > > > > > Am I doing this correctly? Or could it be because I
> > only have
> > > > > > > one endpoint?
> > > > > > >
> > > > > > > On 9/14/07, Jean-François Daune <jf...@cigersoft.be> wrote:
> > > > > > > >
> > > > > > > >
> > > > > > > > This document is quite interesting about this subject:
> > > > > > > >
> > > > > > > >
> > > > >
> > http://blogs.iona.com/sos/20070410-WSDL-Versioning-Best-Practise.pdf
> > > > > > > >
> > > > > > > > Cheers,
> > > > > > > >
> > > > > > > > J-F
> > > > > > > >
> > > > > > > > -----Message d'origine-----
> > > > > > > > De : Liu, Jervis [mailto: jliu@iona.com]
> > > > > > > > Envoyé : vendredi 14 septembre 2007 3:55
> > > > > > > > À : cxf-user@incubator.apache.org
> > > > > > > > Objet : RE: Wsdl Versioning
> > > > > > > >
> > > > > > > >
> > > > > > > > Hi Dave, we've had a very basic versioning implementation.
> > > > > > > Basically how
> > > > > > > > it works is an interceptor sitting at the beginning of
> > > > > > > in-bound interceptor
> > > > > > > > chain as a mediator to inspect then dispatch the coming
> > > > > > > request to different
> > > > > > > > endpoints. An example can be found from a system
> > test sample:
> > > > > > > >
> > > > > > >
> > \trunk\systests\src\test\java\org\apache\cxf\systest\versionin
> > > > > > > g. Let me know
> > > > > > > > if you have any further questions. Willem Jiang is
> > > > > > > currently working on
> > > > > > > > adding a much more powerful routing support using Apache
> > > > > > > Camel, hopefully
> > > > > > > > this will provide a better foundation for implementing
> > > > > > > versioning in CXF
> > > > > > > > once it is done.
> > > > > > > >
> > > > > > > > Cheers,
> > > > > > > > Jervis
> > > > > > > >
> > > > > > > >
> > > > > > > > > -----Original Message-----
> > > > > > > > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > > > > > > > Sent: 2007?9?14? 2:53
> > > > > > > > > To: cxf-user@incubator.apache.org
> > > > > > > > > Subject: Wsdl Versioning
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > We have recently migrated our web services offering from
> > > > > > > > > xfire to cxf and
> > > > > > > > > everything is going well. Now the issue is that we have
> > > > > > > > > several clients who
> > > > > > > > > would like different features and I am
> > wondering how best to
> > > > > > > > > accomplish
> > > > > > > > > this. The changes being requested will likely
> > result in a
> > > > > > > > > different wsdl so
> > > > > > > > > I would like to be able to version our wsdls
> > with different
> > > > > > > > > namespaces. The
> > > > > > > > > question is where do I inspect the wsdl
> > namespace and then
> > > > > > > > > how do I provide
> > > > > > > > > different functionality depending on the
> > incoming namespace?
> > > > > > > > > I am using
> > > > > > > > > aegis bindings and cxf.xml with the cxf servlet.
> > > > > > > > > Any ideas would be appreciated.
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > > Dave Kallstrom
> > > > > > > > >
> > > > > > > >
> > > > > > > > ----------------------------
> > > > > > > > IONA Technologies PLC (registered in Ireland)
> > > > > > > > Registered Number: 171387
> > > > > > > > Registered Address: The IONA Building, Shelbourne Road,
> > > > > > > Dublin 4, Ireland
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > Dave Kallstrom
> > > > > > >
> > > > > >
> > > > > > ----------------------------
> > > > > > IONA Technologies PLC (registered in Ireland)
> > > > > > Registered Number: 171387
> > > > > > Registered Address: The IONA Building, Shelbourne Road,
> > > > > Dublin 4, Ireland
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Dave Kallstrom
> > > > >
> > > >
> > > > ----------------------------
> > > > IONA Technologies PLC (registered in Ireland)
> > > > Registered Number: 171387
> > > > Registered Address: The IONA Building, Shelbourne Road, Dublin 4,
> > > > Ireland
> > > >
> > >
> > >
> > >
> > > --
> > > Dave Kallstrom
> >
> >
> >
> >
> > --
> > Dave Kallstrom
> >
>
> ----------------------------
> IONA Technologies PLC (registered in Ireland)
> Registered Number: 171387
> Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland
>



-- 
Dave Kallstrom

RE: Wsdl Versioning

Posted by "Liu, Jervis" <jl...@iona.com>.
Ok, I see the tricks. MultipleEndpointObserver only steps in when there are more than one endpoint registered on the same address. MultipleEndpointObserver is the one who initializes the endpoint set. So the config below works:


    <bean id="aegisBinding" class="
org.apache.cxf.aegis.databinding.AegisDatabinding"/>

    <bean id="versionBean" class="collective.webservices.VersionInterceptor
"/>

    <bean id="aegisConfig" class="
org.apache.cxf.aegis.databinding.AegisServiceConfiguration"/>

    <bean id="defaultConfig" class="
org.apache.cxf.service.factory.DefaultServiceConfiguration"/>

    <bean id="jaxConfig" class="
org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/>

    <bean id="serviceBean" class="
collective.webservices.CollectiveServicesImpl">
        <property name="assetFactory" ref="assetFactoryBean"></property>
    </bean>

    <bean id="assetFactoryBean" class="
collective.webservices.DefaultWSAssetFactory"/>

    <jaxws:endpoint id="CollectiveServices" implementor="#serviceBean"
address="/CollectiveServices" >
        <jaxws:serviceFactory>
            <bean class="
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
                <property name="dataBinding" ref="aegisBinding"/>
                <property name="serviceConfigurations">
                    <list>
                        <ref bean="jaxConfig"/>
                        <ref bean="aegisConfig"/>
                        <ref bean="defaultConfig"/>
                    </list>
                </property>
            </bean>
        </jaxws:serviceFactory>
    </jaxws:endpoint>

    <jaxws:endpoint id="CollectiveServices2" implementor="#serviceBean"
address="/CollectiveServices" >
        <jaxws:serviceFactory>
            <bean class="
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
                <property name="dataBinding" ref="aegisBinding"/>
                <property name="serviceConfigurations">
                    <list>
                        <ref bean="jaxConfig"/>
                        <ref bean="aegisConfig"/>
                        <ref bean="defaultConfig"/>
                    </list>
                </property>
            </bean>
        </jaxws:serviceFactory>
    </jaxws:endpoint>

     <cxf:bus>
         <cxf:inInterceptors>
             <ref bean="versionBean"/>
         </cxf:inInterceptors>
     </cxf:bus>

> -----Original Message-----
> From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> Sent: 2007?9?19? 3:05
> To: cxf-user@incubator.apache.org
> Subject: Re: Wsdl Versioning
> 
> 
> And here is my cxf.xml file
> 
>     <bean id="aegisBinding" class="
> org.apache.cxf.aegis.databinding.AegisDatabinding"/>
> 
>     <bean id="versionBean" 
> class="collective.webservices.VersionInterceptor
> "/>
> 
>     <bean id="aegisConfig" class="
> org.apache.cxf.aegis.databinding.AegisServiceConfiguration"/>
> 
>     <bean id="defaultConfig" class="
> org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
> 
>     <bean id="jaxConfig" class="
> org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/>
> 
>     <bean id="serviceBean" class="
> collective.webservices.CollectiveServicesImpl">
>         <property name="assetFactory" 
> ref="assetFactoryBean"></property>
>     </bean>
> 
>     <bean id="assetFactoryBean" class="
> collective.webservices.DefaultWSAssetFactory"/>
> 
>     <jaxws:endpoint id="CollectiveServices" implementor="#serviceBean"
> address="/CollectiveServices" >
>         <jaxws:serviceFactory>
>             <bean class="
> org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
>                 <property name="dataBinding" ref="aegisBinding"/>
>                 <property name="serviceConfigurations">
>                     <list>
>                         <ref bean="jaxConfig"/>
>                         <ref bean="aegisConfig"/>
>                         <ref bean="defaultConfig"/>
>                     </list>
>                 </property>
>             </bean>
>         </jaxws:serviceFactory>
>     </jaxws:endpoint>
>      <cxf:bus>
>          <cxf:inInterceptors>
>              <ref bean="versionBean"/>
>          </cxf:inInterceptors>
>      </cxf:bus>
> 
> 
> On 9/18/07, Dave Kallstrom <da...@gmail.com> wrote:
> >
> > It is most likely my as I am not all that smart.
> > Here is my cxf.xml file and my version interceptor..
> > I know that my interceptor is being called however the 
> endpoint set is
> > always null.
> >
> > public class VersionInterceptor extends
> > AbstractEndpointSelectionInterceptor
> > {
> >
> >     public VersionInterceptor()
> >     {
> >         super(Phase.POST_STREAM);
> >         addBefore(StaxInInterceptor.class.getName());
> >         System.out.println("VersionInterceptor#init()");
> >     }
> >
> >     @Override
> >     protected Endpoint selectEndpoint(Message message, 
> Set<Endpoint> eps)
> >     {
> >         InputStream is = message.getContent(InputStream.class);
> >         System.out.println ("Message " + message);
> >         System.out.println("EndpointSet " + eps);
> > }
> > }
> >
> > On 9/17/07, Liu, Jervis < jliu@iona.com> wrote:
> > >
> > > Hi Dave, Firstly you need to make sure you are using SOAP 
> binding, at
> > > the moment only the SOAP binding is using 
> MultipleEndpointObserver. Then you
> > > can add your interceptor (that extends from
> > > AbstractEndpointSelectionInterceptor) into the chain using spring
> > > configuration similar to the way how logging interceptor 
> is added, see [1].
> > > Please pay attention to the phase of your interceptor, 
> your interceptor
> > > needs to be the very first one that being invoked in the 
> inbound interceptor
> > > chain. You might see AttachmentInInterceptor is invoked 
> before your
> > > interceptor, but that is ok. I believe using Phase.POST_STREAM and
> > > addBefore(StaxInterceptor.class.getName()) should give 
> you the right
> > > phase.
> > >
> > >
> > > [1]. http://cwiki.apache.org/CXF20DOC/configuration.html
> > >
> > > Cheers,
> > > Jervis
> > >
> > > > -----Original Message-----
> > > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > > Sent: 2007?9?17? 23:58
> > > > To: cxf-user@incubator.apache.org
> > > > Subject: Re: Wsdl Versioning
> > > >
> > > >
> > > > It looks like I might not be able to set this up through
> > > > cxf.xml? I don't
> > > > see a way to get the MultipleEndpointObserver from the
> > > > JaxWsServiceFactoryBean so that I can add a 
> routingInterceptor to it.
> > > >
> > > > On 9/15/07, Liu, Jervis <jliu@iona.com > wrote:
> > > > >
> > > > > Hi, your interceptor needs to extend from
> > > > > AbstractEndpointSelectionInterceptor. Also make sure you
> > > > have registered
> > > > > your routing interceptor with the MultipleEndpointObserver,
> > > > please refer to
> > > > >
> > > > \trunk\systests\src\test\java\org\apache\cxf\systest\versionin
> > > > g\Server.java
> > > > >
> > > > > Cheers,
> > > > > Jervis
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > > > > Sent: 2007?9?15? 2:39
> > > > > > To: cxf-user@incubator.apache.org
> > > > > > Subject: Re: Wsdl Versioning
> > > > > >
> > > > > >
> > > > > > Thanks for the response. I tried adding an incoming
> > > > > > interceptor that extends
> > > > > > AbstractEndpointInterceptor very similar to the example. The
> > > > > > only problem I
> > > > > > see is
> > > > > > that the incoming set of endpoints to my selectEndpoint
> > > > > > methid is always
> > > > > > null. My no arg constructor is calling
> > > > > > super(Phase.POST_STREAM) and then
> > > > > > addBefore(StaxInterceptor.class.getName())
> > > > > > Am I doing this correctly? Or could it be because I 
> only have
> > > > > > one endpoint?
> > > > > >
> > > > > > On 9/14/07, Jean-François Daune <jf...@cigersoft.be> wrote:
> > > > > > >
> > > > > > >
> > > > > > > This document is quite interesting about this subject:
> > > > > > >
> > > > > > >
> > > > 
> http://blogs.iona.com/sos/20070410-WSDL-Versioning-Best-Practise.pdf
> > > > > > >
> > > > > > > Cheers,
> > > > > > >
> > > > > > > J-F
> > > > > > >
> > > > > > > -----Message d'origine-----
> > > > > > > De : Liu, Jervis [mailto: jliu@iona.com]
> > > > > > > Envoyé : vendredi 14 septembre 2007 3:55
> > > > > > > À : cxf-user@incubator.apache.org
> > > > > > > Objet : RE: Wsdl Versioning
> > > > > > >
> > > > > > >
> > > > > > > Hi Dave, we've had a very basic versioning implementation.
> > > > > > Basically how
> > > > > > > it works is an interceptor sitting at the beginning of
> > > > > > in-bound interceptor
> > > > > > > chain as a mediator to inspect then dispatch the coming
> > > > > > request to different
> > > > > > > endpoints. An example can be found from a system 
> test sample:
> > > > > > >
> > > > > > 
> \trunk\systests\src\test\java\org\apache\cxf\systest\versionin
> > > > > > g. Let me know
> > > > > > > if you have any further questions. Willem Jiang is
> > > > > > currently working on
> > > > > > > adding a much more powerful routing support using Apache
> > > > > > Camel, hopefully
> > > > > > > this will provide a better foundation for implementing
> > > > > > versioning in CXF
> > > > > > > once it is done.
> > > > > > >
> > > > > > > Cheers,
> > > > > > > Jervis
> > > > > > >
> > > > > > >
> > > > > > > > -----Original Message-----
> > > > > > > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > > > > > > Sent: 2007?9?14? 2:53
> > > > > > > > To: cxf-user@incubator.apache.org
> > > > > > > > Subject: Wsdl Versioning
> > > > > > > >
> > > > > > > >
> > > > > > > > We have recently migrated our web services offering from
> > > > > > > > xfire to cxf and
> > > > > > > > everything is going well. Now the issue is that we have
> > > > > > > > several clients who
> > > > > > > > would like different features and I am 
> wondering how best to
> > > > > > > > accomplish
> > > > > > > > this. The changes being requested will likely 
> result in a
> > > > > > > > different wsdl so
> > > > > > > > I would like to be able to version our wsdls 
> with different
> > > > > > > > namespaces. The
> > > > > > > > question is where do I inspect the wsdl 
> namespace and then
> > > > > > > > how do I provide
> > > > > > > > different functionality depending on the 
> incoming namespace?
> > > > > > > > I am using
> > > > > > > > aegis bindings and cxf.xml with the cxf servlet.
> > > > > > > > Any ideas would be appreciated.
> > > > > > > >
> > > > > > > > --
> > > > > > > > Dave Kallstrom
> > > > > > > >
> > > > > > >
> > > > > > > ----------------------------
> > > > > > > IONA Technologies PLC (registered in Ireland)
> > > > > > > Registered Number: 171387
> > > > > > > Registered Address: The IONA Building, Shelbourne Road,
> > > > > > Dublin 4, Ireland
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Dave Kallstrom
> > > > > >
> > > > >
> > > > > ----------------------------
> > > > > IONA Technologies PLC (registered in Ireland)
> > > > > Registered Number: 171387
> > > > > Registered Address: The IONA Building, Shelbourne Road,
> > > > Dublin 4, Ireland
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Dave Kallstrom
> > > >
> > >
> > > ----------------------------
> > > IONA Technologies PLC (registered in Ireland)
> > > Registered Number: 171387
> > > Registered Address: The IONA Building, Shelbourne Road, Dublin 4,
> > > Ireland
> > >
> >
> >
> >
> > --
> > Dave Kallstrom
> 
> 
> 
> 
> -- 
> Dave Kallstrom
> 

----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland

Re: Wsdl Versioning

Posted by Dave Kallstrom <da...@gmail.com>.
And here is my cxf.xml file

    <bean id="aegisBinding" class="
org.apache.cxf.aegis.databinding.AegisDatabinding"/>

    <bean id="versionBean" class="collective.webservices.VersionInterceptor
"/>

    <bean id="aegisConfig" class="
org.apache.cxf.aegis.databinding.AegisServiceConfiguration"/>

    <bean id="defaultConfig" class="
org.apache.cxf.service.factory.DefaultServiceConfiguration"/>

    <bean id="jaxConfig" class="
org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/>

    <bean id="serviceBean" class="
collective.webservices.CollectiveServicesImpl">
        <property name="assetFactory" ref="assetFactoryBean"></property>
    </bean>

    <bean id="assetFactoryBean" class="
collective.webservices.DefaultWSAssetFactory"/>

    <jaxws:endpoint id="CollectiveServices" implementor="#serviceBean"
address="/CollectiveServices" >
        <jaxws:serviceFactory>
            <bean class="
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
                <property name="dataBinding" ref="aegisBinding"/>
                <property name="serviceConfigurations">
                    <list>
                        <ref bean="jaxConfig"/>
                        <ref bean="aegisConfig"/>
                        <ref bean="defaultConfig"/>
                    </list>
                </property>
            </bean>
        </jaxws:serviceFactory>
    </jaxws:endpoint>
     <cxf:bus>
         <cxf:inInterceptors>
             <ref bean="versionBean"/>
         </cxf:inInterceptors>
     </cxf:bus>


On 9/18/07, Dave Kallstrom <da...@gmail.com> wrote:
>
> It is most likely my as I am not all that smart.
> Here is my cxf.xml file and my version interceptor..
> I know that my interceptor is being called however the endpoint set is
> always null.
>
> public class VersionInterceptor extends
> AbstractEndpointSelectionInterceptor
> {
>
>     public VersionInterceptor()
>     {
>         super(Phase.POST_STREAM);
>         addBefore(StaxInInterceptor.class.getName());
>         System.out.println("VersionInterceptor#init()");
>     }
>
>     @Override
>     protected Endpoint selectEndpoint(Message message, Set<Endpoint> eps)
>     {
>         InputStream is = message.getContent(InputStream.class);
>         System.out.println ("Message " + message);
>         System.out.println("EndpointSet " + eps);
> }
> }
>
> On 9/17/07, Liu, Jervis < jliu@iona.com> wrote:
> >
> > Hi Dave, Firstly you need to make sure you are using SOAP binding, at
> > the moment only the SOAP binding is using MultipleEndpointObserver. Then you
> > can add your interceptor (that extends from
> > AbstractEndpointSelectionInterceptor) into the chain using spring
> > configuration similar to the way how logging interceptor is added, see [1].
> > Please pay attention to the phase of your interceptor, your interceptor
> > needs to be the very first one that being invoked in the inbound interceptor
> > chain. You might see AttachmentInInterceptor is invoked before your
> > interceptor, but that is ok. I believe using Phase.POST_STREAM and
> > addBefore(StaxInterceptor.class.getName()) should give you the right
> > phase.
> >
> >
> > [1]. http://cwiki.apache.org/CXF20DOC/configuration.html
> >
> > Cheers,
> > Jervis
> >
> > > -----Original Message-----
> > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > Sent: 2007?9?17? 23:58
> > > To: cxf-user@incubator.apache.org
> > > Subject: Re: Wsdl Versioning
> > >
> > >
> > > It looks like I might not be able to set this up through
> > > cxf.xml? I don't
> > > see a way to get the MultipleEndpointObserver from the
> > > JaxWsServiceFactoryBean so that I can add a routingInterceptor to it.
> > >
> > > On 9/15/07, Liu, Jervis <jliu@iona.com > wrote:
> > > >
> > > > Hi, your interceptor needs to extend from
> > > > AbstractEndpointSelectionInterceptor. Also make sure you
> > > have registered
> > > > your routing interceptor with the MultipleEndpointObserver,
> > > please refer to
> > > >
> > > \trunk\systests\src\test\java\org\apache\cxf\systest\versionin
> > > g\Server.java
> > > >
> > > > Cheers,
> > > > Jervis
> > > >
> > > > > -----Original Message-----
> > > > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > > > Sent: 2007?9?15? 2:39
> > > > > To: cxf-user@incubator.apache.org
> > > > > Subject: Re: Wsdl Versioning
> > > > >
> > > > >
> > > > > Thanks for the response. I tried adding an incoming
> > > > > interceptor that extends
> > > > > AbstractEndpointInterceptor very similar to the example. The
> > > > > only problem I
> > > > > see is
> > > > > that the incoming set of endpoints to my selectEndpoint
> > > > > methid is always
> > > > > null. My no arg constructor is calling
> > > > > super(Phase.POST_STREAM) and then
> > > > > addBefore(StaxInterceptor.class.getName())
> > > > > Am I doing this correctly? Or could it be because I only have
> > > > > one endpoint?
> > > > >
> > > > > On 9/14/07, Jean-François Daune <jf...@cigersoft.be> wrote:
> > > > > >
> > > > > >
> > > > > > This document is quite interesting about this subject:
> > > > > >
> > > > > >
> > > http://blogs.iona.com/sos/20070410-WSDL-Versioning-Best-Practise.pdf
> > > > > >
> > > > > > Cheers,
> > > > > >
> > > > > > J-F
> > > > > >
> > > > > > -----Message d'origine-----
> > > > > > De : Liu, Jervis [mailto: jliu@iona.com]
> > > > > > Envoyé : vendredi 14 septembre 2007 3:55
> > > > > > À : cxf-user@incubator.apache.org
> > > > > > Objet : RE: Wsdl Versioning
> > > > > >
> > > > > >
> > > > > > Hi Dave, we've had a very basic versioning implementation.
> > > > > Basically how
> > > > > > it works is an interceptor sitting at the beginning of
> > > > > in-bound interceptor
> > > > > > chain as a mediator to inspect then dispatch the coming
> > > > > request to different
> > > > > > endpoints. An example can be found from a system test sample:
> > > > > >
> > > > > \trunk\systests\src\test\java\org\apache\cxf\systest\versionin
> > > > > g. Let me know
> > > > > > if you have any further questions. Willem Jiang is
> > > > > currently working on
> > > > > > adding a much more powerful routing support using Apache
> > > > > Camel, hopefully
> > > > > > this will provide a better foundation for implementing
> > > > > versioning in CXF
> > > > > > once it is done.
> > > > > >
> > > > > > Cheers,
> > > > > > Jervis
> > > > > >
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > > > > > Sent: 2007?9?14? 2:53
> > > > > > > To: cxf-user@incubator.apache.org
> > > > > > > Subject: Wsdl Versioning
> > > > > > >
> > > > > > >
> > > > > > > We have recently migrated our web services offering from
> > > > > > > xfire to cxf and
> > > > > > > everything is going well. Now the issue is that we have
> > > > > > > several clients who
> > > > > > > would like different features and I am wondering how best to
> > > > > > > accomplish
> > > > > > > this. The changes being requested will likely result in a
> > > > > > > different wsdl so
> > > > > > > I would like to be able to version our wsdls with different
> > > > > > > namespaces. The
> > > > > > > question is where do I inspect the wsdl namespace and then
> > > > > > > how do I provide
> > > > > > > different functionality depending on the incoming namespace?
> > > > > > > I am using
> > > > > > > aegis bindings and cxf.xml with the cxf servlet.
> > > > > > > Any ideas would be appreciated.
> > > > > > >
> > > > > > > --
> > > > > > > Dave Kallstrom
> > > > > > >
> > > > > >
> > > > > > ----------------------------
> > > > > > IONA Technologies PLC (registered in Ireland)
> > > > > > Registered Number: 171387
> > > > > > Registered Address: The IONA Building, Shelbourne Road,
> > > > > Dublin 4, Ireland
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Dave Kallstrom
> > > > >
> > > >
> > > > ----------------------------
> > > > IONA Technologies PLC (registered in Ireland)
> > > > Registered Number: 171387
> > > > Registered Address: The IONA Building, Shelbourne Road,
> > > Dublin 4, Ireland
> > > >
> > >
> > >
> > >
> > > --
> > > Dave Kallstrom
> > >
> >
> > ----------------------------
> > IONA Technologies PLC (registered in Ireland)
> > Registered Number: 171387
> > Registered Address: The IONA Building, Shelbourne Road, Dublin 4,
> > Ireland
> >
>
>
>
> --
> Dave Kallstrom




-- 
Dave Kallstrom

Re: Wsdl Versioning

Posted by Dave Kallstrom <da...@gmail.com>.
It is most likely my as I am not all that smart.
Here is my cxf.xml file and my version interceptor..
I know that my interceptor is being called however the endpoint set is
always null.

public class VersionInterceptor extends AbstractEndpointSelectionInterceptor
{

    public VersionInterceptor()
    {
        super(Phase.POST_STREAM);
        addBefore(StaxInInterceptor.class.getName());
        System.out.println("VersionInterceptor#init()");
    }

    @Override
    protected Endpoint selectEndpoint(Message message, Set<Endpoint> eps)
    {
        InputStream is = message.getContent(InputStream.class);
        System.out.println("Message " + message);
        System.out.println("EndpointSet " + eps);
}
}

On 9/17/07, Liu, Jervis <jl...@iona.com> wrote:
>
> Hi Dave, Firstly you need to make sure you are using SOAP binding, at the
> moment only the SOAP binding is using MultipleEndpointObserver. Then you can
> add your interceptor (that extends from
> AbstractEndpointSelectionInterceptor) into the chain using spring
> configuration similar to the way how logging interceptor is added, see [1].
> Please pay attention to the phase of your interceptor, your interceptor
> needs to be the very first one that being invoked in the inbound interceptor
> chain. You might see AttachmentInInterceptor is invoked before your
> interceptor, but that is ok. I believe using Phase.POST_STREAM and
> addBefore(StaxInterceptor.class.getName()) should give you the right
> phase.
>
>
> [1]. http://cwiki.apache.org/CXF20DOC/configuration.html
>
> Cheers,
> Jervis
>
> > -----Original Message-----
> > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > Sent: 2007?9?17? 23:58
> > To: cxf-user@incubator.apache.org
> > Subject: Re: Wsdl Versioning
> >
> >
> > It looks like I might not be able to set this up through
> > cxf.xml? I don't
> > see a way to get the MultipleEndpointObserver from the
> > JaxWsServiceFactoryBean so that I can add a routingInterceptor to it.
> >
> > On 9/15/07, Liu, Jervis <jl...@iona.com> wrote:
> > >
> > > Hi, your interceptor needs to extend from
> > > AbstractEndpointSelectionInterceptor. Also make sure you
> > have registered
> > > your routing interceptor with the MultipleEndpointObserver,
> > please refer to
> > >
> > \trunk\systests\src\test\java\org\apache\cxf\systest\versionin
> > g\Server.java
> > >
> > > Cheers,
> > > Jervis
> > >
> > > > -----Original Message-----
> > > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > > Sent: 2007?9?15? 2:39
> > > > To: cxf-user@incubator.apache.org
> > > > Subject: Re: Wsdl Versioning
> > > >
> > > >
> > > > Thanks for the response. I tried adding an incoming
> > > > interceptor that extends
> > > > AbstractEndpointInterceptor very similar to the example. The
> > > > only problem I
> > > > see is
> > > > that the incoming set of endpoints to my selectEndpoint
> > > > methid is always
> > > > null. My no arg constructor is calling
> > > > super(Phase.POST_STREAM) and then
> > > > addBefore(StaxInterceptor.class.getName())
> > > > Am I doing this correctly? Or could it be because I only have
> > > > one endpoint?
> > > >
> > > > On 9/14/07, Jean-François Daune <jf...@cigersoft.be> wrote:
> > > > >
> > > > >
> > > > > This document is quite interesting about this subject:
> > > > >
> > > > >
> > http://blogs.iona.com/sos/20070410-WSDL-Versioning-Best-Practise.pdf
> > > > >
> > > > > Cheers,
> > > > >
> > > > > J-F
> > > > >
> > > > > -----Message d'origine-----
> > > > > De : Liu, Jervis [mailto:jliu@iona.com]
> > > > > Envoyé : vendredi 14 septembre 2007 3:55
> > > > > À : cxf-user@incubator.apache.org
> > > > > Objet : RE: Wsdl Versioning
> > > > >
> > > > >
> > > > > Hi Dave, we've had a very basic versioning implementation.
> > > > Basically how
> > > > > it works is an interceptor sitting at the beginning of
> > > > in-bound interceptor
> > > > > chain as a mediator to inspect then dispatch the coming
> > > > request to different
> > > > > endpoints. An example can be found from a system test sample:
> > > > >
> > > > \trunk\systests\src\test\java\org\apache\cxf\systest\versionin
> > > > g. Let me know
> > > > > if you have any further questions. Willem Jiang is
> > > > currently working on
> > > > > adding a much more powerful routing support using Apache
> > > > Camel, hopefully
> > > > > this will provide a better foundation for implementing
> > > > versioning in CXF
> > > > > once it is done.
> > > > >
> > > > > Cheers,
> > > > > Jervis
> > > > >
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > > > > Sent: 2007?9?14? 2:53
> > > > > > To: cxf-user@incubator.apache.org
> > > > > > Subject: Wsdl Versioning
> > > > > >
> > > > > >
> > > > > > We have recently migrated our web services offering from
> > > > > > xfire to cxf and
> > > > > > everything is going well. Now the issue is that we have
> > > > > > several clients who
> > > > > > would like different features and I am wondering how best to
> > > > > > accomplish
> > > > > > this. The changes being requested will likely result in a
> > > > > > different wsdl so
> > > > > > I would like to be able to version our wsdls with different
> > > > > > namespaces. The
> > > > > > question is where do I inspect the wsdl namespace and then
> > > > > > how do I provide
> > > > > > different functionality depending on the incoming namespace?
> > > > > > I am using
> > > > > > aegis bindings and cxf.xml with the cxf servlet.
> > > > > > Any ideas would be appreciated.
> > > > > >
> > > > > > --
> > > > > > Dave Kallstrom
> > > > > >
> > > > >
> > > > > ----------------------------
> > > > > IONA Technologies PLC (registered in Ireland)
> > > > > Registered Number: 171387
> > > > > Registered Address: The IONA Building, Shelbourne Road,
> > > > Dublin 4, Ireland
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Dave Kallstrom
> > > >
> > >
> > > ----------------------------
> > > IONA Technologies PLC (registered in Ireland)
> > > Registered Number: 171387
> > > Registered Address: The IONA Building, Shelbourne Road,
> > Dublin 4, Ireland
> > >
> >
> >
> >
> > --
> > Dave Kallstrom
> >
>
> ----------------------------
> IONA Technologies PLC (registered in Ireland)
> Registered Number: 171387
> Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland
>



-- 
Dave Kallstrom

RE: Wsdl Versioning

Posted by "Liu, Jervis" <jl...@iona.com>.
Hi Dave, Firstly you need to make sure you are using SOAP binding, at the moment only the SOAP binding is using MultipleEndpointObserver. Then you can add your interceptor (that extends from AbstractEndpointSelectionInterceptor) into the chain using spring configuration similar to the way how logging interceptor is added, see [1]. Please pay attention to the phase of your interceptor, your interceptor needs to be the very first one that being invoked in the inbound interceptor chain. You might see AttachmentInInterceptor is invoked before your interceptor, but that is ok. I believe using Phase.POST_STREAM and addBefore(StaxInterceptor.class.getName()) should give you the right phase.
 

[1]. http://cwiki.apache.org/CXF20DOC/configuration.html

Cheers,
Jervis

> -----Original Message-----
> From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> Sent: 2007?9?17? 23:58
> To: cxf-user@incubator.apache.org
> Subject: Re: Wsdl Versioning
> 
> 
> It looks like I might not be able to set this up through 
> cxf.xml? I don't
> see a way to get the MultipleEndpointObserver from the
> JaxWsServiceFactoryBean so that I can add a routingInterceptor to it.
> 
> On 9/15/07, Liu, Jervis <jl...@iona.com> wrote:
> >
> > Hi, your interceptor needs to extend from
> > AbstractEndpointSelectionInterceptor. Also make sure you 
> have registered
> > your routing interceptor with the MultipleEndpointObserver, 
> please refer to
> > 
> \trunk\systests\src\test\java\org\apache\cxf\systest\versionin
> g\Server.java
> >
> > Cheers,
> > Jervis
> >
> > > -----Original Message-----
> > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > Sent: 2007?9?15? 2:39
> > > To: cxf-user@incubator.apache.org
> > > Subject: Re: Wsdl Versioning
> > >
> > >
> > > Thanks for the response. I tried adding an incoming
> > > interceptor that extends
> > > AbstractEndpointInterceptor very similar to the example. The
> > > only problem I
> > > see is
> > > that the incoming set of endpoints to my selectEndpoint
> > > methid is always
> > > null. My no arg constructor is calling
> > > super(Phase.POST_STREAM) and then
> > > addBefore(StaxInterceptor.class.getName())
> > > Am I doing this correctly? Or could it be because I only have
> > > one endpoint?
> > >
> > > On 9/14/07, Jean-François Daune <jf...@cigersoft.be> wrote:
> > > >
> > > >
> > > > This document is quite interesting about this subject:
> > > >
> > > > 
> http://blogs.iona.com/sos/20070410-WSDL-Versioning-Best-Practise.pdf
> > > >
> > > > Cheers,
> > > >
> > > > J-F
> > > >
> > > > -----Message d'origine-----
> > > > De : Liu, Jervis [mailto:jliu@iona.com]
> > > > Envoyé : vendredi 14 septembre 2007 3:55
> > > > À : cxf-user@incubator.apache.org
> > > > Objet : RE: Wsdl Versioning
> > > >
> > > >
> > > > Hi Dave, we've had a very basic versioning implementation.
> > > Basically how
> > > > it works is an interceptor sitting at the beginning of
> > > in-bound interceptor
> > > > chain as a mediator to inspect then dispatch the coming
> > > request to different
> > > > endpoints. An example can be found from a system test sample:
> > > >
> > > \trunk\systests\src\test\java\org\apache\cxf\systest\versionin
> > > g. Let me know
> > > > if you have any further questions. Willem Jiang is
> > > currently working on
> > > > adding a much more powerful routing support using Apache
> > > Camel, hopefully
> > > > this will provide a better foundation for implementing
> > > versioning in CXF
> > > > once it is done.
> > > >
> > > > Cheers,
> > > > Jervis
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > > > Sent: 2007?9?14? 2:53
> > > > > To: cxf-user@incubator.apache.org
> > > > > Subject: Wsdl Versioning
> > > > >
> > > > >
> > > > > We have recently migrated our web services offering from
> > > > > xfire to cxf and
> > > > > everything is going well. Now the issue is that we have
> > > > > several clients who
> > > > > would like different features and I am wondering how best to
> > > > > accomplish
> > > > > this. The changes being requested will likely result in a
> > > > > different wsdl so
> > > > > I would like to be able to version our wsdls with different
> > > > > namespaces. The
> > > > > question is where do I inspect the wsdl namespace and then
> > > > > how do I provide
> > > > > different functionality depending on the incoming namespace?
> > > > > I am using
> > > > > aegis bindings and cxf.xml with the cxf servlet.
> > > > > Any ideas would be appreciated.
> > > > >
> > > > > --
> > > > > Dave Kallstrom
> > > > >
> > > >
> > > > ----------------------------
> > > > IONA Technologies PLC (registered in Ireland)
> > > > Registered Number: 171387
> > > > Registered Address: The IONA Building, Shelbourne Road,
> > > Dublin 4, Ireland
> > > >
> > >
> > >
> > >
> > > --
> > > Dave Kallstrom
> > >
> >
> > ----------------------------
> > IONA Technologies PLC (registered in Ireland)
> > Registered Number: 171387
> > Registered Address: The IONA Building, Shelbourne Road, 
> Dublin 4, Ireland
> >
> 
> 
> 
> -- 
> Dave Kallstrom
> 

----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland

Re: Wsdl Versioning

Posted by Dave Kallstrom <da...@gmail.com>.
It looks like I might not be able to set this up through cxf.xml? I don't
see a way to get the MultipleEndpointObserver from the
JaxWsServiceFactoryBean so that I can add a routingInterceptor to it.

On 9/15/07, Liu, Jervis <jl...@iona.com> wrote:
>
> Hi, your interceptor needs to extend from
> AbstractEndpointSelectionInterceptor. Also make sure you have registered
> your routing interceptor with the MultipleEndpointObserver, please refer to
> \trunk\systests\src\test\java\org\apache\cxf\systest\versioning\Server.java
>
> Cheers,
> Jervis
>
> > -----Original Message-----
> > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > Sent: 2007?9?15? 2:39
> > To: cxf-user@incubator.apache.org
> > Subject: Re: Wsdl Versioning
> >
> >
> > Thanks for the response. I tried adding an incoming
> > interceptor that extends
> > AbstractEndpointInterceptor very similar to the example. The
> > only problem I
> > see is
> > that the incoming set of endpoints to my selectEndpoint
> > methid is always
> > null. My no arg constructor is calling
> > super(Phase.POST_STREAM) and then
> > addBefore(StaxInterceptor.class.getName())
> > Am I doing this correctly? Or could it be because I only have
> > one endpoint?
> >
> > On 9/14/07, Jean-François Daune <jf...@cigersoft.be> wrote:
> > >
> > >
> > > This document is quite interesting about this subject:
> > >
> > > http://blogs.iona.com/sos/20070410-WSDL-Versioning-Best-Practise.pdf
> > >
> > > Cheers,
> > >
> > > J-F
> > >
> > > -----Message d'origine-----
> > > De : Liu, Jervis [mailto:jliu@iona.com]
> > > Envoyé : vendredi 14 septembre 2007 3:55
> > > À : cxf-user@incubator.apache.org
> > > Objet : RE: Wsdl Versioning
> > >
> > >
> > > Hi Dave, we've had a very basic versioning implementation.
> > Basically how
> > > it works is an interceptor sitting at the beginning of
> > in-bound interceptor
> > > chain as a mediator to inspect then dispatch the coming
> > request to different
> > > endpoints. An example can be found from a system test sample:
> > >
> > \trunk\systests\src\test\java\org\apache\cxf\systest\versionin
> > g. Let me know
> > > if you have any further questions. Willem Jiang is
> > currently working on
> > > adding a much more powerful routing support using Apache
> > Camel, hopefully
> > > this will provide a better foundation for implementing
> > versioning in CXF
> > > once it is done.
> > >
> > > Cheers,
> > > Jervis
> > >
> > >
> > > > -----Original Message-----
> > > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > > Sent: 2007?9?14? 2:53
> > > > To: cxf-user@incubator.apache.org
> > > > Subject: Wsdl Versioning
> > > >
> > > >
> > > > We have recently migrated our web services offering from
> > > > xfire to cxf and
> > > > everything is going well. Now the issue is that we have
> > > > several clients who
> > > > would like different features and I am wondering how best to
> > > > accomplish
> > > > this. The changes being requested will likely result in a
> > > > different wsdl so
> > > > I would like to be able to version our wsdls with different
> > > > namespaces. The
> > > > question is where do I inspect the wsdl namespace and then
> > > > how do I provide
> > > > different functionality depending on the incoming namespace?
> > > > I am using
> > > > aegis bindings and cxf.xml with the cxf servlet.
> > > > Any ideas would be appreciated.
> > > >
> > > > --
> > > > Dave Kallstrom
> > > >
> > >
> > > ----------------------------
> > > IONA Technologies PLC (registered in Ireland)
> > > Registered Number: 171387
> > > Registered Address: The IONA Building, Shelbourne Road,
> > Dublin 4, Ireland
> > >
> >
> >
> >
> > --
> > Dave Kallstrom
> >
>
> ----------------------------
> IONA Technologies PLC (registered in Ireland)
> Registered Number: 171387
> Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland
>



-- 
Dave Kallstrom

RE: Wsdl Versioning

Posted by "Liu, Jervis" <jl...@iona.com>.
Hi, your interceptor needs to extend from AbstractEndpointSelectionInterceptor. Also make sure you have registered your routing interceptor with the MultipleEndpointObserver, please refer to \trunk\systests\src\test\java\org\apache\cxf\systest\versioning\Server.java

Cheers,
Jervis

> -----Original Message-----
> From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> Sent: 2007?9?15? 2:39
> To: cxf-user@incubator.apache.org
> Subject: Re: Wsdl Versioning
> 
> 
> Thanks for the response. I tried adding an incoming 
> interceptor that extends
> AbstractEndpointInterceptor very similar to the example. The 
> only problem I
> see is
> that the incoming set of endpoints to my selectEndpoint 
> methid is always
> null. My no arg constructor is calling 
> super(Phase.POST_STREAM) and then
> addBefore(StaxInterceptor.class.getName())
> Am I doing this correctly? Or could it be because I only have 
> one endpoint?
> 
> On 9/14/07, Jean-François Daune <jf...@cigersoft.be> wrote:
> >
> >
> > This document is quite interesting about this subject:
> >
> > http://blogs.iona.com/sos/20070410-WSDL-Versioning-Best-Practise.pdf
> >
> > Cheers,
> >
> > J-F
> >
> > -----Message d'origine-----
> > De : Liu, Jervis [mailto:jliu@iona.com]
> > Envoyé : vendredi 14 septembre 2007 3:55
> > À : cxf-user@incubator.apache.org
> > Objet : RE: Wsdl Versioning
> >
> >
> > Hi Dave, we've had a very basic versioning implementation. 
> Basically how
> > it works is an interceptor sitting at the beginning of 
> in-bound interceptor
> > chain as a mediator to inspect then dispatch the coming 
> request to different
> > endpoints. An example can be found from a system test sample:
> > 
> \trunk\systests\src\test\java\org\apache\cxf\systest\versionin
> g. Let me know
> > if you have any further questions. Willem Jiang is 
> currently working on
> > adding a much more powerful routing support using Apache 
> Camel, hopefully
> > this will provide a better foundation for implementing 
> versioning in CXF
> > once it is done.
> >
> > Cheers,
> > Jervis
> >
> >
> > > -----Original Message-----
> > > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > > Sent: 2007?9?14? 2:53
> > > To: cxf-user@incubator.apache.org
> > > Subject: Wsdl Versioning
> > >
> > >
> > > We have recently migrated our web services offering from
> > > xfire to cxf and
> > > everything is going well. Now the issue is that we have
> > > several clients who
> > > would like different features and I am wondering how best to
> > > accomplish
> > > this. The changes being requested will likely result in a
> > > different wsdl so
> > > I would like to be able to version our wsdls with different
> > > namespaces. The
> > > question is where do I inspect the wsdl namespace and then
> > > how do I provide
> > > different functionality depending on the incoming namespace?
> > > I am using
> > > aegis bindings and cxf.xml with the cxf servlet.
> > > Any ideas would be appreciated.
> > >
> > > --
> > > Dave Kallstrom
> > >
> >
> > ----------------------------
> > IONA Technologies PLC (registered in Ireland)
> > Registered Number: 171387
> > Registered Address: The IONA Building, Shelbourne Road, 
> Dublin 4, Ireland
> >
> 
> 
> 
> -- 
> Dave Kallstrom
> 

----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland

Re: Wsdl Versioning

Posted by Dave Kallstrom <da...@gmail.com>.
Thanks for the response. I tried adding an incoming interceptor that extends
AbstractEndpointInterceptor very similar to the example. The only problem I
see is
that the incoming set of endpoints to my selectEndpoint methid is always
null. My no arg constructor is calling super(Phase.POST_STREAM) and then
addBefore(StaxInterceptor.class.getName())
Am I doing this correctly? Or could it be because I only have one endpoint?

On 9/14/07, Jean-François Daune <jf...@cigersoft.be> wrote:
>
>
> This document is quite interesting about this subject:
>
> http://blogs.iona.com/sos/20070410-WSDL-Versioning-Best-Practise.pdf
>
> Cheers,
>
> J-F
>
> -----Message d'origine-----
> De : Liu, Jervis [mailto:jliu@iona.com]
> Envoyé : vendredi 14 septembre 2007 3:55
> À : cxf-user@incubator.apache.org
> Objet : RE: Wsdl Versioning
>
>
> Hi Dave, we've had a very basic versioning implementation. Basically how
> it works is an interceptor sitting at the beginning of in-bound interceptor
> chain as a mediator to inspect then dispatch the coming request to different
> endpoints. An example can be found from a system test sample:
> \trunk\systests\src\test\java\org\apache\cxf\systest\versioning. Let me know
> if you have any further questions. Willem Jiang is currently working on
> adding a much more powerful routing support using Apache Camel, hopefully
> this will provide a better foundation for implementing versioning in CXF
> once it is done.
>
> Cheers,
> Jervis
>
>
> > -----Original Message-----
> > From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> > Sent: 2007?9?14? 2:53
> > To: cxf-user@incubator.apache.org
> > Subject: Wsdl Versioning
> >
> >
> > We have recently migrated our web services offering from
> > xfire to cxf and
> > everything is going well. Now the issue is that we have
> > several clients who
> > would like different features and I am wondering how best to
> > accomplish
> > this. The changes being requested will likely result in a
> > different wsdl so
> > I would like to be able to version our wsdls with different
> > namespaces. The
> > question is where do I inspect the wsdl namespace and then
> > how do I provide
> > different functionality depending on the incoming namespace?
> > I am using
> > aegis bindings and cxf.xml with the cxf servlet.
> > Any ideas would be appreciated.
> >
> > --
> > Dave Kallstrom
> >
>
> ----------------------------
> IONA Technologies PLC (registered in Ireland)
> Registered Number: 171387
> Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland
>



-- 
Dave Kallstrom

RE: Wsdl Versioning

Posted by Jean-François Daune <jf...@cigersoft.be>.
This document is quite interesting about this subject:

http://blogs.iona.com/sos/20070410-WSDL-Versioning-Best-Practise.pdf

Cheers,

J-F

-----Message d'origine-----
De : Liu, Jervis [mailto:jliu@iona.com]
Envoyé : vendredi 14 septembre 2007 3:55
À : cxf-user@incubator.apache.org
Objet : RE: Wsdl Versioning


Hi Dave, we've had a very basic versioning implementation. Basically how it works is an interceptor sitting at the beginning of in-bound interceptor chain as a mediator to inspect then dispatch the coming request to different endpoints. An example can be found from a system test sample: \trunk\systests\src\test\java\org\apache\cxf\systest\versioning. Let me know if you have any further questions. Willem Jiang is currently working on adding a much more powerful routing support using Apache Camel, hopefully this will provide a better foundation for implementing versioning in CXF once it is done. 

Cheers,
Jervis


> -----Original Message-----
> From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> Sent: 2007?9?14? 2:53
> To: cxf-user@incubator.apache.org
> Subject: Wsdl Versioning
> 
> 
> We have recently migrated our web services offering from 
> xfire to cxf and
> everything is going well. Now the issue is that we have 
> several clients who
> would like different features and I am wondering how best to 
> accomplish
> this. The changes being requested will likely result in a 
> different wsdl so
> I would like to be able to version our wsdls with different 
> namespaces. The
> question is where do I inspect the wsdl namespace and then 
> how do I provide
> different functionality depending on the incoming namespace? 
> I am using
> aegis bindings and cxf.xml with the cxf servlet.
> Any ideas would be appreciated.
> 
> -- 
> Dave Kallstrom
> 

----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland

RE: Wsdl Versioning

Posted by "Liu, Jervis" <jl...@iona.com>.
Hi Dave, we've had a very basic versioning implementation. Basically how it works is an interceptor sitting at the beginning of in-bound interceptor chain as a mediator to inspect then dispatch the coming request to different endpoints. An example can be found from a system test sample: \trunk\systests\src\test\java\org\apache\cxf\systest\versioning. Let me know if you have any further questions. Willem Jiang is currently working on adding a much more powerful routing support using Apache Camel, hopefully this will provide a better foundation for implementing versioning in CXF once it is done. 

Cheers,
Jervis


> -----Original Message-----
> From: Dave Kallstrom [mailto:dave.kallstrom@gmail.com]
> Sent: 2007?9?14? 2:53
> To: cxf-user@incubator.apache.org
> Subject: Wsdl Versioning
> 
> 
> We have recently migrated our web services offering from 
> xfire to cxf and
> everything is going well. Now the issue is that we have 
> several clients who
> would like different features and I am wondering how best to 
> accomplish
> this. The changes being requested will likely result in a 
> different wsdl so
> I would like to be able to version our wsdls with different 
> namespaces. The
> question is where do I inspect the wsdl namespace and then 
> how do I provide
> different functionality depending on the incoming namespace? 
> I am using
> aegis bindings and cxf.xml with the cxf servlet.
> Any ideas would be appreciated.
> 
> -- 
> Dave Kallstrom
> 

----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland