Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Torquebox - O melhor dos dois mundos

Avatar for abstractj abstractj
February 02, 2012

Torquebox - O melhor dos dois mundos

Avatar for abstractj

abstractj

February 02, 2012
Tweet

More Decks by abstractj

Other Decks in Programming

Transcript

  1. ENTERPRISE WAR JAX-RPC Struts Spring JAAS EJB JNI EAR SOA

    JAX-WS JSF Java-FX JNDI RMI JMX JAXP JAXB JDO JAX-RS JAXR JSTL StAX JAF JDOM AWT Swing JEE JSE JCP JVM JME NIO JSP JRE POJO JavaBean EJBQL JPQL NPE Saturday, July 23, 2011
  2. “You get true multithreading that can use all your computer’s

    cores from one process, plus a virtual machine that’s been tuned for a decade and a half.” Using JRuby - Bringing Ruby to Java Saturday, July 23, 2011
  3. TorqueBox “The power of JBoss with the expressiveness of Ruby”

    Jim Crossley - MagicRuby Conference Saturday, July 23, 2011
  4. ➜ wget http://torquebox.org/builds/LATEST/torquebox-dist- bin.zip ➜ unzip torquebox-dist-bin.zip ➜ export TORQUEBOX_HOME=$PWD/torquebox-1.x

    ➜ export JBOSS_HOME=$TORQUEBOX_HOME/jboss ➜ export JRUBY_HOME=$TORQUEBOX_HOME/jruby ➜ export PATH=$JRUBY_HOME/bin:$PATH Saturday, July 23, 2011
  5. ../app/jobs class JobDemo def initialize #Codigo de inicializacao end def

    run # O que você quer executar end end Saturday, July 23, 2011
  6. Tasks class EmailerTask < TorqueBox::Messaging::Task def send_welcome(payload) to = "#{payload[:name]}

    <#{payload[:address]}>" # send welcome email to the user end end Saturday, July 23, 2011
  7. Tasks class UserController < ApplicationController def register user = User.new(params[:user])

    EmailerTask.async(:send_welcome, :address => user.email, :name => user.name) end end Saturday, July 23, 2011
  8. Processors include TorqueBox::Messaging class PrintHandler < MessageProcessor def on_message(body) puts

    "Processing #{body} of #{message}" end def configure(opts) @color = opts['color'] end end Saturday, July 23, 2011
  9. Queues include TorqueBox req = Messaging::Queue.new '/queues/questions' res = Messaging::Queue.new

    '/queues/answers' Thread.new do req.publish "What time is it?" puts res.receive( :timeout => 1000 ) end puts req.receive res.publish Time.now Saturday, July 23, 2011
  10. class BazingaService def initialize @queue = Messaging::Queue.new(“bazinga”) end def start

    @queue.publish “Testing” end def stop # O que fazer quando o serviço receber um stop end end Saturday, July 23, 2011
  11. Java package com.gurusp; public class Bazinga { //gets e sets

    public void say(String message) { // Execução do método } } Deploy do jar na aplicação app/ models/ views/ controllers/ lib/bazinga.jar Saturday, July 23, 2011
  12. Ruby class BazingaController < ApplicationController include TorqueBox::Injectors def create bazinga

    = inject(com.gurusp.Bazinga ) bazinga.say “Ruby is for Java” end end Saturday, July 23, 2011
  13. Caching class BeersController < ApplicationController caches_action :most_popular, :expires_in => 30.seconds

    def most_popular @popular_beers = Beer.most_popular(:limit => 25) end end Saturday, July 23, 2011