The fundamental prerequisite for using provider mode is to
define a custom Provider<> class that implements
the invoke() method. In fact, the sole purpose of
this class is to provide runtime type information for Apache CXF:
the invoke() method never gets
called!
By implementing the provider class in the way shown here, you
are merely indicating to the Apache CXF runtime that the WS endpoint
should operate in in PAYLOAD mode and the type of the message
PAYLOAD should be SAXSource.
The definition of the provider class is relatively short and
the complete definition of the customer provider class,
SAXSourceService, is as follows:
// Java
package com.fusesource.customerwscamelcxfprovider;
import javax.xml.transform.sax.SAXSource;
import javax.xml.ws.Provider;
import javax.xml.ws.Service.Mode;
import javax.xml.ws.ServiceMode;
import javax.xml.ws.WebServiceProvider;
@WebServiceProvider()
@ServiceMode(Mode.PAYLOAD)
public class SAXSourceService implements Provider<SAXSource>
{
public SAXSource invoke(SAXSource t) {
throw new UnsupportedOperationException("Not supported yet.");
}
}The customer provider class, SAXSourceService,
must be annotated by the @WebServiceProvider
annotation to mark it as a provider class and can be optionally
annotated by the @ServiceMode annotation to select
PAYLOAD mode.








