You MIGHT be able to add an implementorClass="Service2" attribute to the jaxws:endpoint. That would tell it the class to actually look at. I'm not 100% sure that works though.
It would probably be good to provide an endpointInterface attribute to jaxws:endpoint to override the value in the @WebService annotation. We can pretty much override everything else (endpoint name, service name, etc...). Overriding that would make sense. Feel free to log a feature request (and a patch would be REAL nice). :-) Dan On Thursday 24 February 2011 5:55:18 AM Bertrand TROLARD wrote: > Hi, > I'm new to CXF. > > I try to use JAX-WS to and I want to have severals web-services with the > same java class for the implementation. > For these web-services, I want to use the same bean. > > Each web-service has more and more fontions, but every "client" can't > have access to all fonctions (url dependant). > I create inherited class to get a different @WebService annotation for > each web-service. > The bean will be the last derived class. > > @WebService(targetNamespace = "http://service2/", endpointInterface = > "my.class.Service2", portName = "Service2Port", serviceName = > "Service2Service") > class ServiceImpl2 extends ServiceImpl1 { > } > > @WebService(targetNamespace = "http://service1/", endpointInterface = > "my.class.Service1", portName = "Service1Port", serviceName = > "Service1Service") > class Service1Impl implement Service1, Service2{ > } > > The cxf configuration file. > <jaxws:endpoint xmlns:tns="http://service1/" id="id_service1" > implementor="#commonBean" > endpointName="tns:Service1Port" > serviceName="tns:Service1" address="/Service1Test"> > </jaxws:endpoint> > > <jaxws:endpoint xmlns:tns="http://service2/" id="id_service2" > implementor="#commonBean" > endpointName="tns:Service2Port" > serviceName="tns:Service2" address="/Service2Test"> > </jaxws:endpoint> > > <bean id="commonBean" class="my.class.Service2Impl" init-method="start" > > ... > </bean> > > But for each web-service I got the same WSDL wich is the Service2.wsdl. > > > When I do that with XFire and it works fine. The service.xml file looks > like: > > <service> > <name>Service1</name> > <serviceClass>my.interface.Service1</serviceClass> > <scope>application</scope> > <serviceBean>#commonBean</serviceBean> > </service> > > <service> > <name>Service2</name> > <serviceClass>my.interface.Service2</serviceClass> > <scope>application</scope> > <serviceBean>#commonBean</serviceBean> > </service> > > <bean id="commonBean" class="my.class.Service12Impl" init-method="start" > > </bean> > > > class Service12Impl implement Service1, Service2 { > ... > } > > > Is it possible to do the same with CXF ? > > Thank a lot, > > Bertrand -- Daniel Kulp [email protected] http://dankulp.com/blog Talend - http://www.talend.com
