How to consume WebServices with Groovy

Primeiro instale o sdk groovy na sua máquina, usando o tar (ou zip) fornecido em http://groovy.codehaus.org/Download e instale como descrito em http://groovy.codehaus.org/Tutorial+1+-+Getting+started.

Após estar tudo ok, você conseguirá abrir um console de linha de comando digitando groovysh ou um console gráfico digitando groovyConsole.

Para realmente comecar a consumir você deverá baixar um jar da página http://groovy.codehaus.org/GroovyWS [TODO: explicar para que servem cada jar] e coloca-lo em algum lugar do seu classpath. (que pode ser em $HOME/.groovy/lib — , em $GROOVY_HOME/lib)

Voce pode já comecar a consumir webservices em wsdl, mas o jeito mais facil de comecar a fazer testes é criar um servidor wsdl local — para faze-lo, comece criando uma
classe de servico simples como essa:

class SystemService {
String ifconfig(lan){
def interface_lan = (lan ? lan : “-a”)
“/sbin/ifconfig ${interface_lan}”.execute().text
}

String top(){
“top -bn1”.execute().text
}
}

Essa é uma classe simples com dois metodos, que retornam os comandos top e ifconfig na máquina local.
Para abrir seu servidor wsdl, simplesmente rode esse script no mesmo diretorio que voce criou a class SystemService:

import groovyx.net.ws.WSServer

def server = new WSServer()
server.setNode(“SystemService”, “http://localhost:8888/SystemService”)

Pronto! Seu servidor já está rodando e voce pode acessar os seu wsdl pela url http://localhost:8888/SystemService?wsdl

Para realmente ver a “mágica” groovy funcionar, abra um terminal digitando groovysh e digite os seguintes comandos:

import groovyx.net.ws.WSClient
proxy = new WSClient(“http://localhost:8888/SystemService?wsdl”, this.class.classLoader)
proxy.top()
proxy.ifconfig()
proxy.ifconfig(“eth0”)

Essas linhas fazem exatamente:

  1. Importa a classe necessaria para utilizar o webservice
  2. cria as classes proxy on-the-fly utilizando o wsdl
  3. Invoca o metodo top da classe SystemService definida acima na máquina do webservice server
  4. Faz a mesma coisa com o metodo ifconfig (tanto sem parametros, quanto passando uma interface

A mesma coisa pode ser feita com outros webservices como http://www.webservicex.net/CurrencyConvertor.asmx?WSDL que é um conversor de currency bem fiel.

(Nota:  para conseguir os códigos das moedas desse webservice, você terá que executar:

symbols = Thread.currentThread().getContextClassLoader().loadClass(“net.webservicex.Currency”)

c.values().each { println it }

Já que a classe Currency é uma enumeracao, logo não pode ser instanciada, e nem utilizada diretamente, já que todas as classes necessárias para o webservice ser consumido foram criadas em memória.)

(Nota 2: Caso você queira compilar seu webservice server, para que ela seja “portável”, utilize o comando: groovyc SeuScriptWebService. Para rodar a classe resultante, utilize java -classpath /path/para/o/arquivo/groovy-all-1.5.5.jar:/path/para/o/arquivo/groovyws-standalone-0.3.1.jar:. SeuScriptWebServiceCompilado )

Advertisements
This entry was posted in groovy, technology and tagged , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s