Hi Andrie, *Background:*
I am coming from Apache ODE background. ODE currently has Axis2 as the frontend integration layer. We are looking for an additional integration layer using CXF. ODE is a BPEL engine where business processes are deployed and executed. A business process is exposed as a Web Service to the external world from the integration layer (Axis2 now). We need most of the WS-* standards supported by the exposed web service framework. *What I am looking for* I am looking for an equivalent implementation for the feature what Axis2 provides. Have a look at the file below. https://github.com/apache/ode/blob/master/axis2/src/main/java/org/apache/ode/axis2/hooks/ODEAxisService.java#L131 In line 131, a object of ODEMessageReceiver is created which is an extension of Axis2 AbstractMessageReceiver. For each WSDL operation a message receiver is set, see line 135. All incoming service operation requests land on this receiver from which the ODE runtime takes over for processing. How do I do this in CXF? regards, sathwik On Wed, Apr 15, 2015 at 2:24 PM, Andrei Shakirin <[email protected]> wrote: > 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 > > > >
