Path to esb
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"