Path to esb

Da sia.
Versione del 19 mag 2009 alle 11:12 di Malvezzi (discussione | contributi) (→‎jruby)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Vai alla navigazione Vai alla ricerca

Installare ESB

  • montare /opt (fdiskare e formattare)
  • installare Apache Service Mix in /opt con sun-java-6
  • verificare se si può lanciare come utente generico (non root)
  • creare gli script di startup (/etc/init.d)

Fatto 10/4/2009

Sicurezza

  • activemq con ssl (certificato richiesto 14/4/2009)
  • stomp con username e passwd
  • autenticazione con certificati x509 client?

Camel

  • deployment per usare ldap
  • deployment per usare jdbc oracle
  • provare jruby in camel

jruby

  • far funzionare: jruby fatto 14/4/2009
  • far funzionare jruby come service connector dentro servicemix
    • attivare stomp in service mix: aggiungere in conf/activemq.xml nella sezione <amq:transportConnectors>
<amq:transportConnector name="stomp" uri="stomp://localhost:61613"/> 
    • mettere sotto git la cartella di lavoro (/opt/linea7)
    • creare un servizio in service mix che presieda la coda stomp
    • arricchire il servizio con un bc scripting jruby

installazione bc scripting jruby

A dispetto della documentazione, la creazione di una service unit scripting non funziona né con gli archetipi, né tantomeno con il comando:

/opt/apache-servicemix/bin/smx-arch su scripting

Come indicato nell mail: Re: smx-arch 3.3 scripting maven archetype doesnt work

Funziona però la creazione manuale del servizio, che implica il download del jar della su ed il suo referenziamento diretto:

 wget http://people.apache.org/maven-snapshot-repository/org/apache/servicemix/tooling/servicemix-scripting-service-unit/2008.01-SNAPSHOT/servicemix-scripting-service-unit-2008.01-20090417.063711-172.jar
 mvn install:install-file -DgroupId=org.apache.servicemix.tooling -DartifactId=servicemix-scripting-service-unit -Dversion=2008.01-SNAPSHOT -Dpackaging=jar -Dfile=servicemix-scripting-service-unit-2008.01-20090417.063711-172.jar
 /opt/apache-servicemix/bin/smx-arch su scripting -DarchetypeVersion=2008.01-SNAPSHOT

Su un altro repository sembra essere presente una versione più nuova di scripting-su: 2009-01. Si può cancellare dalla directory hotdeploy di servicemix lo installer servicemix-scripting-2008.01-installer.zip con quello 2009.01.

codice jruby

Scheletro di codice dello scripting-su per una route da file:poller verso su:scripting poi verso file:sender.

File src/main/resources/xbean.xml:

<beans xmlns:scripting="http://servicemix.apache.org/scripting/1.0"
      xmlns:jruby="urn:it:unimore:ci.a:jruby"
      xmlns:test="http://test"
      xmlns:util="http://www.springframework.org/schema/util"
      xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://servicemix.apache.org/scripting/1.0 http://servicemix.apache.org/schema/servicemix-scripting-@{servicemix-version}.xsd
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
      http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">    
   <scripting:endpoint
       service="jruby:jruby-jsr223" 
       endpoint="endpoint"
       script="classpath:RubyExchangeProcessorJSR223.rb"
       targetService="jruby:file" 
       targetEndpoint="poller" 
       bindings="#customBindings">
   </scripting:endpoint>
 <util:map id="customBindings">
       <entry key="answerJRuby"  value="JSR-223 with JRuby is working fine..." />
   </util:map>   
</beans>

File src/main/resource/RubyExchangeProcessorJSR223.rb

include Java

import javax.jbi.messaging.MessageExchange
import javax.jbi.messaging.NormalizedMessage
import javax.jbi.servicedesc.ServiceEndpoint
import org.apache.servicemix.jbi.jaxp.StringSource
import org.apache.servicemix.jbi.jaxp.SourceTransformer

$log.info("Starting JSR-223 jruby processor")

inputMessage = SourceTransformer.new().toString($inMessage.getContent());
$log.info "Hello, I got an input message: #{inputMessage}"

$outMessage.setContent(StringSource.new("<response>" + $bindings.get("answerJRuby") + "</response>"))
$log.info "JRUBY says: #{$outMessage}"
$log.info "JRUBY says again: #{$outMessage.inspect}"

print "\n"

print "Stopping JSR-223 jruby processor\n"