Hi Adrei, Thanks for your response.
The requirement is, "There would be one generic service implementation class for ANY given WSDL definition". Irrespective of the service names, port names, wsdl operations, all requests coming in should land on the same service implementation method. HelloWorld.wsdl -> CommonProviderService Greeter.wsdl -> CommonProviderService Stock.wsdl -> CommonProviderService Henceforth I cannot embed the portName or the service names in the Provider class. This service is like a passthrough, the payload will be consumed and response will be generated by our runtime components in the system. *Update:* *I could get over the previous error by explicitly setting the serviceName and endpointName in the bean.* *But now I don't see the service registered under CXFNoSpringSevlet and neither do I get the publised WSDL from the service.* regards, sathwik On Wed, Apr 15, 2015 at 12:48 AM, Andrei Shakirin <[email protected]> wrote: > Hi, > > The error message says that service name in your wsdl doesn't match to > default service name generated on the base of CommonProvider class. > You can configure service name using @WebServiceProvider annotation: > > @WebServiceProvider(portName = " CommonProvider", serviceName = " > CommonProviderService ", > targetNamespace = " http://provider.example/) > @ServiceMode(value=Service.Mode.PAYLOAD) > public class CommonProvider implements Provider<Source> {...} > > By the way there is more portable way to create service implementing > Provider interface: using javax.xml.ws.Endpoint. > Take a look this example for details: > https://github.com/apache/cxf/blob/master/distribution/src/main/release/samples/jaxws_dispatch_provider/src/main/java/demo/hwDispatch/server/Server.java > > Regards, > Andrei. > > > > -----Original Message----- > > From: Sathwik B P [mailto:[email protected]] > > Sent: Dienstag, 14. April 2015 11:26 > > To: [email protected] > > Subject: Need a generic service impl for any given WSDL Definition > > > > Hi Guys, > > > > > > We need to create cxf services from wsdl definitions. There would be one > > generic service implementation class for any given WSDL service. > > > > So I suppose implementation of javax.xml.ws.Provider interface would the > right > > choice here. > > > > I have been working with ReflectionServiceFactoryBean and > > JaxWsServiceFactoryBean but not been able to create the service at all. > > > > Here is the code snippet, > > > > URL resource = > > getClass().getResource("/examples/client/HelloWorld.wsdl"); > > Bus bus = BusFactory.newInstance().createBus(); > > ReflectionServiceFactoryBean bean = new > ReflectionServiceFactoryBean(); > > bean.setWsdlURL(resource.toString()); > > bean.setBus(bus); > > bean.setPopulateFromClass(false); > > bean.setServiceClass(CommonProvider.class); > > bean.create(); > > > > > > @WebServiceProvider() > > @ServiceMode(value=Service.Mode.PAYLOAD) > > public class CommonProvider implements Provider<Source> {...} > > > > > > *Error:org.apache.cxf.service.factory.ServiceConstructionException: > Could not > > find definition for service { > http://provider.example/}CommonProviderService > > <http://provider.example/}CommonProviderService>.* > > > > It's pretty much the code from ProviderServiceFactoryTest > > > > What am I missing here? > > > > regards, > > sathwik >
