When it is known that SOAP version used is 1.1 [ instanceof Soap11 ], CXF should use MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL) instead of MessageFactory.newInstance()
Further more by default when version is neither of 1.1 or 1.2, then instead of returning null, CXF should return MessageFactory.newInstance(SOAPConstants.DEFAULT_SOAP_PROTOCOL) or MessageFactory.newInstance(SOAPConstants.DYNAMIC_SOAP_PROTOCOL)
Given below is an example of cxf code where this refactoring can be done
- In future, MessageFactory.newInstance() may not return object instance of the default implementation that does not supports "SOAP 1.1 Protocol"
- Some JEE Appserver implementations of MessageFactory.newInstance(), currently do not return factory that supports "SOAP 1.1 Protocol"
- Weblogic 10.3.x [ weblogic.webservice.core.soap.MessageFactoryImpl ] does not support SAAJ "SOAP 1.1 Protocol" -> "java.lang.UnsupportedOperationException: This class does not support SAAJ 1.1"
- This could help ease use of CXF libraries in JEE applications even if Application Server has it's own SOAP/SAAJ implementation. By above method, CXF will always get MessageFactory that supports required protocol.