Hi Sathwik, Regarding your requirement: in this case, do you really need to specify the wsdl in your provider service? Do you use WS-Polices or schema validation? If no, I would suggest just to publish it without wsdl location.
Regards, Andrei. > -----Original Message----- > From: Sathwik B P [mailto:[email protected]] > Sent: Mittwoch, 15. April 2015 05:46 > To: [email protected] > Subject: Re: Need a generic service impl for any given WSDL Definition > > 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/releas > > e/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 > >
