BT
x Por favor preencha a pesquisa do InfoQ !

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

Percebemos que você está utilizando um bloqueador de propagandas

Nós entendemos porquê utilizar um bloqueador de propagandas. No entanto, nós precisamos da sua ajuda para manter o InfoQ gratuito. O InfoQ não compartilhará seus dados com nenhum terceiro sem que você autorize. Procuramos trabalhar com anúncios de empresas e produtos que sejam relevantes para nossos leitores. Por favor, considere adicionar o InfoQ como uma exceção no seu bloqueador de propagandas.