BT

Serviços RESTful em Ruby usando JRuby e Jersey

por Dilip Krishnan , traduzido por Rafael Marques em 08 Jun 2010 |

Em um esforço para trazer a expressividade do ruby e os frameworks REST do Java, Charles Nutter torna possível desenvolver serviços RESTful utilizando JRuby+Rails. Ele observa o esforço das comunidades de Ruby e Rails em desenvolver aplicações RESTful que alavancam a web.

[...] Os rubistas tem ajudado a desbravar o caminho, construindo aplicações repletas de REST em praticamente tudo que eles escrevem. O próprio Rails é construído em torno do REST, contando com a maioria dos constrollers trabalhando como interfaces RESTful, e além disso permite ferramentas adicionais que ajudam a realizar chamadas REST de outras aplicações de forma transparente. Se você está fazendo serviços RESTful para uma aplicação Ruby típica, o Rails é o caminho a ser seguido.

Para demonstrar a habilidade de definir um serviço RESTful em JRuby, ele examina as soluções existentes para bibliotecas e frameworks  destinados a construir serviços RESTful em Java. Ele começa com um simples exemplo de serviço utilizando o padrão da API JAX-RS.

Eu segui o tutorial Getting Started do Jersey utilizando Ruby para tudo (e sem utilizar o Maven neste caso). A minha versão do HelloWorldResource deles fica assim em Ruby:

require 'java'java_import 'javax.ws.rs.Path'
java_import 'javax.ws.rs.GET'
java_import 'javax.ws.rs.Produces'

java_package 'com.headius.demo.jersey'
java_annotation 'Path("/helloworld")'
class HelloWorld
java_annotation 'GET'
java_annotation 'Produces("text/plain")'
def cliched_message
 "Hello World"
end
end

Ele descreve como o que ocorre por trás quando uma classe do ruby é compilada e descreve a representação em memória de um objeto.

Nos bastidores, esta classe irá carregar no fonte do nosso arquivo restful_service.rb e juntar todos os pedaços do Java e do Ruby, fazendo com que ambos possam ver o HelloWorld como a representação da classe HelloWorld. As chamadas de método são enviadas ao código Ruby, construtores enviam para o initialize, e por ai vai. Está realmente pertencendo aos dois mundos. Com o serviço em mãos, agora nós precisamos de um script de servidor para começar.

Ele prossegue lidando com o complicado CLASSPATH para o exemplo rodar.

Eu os coloquei na minha variável de ambiente CLASSPATH, mas sinta-se a vontade para fazer como você quiser.

jersey-core-1.2.jar
jersey-server-1.2.jar
jsr311-api-1.1.1.jar
asm-3.1.jar
grizzly-servlet-webserver-1.9.9.jar


Os quatro primeiros estão disponíveis em: jersey-archive download, e o último você pode encontrar no Maven ou outro lugar.

Ele conclui pedindo "exemplos para outras APIs que utilizam annotation que podemos testar com o Ruby". Há exemplos interessantes no fórum e visite o post original para detalhes de como desenvolver serviços RESTful com JRuby.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT