Sarei rimasto lontano dai groovyws, fa schifo. Dopo essermi guardato attorno, ho finalmente scelto la soluzione per l'utilizzo dei servizi Web di primavera e dei servizi Web a contratto.
Il client crea degli oggetti comando con un metodo toXml() che genera l'XML di richiesta soap. Quindi utilizzare il WebServiceTemplate per sendToEndpoint.
Per il server, utilizziamo gli endpoint dei servizi Web di primavera. L'analisi dell'ingresso xml è un gioco da ragazzi e non è necessario eseguire il marshalling dell'XML in un oggetto, in quanto il GPathResult risultante da un XmlSlurper è totalmente gestibile. Il nostro server gira su grails, quindi abbiamo sfruttato il plugin springws grails, rendendo ancora più semplice la creazione di Endpoint.
C'è comunque un avvertimento. Il plugin Springws per Grails non è aggiornato. I servizi web di Spring ora sono versione 2.xe il plugin springws ha 1.4.x penso. Tuttavia, è molto facile da usare senza il plugin, e penso che l'aggiornamento del plugin alla nuova API non sia difficile.
Inoltre, se si desidera eseguire MTOM, i rimasugli diventano un po 'più complicati, poiché è necessario approfondire la gestione dei messaggi. Sono stato in grado di fare alcune cose di sicurezza ws piuttosto avanzate con i servizi web di primavera, tuttavia, nessun problema.
Altrimenti userei cxf (gestisce correttamente MTOM), se si vuole restare con jax-ws et al. L'overhea è probabilmente più alto, perché tutti i proxy e i pojos generati dinamicamente. Inoltre, non è guidato dal contratto, il che è un grande vantaggio per noi.
http://predic8.com/groovy-web-services-jax-ws.htm
http://cxf.apache.org/docs/how-do-i-develop-a-client.html
Le mie esigenze per il progetto che ha generato questa domanda sono cambiate, quindi in realtà non ho provato le librerie suggerite da @ john-wagenleitner ma la sua risposta mi è sembrata la più completa come risposta alla mia domanda. Grazie a tutti per le risposte! – matmer