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.

Avalie esse artigo

Relevância
Estilo/Redação

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
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.