Java EE + JRuby + Rails Interfaces rapidas para aplicações Java EE
http://sobrecodigo.com [email protected]
Por que Java EE?
http://sobrecodigo.com [email protected]
Meu ambiente na empresa • Servidores de aplicação Java EE
o comprados e com contrato com o fornecedor
• Muita gente que conhece e gosta de Java • Muitos projetos já prontos em Java
o E eu preciso interagir com estes projetos
• Dificil justificar fazer um projeto todo em outra tecnologia o Exceto se for uma tecnologia do fornecedor já
contratado que não me agradaria muito :D
http://sobrecodigo.com [email protected]
Por que Ruby on Rails?
http://sobrecodigo.com [email protected]
Produtividade! • Últimos projetos
o Velocidade no desenvolvimento
• Quick Start o Fácil de começar e de dar manutenção em qualquer
projeto
• Feito para web! o Forma mais rapida hoje de desenvolver uma
interface web para um banco de dados.
• Eu gosto o Feito para felicidade do programador (sério, esta
escrito no site do framework!) http://sobrecodigo.com [email protected]
www.rubyonrails.org Ruby on Rails is an open-source web framework that's
optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration.
http://sobrecodigo.com [email protected]
Contexto!
Banco de dados
Message Driven Beans
Stateless Session Beans/Web Services
http://sobrecodigo.com [email protected]
O que foi necessário?
• Acessar o banco da aplicação Java EE diretamente do Rails
• Chamar métodos de EJBs via JRuby • Enviar mensagens para MDBs usando
JRuby
http://sobrecodigo.com [email protected]
• Usando um banco já modelado em uma aplicação Rails o self.table_name = "..." o def self.table_name...end o self.primary_key = "..." o def self.primary_key...end o belongs_to/foreign_key o has_many/foreign_key
Acesso a banco
http://sobrecodigo.com [email protected]
Chamando métodos de EJBs require 'java' include_class 'javax.naming.InitialContext' ic = InitialContext.new foo = ic.lookup("...") result = foo.echo("This is foo!")
http://sobrecodigo.com [email protected]
Enviando mensagens @context =
InitialContext.new(Hashtable.new(environment)) @connection_factory = @context.lookup("ConnectionFactory") destination = @context.lookup(destination_name) connection = @connection_factory.create_connection() session = connection.create_session(false, Session::AUTO_ACKNOWLEDGE) producer = session.create_producer(destination) message = session.create_text_message message.text = message_text producer.send(message) session.close
http://sobrecodigo.com [email protected]
Hora de acordar!
http://sobrecodigo.com [email protected]
Exemplo • Aplicação Java EE
o Dados persistidos usando JPA 2 o Session Beans com regras de negócio o MDB para injestão de eventos
• Criar aplicação Rails o Acesso a dados via ActiveRecord o Chamar Session Beans para monitorar processo de
negocio o Botão para inserção de novos eventos no queue
http://sobrecodigo.com [email protected]
Deploy da aplicação • glassfish_rails • warbler
http://sobrecodigo.com [email protected]
Perguntas?
? �
O que mais? Livro de Rails? http://www.novatec.com.br/livros/rubyonrails2 Curso online de BDD? http://sobrecodigo.com Mais livros sobre Java? http://www.novatec.com.br
http://sobrecodigo.com [email protected]
Obrigado!
http://sobrecodigo.com [email protected]
Rails Script • jruby -S rails new justjava2013 -d jdbcmysql • cd justjava2013/ • [config/database.yml, config/initializers/
connection_cleanup.rb] • jruby -S rake db:create:all • jruby -S rails g scaffold_controller person
name:string birth:date • jruby -S rails g scaffold_controller invoice
value:number person:references dueDate:date • jruby -S warble
Top Related