Estilo JAX-WS vs SAAJ, que usar

¿Cuál es la diferencia, filosófica o de otro tipo, entre llamar a un servicio web desde un código Java utilizando las clases Service y Dispatch, frente a una clase SOAPConnection?

Por ejemplo, algo como esto:

SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = scf.createConnection();
SOAPMessage reply = soapConnection.call(soapMessage, url);

vs algo más o menos en esta línea?

svc = Service.create(url, serviceName);
Dispatch<SOAPMessage> dispatch = svc.createDispatch(portName, SOAPMessage.class, service.Mode.MESSAGE);
SOAPMessage reply = (SOAPMessage)dispatch.invoke(soapMessage);

¿Cuál es la diferencia entre estos y por qué seleccionar un enfoque sobre el otro?

Respuestas a la pregunta(2)

Su respuesta a la pregunta