Me mantendría alejado de los groovyws, apesta. Después de mirar alrededor, finalmente elegí la solución de usar servicios web de primavera y servicios web basados en contratos.
El cliente instancia objetos de comando con un método toXml() que genera el XML de solicitud de jabón. Luego use WebServiceTemplate para enviar a Endpoint.
Para el servidor, utilizamos puntos finales de servicios web de primavera. Analizar el xml entrante es un juego de niños, y no es necesario ordenar el XML en un objeto, ya que GPathResult resultante de un XmlSlurper es totalmente manejable. Nuestro servidor se ejecuta en la parte superior de Grails, por lo que aprovechamos el plugin springs grails, lo que hace que la creación de Endpoints sea aún más fácil.
Sin embargo, hay una advertencia. El plugin springws para griales está desactualizado. Los servicios web de Spring ahora son de la versión 2.x y el plugin springws viene con 1.4.x, creo. Sin embargo, es muy fácil de usar sin el complemento, y creo que actualizar el complemento a la API más reciente no es difícil.
Además, si quiere hacer MTOM, sprints se complica un poco más, porque necesita profundizar en el manejo de mensajes. Pude hacer algunas cosas bastante avanzadas de seguridad ws con los servicios web de primavera, sin embargo, no hay problema.
De lo contrario, usaría cxf (maneja muy bien MTOM), si quiere seguir con jax-ws et al. La sobrecarga es probablemente más alta, porque todos los proxies y pojos generados dinámicamente. Además, no está dirigido por contrato, lo cual es una gran ventaja para nosotros.
http://predic8.com/groovy-web-services-jax-ws.htm
http://cxf.apache.org/docs/how-do-i-develop-a-client.html
Mis requisitos para el proyecto que dio lugar a esta pregunta ha cambiado, así que en realidad no tratan las bibliotecas sugeridas por @ John-wagenleitner pero su respuesta pareció el más completo como una respuesta a mi pregunta. ¡Gracias a todos por las respuestas! – matmer