2012-05-16 21 views
13

Ho solo bisogno di un client SOAP per effettuare chiamate remote, ma sono un po 'un noob Groovy. Secondo lo Groovy documentation, la libreria SOAP di Groovy standard è deprecata. Invece, i documenti indicano una nuova libreria: GroovyWS.Qual è la libreria SOAP standard da utilizzare in Groovy?

Sfortunatamente, GroovyWS ha un avviso che dice che il progetto è inattivo e quindi punta a Groovy WSLite.

Groovy WSLite sembra ancora in fase di sviluppo attivo, ma non molto "Groovy-ish" rispetto alle precedenti 2 librerie. Wslite è quello che tutti usano?

+0

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

risposta

11

penso che si dovrebbe trovare sia GroovyWS e groovy-wslite (e HTTP Builder) sono in uso come librerie client Groovy SOAP in progetti e la decisione è stato probabilmente uno dei quali uno ha lavorato e che aveva l'API/avvicinare l'utente preferito (in quell'ordine).

Il mio consiglio è di provare GroovyWS se ti piace l'API che fornisce e la sua capacità di proxy di un documento WSDL e vedere se funziona per i servizi con cui devi interagire. Le cose non sono cambiate molto nel mondo SOAP quindi non mi preoccuperei troppo di quanto recentemente è stato aggiornato. Se funziona allora hai finito, se riscontri dei problemi che non riesci a trovare facilmente aiuto per allora proverei le alternative.

groovy-wslite (disclaimer: io sono l'autore) si propone di fornire un peso leggero (in termini di dipendenze) alternativa che commercia la comodità di WSDL parsing/proxy per rendere più facile avere più controllo sulla chiamata del sapone risultante senza dover per scavare in profondità all'interno di alcuni framework Java sottostanti come CXF. Alcuni preferiscono avere le funzionalità aggiuntive di una libreria costruita su un framework come questo, mentre altri potrebbero preferire la semplicità dell'altro approccio.

La cosa che rende così grande Groovy è quanto sia facile integrarsi con Java. Quindi, come altri hanno già sottolineato, è possibile integrarsi facilmente con i client di servizi Web Java come Spring WS, CXF e JAX-WS.

2

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

+0

FWIW, 4 anni più tardi, e migrando lontano da SOAP, darei un colpo di groovy wslite, per i client di servizi web residui. Costruendo endpoint del server, dovrei studiare di nuovo il campo. Per favore, prendi la mia risposta nel contesto del 2012. – loteq

0

Sembra che avete fatto la yourslef compiti! Groovy WS Lite sembra essere al momento in funzione. Se vuoi vedere l'azione di spring-ws usando Groovy, ecco un progetto test suite che avevo creato in github.

Problemi correlati