@Override
protected BindingInfo createBindingInfo() {
JaxWsServiceFactoryBean sf = (JaxWsServiceFactoryBean)getServiceFactory();
JaxWsImplementorInfo implInfo = sf.getJaxWsImplementorInfo();
String jaxBid = implInfo.getBindingType();
String binding = getBindingId();
if (binding == null) {
binding = jaxBid;
if (binding.equals(SOAPBinding.SOAP11HTTP_BINDING)
|| binding.equals(SOAPBinding.SOAP11HTTP_MTOM_BINDING)
|| binding.equals(SOAPBinding.SOAP12HTTP_BINDING)
|| binding.equals(SOAPBinding.SOAP12HTTP_MTOM_BINDING)) {
binding = "http://schemas.xmlsoap.org/soap/";
if (getBindingConfig() == null) {
setBindingConfig(new JaxWsSoapBindingConfiguration(sf));
}
}
setBindingId(binding);
}
boolean messageMode = implInfo.getServiceMode().equals(javax.xml.ws.Service.Mode.MESSAGE);
if (getBindingConfig() instanceof JaxWsSoapBindingConfiguration) {
JaxWsSoapBindingConfiguration conf = (JaxWsSoapBindingConfiguration)getBindingConfig();
if (jaxBid.equals(SOAPBinding.SOAP12HTTP_BINDING)) {
conf.setVersion(Soap12.getInstance());
}
if (jaxBid.equals(SOAPBinding.SOAP12HTTP_MTOM_BINDING)) {
conf.setVersion(Soap12.getInstance());
conf.setMtomEnabled(true);
}
if (jaxBid.equals(SOAPBinding.SOAP11HTTP_MTOM_BINDING)) {
conf.setMtomEnabled(true);
}
conf.setJaxWsServiceFactoryBean(sf);
}
BindingInfo bindingInfo = super.createBindingInfo();
// This disables a bunch of unwanted interceptors for the Provider scenario.
// Not ideal, but it works.
if (implInfo.isWebServiceProvider()) {
bindingInfo.setProperty(AbstractBindingFactory.DATABINDING_DISABLED, Boolean.TRUE);
if ((bindingInfo instanceof SoapBindingInfo)
&& messageMode
&& !implInfo.getProviderParameterType().equals(SOAPMessage.class)) {
bindingInfo.setProperty(SoapBindingFactory.MESSAGE_PROCESSING_DISABLED, Boolean.TRUE);
}
}
return bindingInfo;