Blogs
spring y apache servicemix embebido.
Después de un largo tiempo de no publicar, he decidido compartir este articulo sobre como integrar Spring con Apache ServiceMix,no voy a ahondar mucho sobre el framework y el ESB, googleando por la red,no encontré mucha información acerca de como integrar estas dos tecnologías, mas que en la mismo sitio de serviceMix, donde existe un articulo que nos indica por que usar Spring y como podemos configurar nuestro propio fichero xml para nuestros componentes.
¿Por que el articulo?
Uno de los inconvenientes que encontré al momento de empezar a trabajar con apache servicemix, fue el problema con los schemas, tags, y beans; no se si es buena practica estar acostumbrado al editor que trae el STS ,pero me facilita mucho el trabajo al configurar los beans de spring, no fue así cuando intente trabajar con los tags de servicemix, ya que de partida me daba errores al encontrar los schemas en el sitio de apache, fue todo un caos... el tener que aprenderme la estructura que necesita el archivo de servicemix, mmm no tuve mucho tiempo, así que el objetivo fue pasar aquella configuración, a una mas natural de spring, para esto tome el siguiente ejemplo desde el sitio de apache servicemix, a grandes rasgos, la idea es tomar un archivo desde la carpeta inbox, moverlo y cambiarle el nombre, siempre y cuando se un archivo con formato xml.
Para ver el articulo ve al siguiente enlace
Versión OffLine del libro "Desarrollando una aplicacion Spring Framework MVC paso a paso"
Comparto con todos, una Versión OffLine en español que he prepado del libro "Desarrollando una aplicacion Spring Framework MVC paso a paso" de los Autores: Thomas Risberg, R
Respaldos de MySql con Groovy, Amazon S3 y Grape
En SynergyJ estamos migrando poco a poco nuestra infraestructura a Amazon EC2 para los servidores, por otro lado ya llevamos casi 3 años usando Amazon S3 y es un servicio que vale mucho la pena. Amazon S3 es un servicio muy simple y barato para almacenar información publica y privada.
La información de nuestras bases de datos es vital y por lo tanto es bien necesario que tengamos que hacer respaldo de nuestras bases de bases para evitar perdida de información. Yo considero que un buen plan de respaldos debe contener lo siguiente
- 100% Automatizado
- El respaldo debe estar seguro, tanto a nivel privacidad como de disponibilidad
Seguramente habrá mas características, pero por el momento es lo que mas me importa y es en lo que me puse a trabajar para solucionar este problema en nuestra infraestructura. Como mencione antes, Amazon S3 es un servicio de almacenaje de archivos que es muy confiable, casi al 100 %, por lo tanto pensé en generar el respaldo y guardarlo en Amazon S3 de tal manera que lo tengamos disponible en cuanto se necesite.
Existen muchas soluciones muy simples que permiten respaldar una base de datos de mySql y guardarlo en Amazon S3, pero quise ponerme a trabajar un poco en hacer una propia herramienta de respaldo, y pues pensé hacerlo en Groovy ya que no encontré algo similar.
Bien, con Groovy fue muy sencillo hacer el dump de mySql, la clase que hace el respaldo en Groovy es la siguiente:
class MySqlBackuper {
def host = 'localhost'
def user = 'root'
def password = ''
def database = ''
def doBackup() {
def filename = "$database-${System.currentTimeMillis()}"
def sqlfilename = "${filename}.sql"
def zipfilename = "${filename}.gz"
println "Trying Backup, database='$database' with '$user' in file $zipfilename"
//This is the command to perform the dump via mySql tools
def command = "mysqldump --opt --user=${user} --password=${password} ${database}"
def dump = command.execute()
dump.waitFor()
new File(sqlfilename).write(dump.text)
//AntBuilder is awesome, cool to have it in runtime, not only in develoment time
def ant = new AntBuilder()
//Create the Gzip file
ant.gzip zipfile:zipfilename, src:sqlfilename
ant.delete file:sqlfilename
//return the GZip filename
zipfilename
}
}
Para subir el archivo del dump de mySql a Amazon S3, necesitábamos usar el API de Amazon S3 para realizarlo, en Java existen varias librerías, a mi juicio la mas adecuada es JetS3T, es muy sencilla de usar, solo es necesario ponerla en el classpath y listo. El poner un jar en el classpath puede parecer algo sencillo, pero hay varias cosas a considerar, entre ellas, pues bajarla de algún lugar y dejarla disponible en el classpath.
Los chicos de Groovy pensamos en alguna manera sencilla de que las clases mismas definan que librerías necesiten, ¡en el mismo código!, de tal manera que el código mismo se encargue de obtener (descargar) la librería si es necesario y cargarla en el classpath, sin necesidad de escribir archivos de build o scripts que se encarguen de ello. En Groovy existe algo llamado transformaciones AST, que permiten que en tiempo de compilación el código de byte vaya con algunas modificaciones, solo con usar anotaciones. Revisen este tema de Groovy que esta super interesante.
La anotación que hace la magia en Groovy es @Grab, que hace maravillas, como ir al repositorio de jars de Maven y descargarse la librería que le indiques y ponerla en el classpath sin esfuerzo, es bien importan
te mencionar que no siempre va a descargarla a internet, solo la descarga la primera vez.
La clase que programe en Groovy para guardar archivos en Amazon S3 es la siguiente, chequen el uso de la anotación @Grab
@Grab(group='net.java.dev.jets3t', module='jets3t', version='0.7.2')
class S3Storer {
def awsAccessKey
def awsSecretKey
private def awsCredentials = null
private def s3Service = null
/**
*
*/
def storeFile(file, bucketName) {
def object = new org.jets3t.service.model.S3Object(new File(file))
def bucket = getS3Service().getBucket(bucketName)
if(bucket) {
println "Storing $file on $bucketName wait a moment please..."
def storedFile = s3Service.putObject(bucket, object);
println "Successfully upload $file"
storedFile
} else {
println "the bucket $bucketName cant be found."
null
}
}
private def getCredentials() {
if(!awsCredentials) {
awsCredentials = new org.jets3t.service.security.AWSCredentials(awsAccessKey, awsSecretKey);
}
awsCredentials
}
private def getS3Service() {
if(!s3Service) {
s3Service = new org.jets3t.service.impl.rest.httpclient.RestS3Service(getCredentials())
}
s3Service
}
}
El paso final es juntar la clase que hace respaldos de mySql y la clase que sube archivos a Amazon S3 para que unas cuantas lineas podamos programar el respaldo y almacenaje de la base de datos. Todo en unas cuantas lineas¡¡¡¡
//Here you can provide the database, password, even the username to perform the backup in gzip def sqlDatabasefile = new MySqlBackuper(database:'databaseName', username:'user', password:'yourPassword').doBackup() println 'Performing MySql Backup to Amazon S3' def storer = new S3Storer(awsAccessKey:'', awsSecretKey:'') // The filename and the bucket name def f = storer.storeFile(sqlDatabasefile, 'yourBucketName')
Espero les haya gustado el código esta disponible en mi cuenta de GitHub por si le voy agregando mejoras, como diversos tipos de respaldos y mas flexibilidad para Amazon S3
Maven-Spring-Aspectos con @Configurable y Weaving
Porqué la mayoría de la gente usa Load Time Weaving (LTW)? Esto requiere reemplazar el javaagent/classloader para tu JVM el cual batalla con el ordenamiento de todas las cosas.
Integración Spring Batch + Scheduling
En este articulo presentamos una alternativa para integrar Spring Batch con spring Scheduling.
Procesamiento con Spring Batch 2.0
El tutorial Procesamiento con Spring Batch 2.0 tiene varios ejemplos de código y explicaciones sobre la utilización de este framework para el procesamiento por lotes.
Diseño por Contrato con OVal y Spring
OVal es un framework de validación para Java, que permite realizar comprobaciones a cualquier tipo de objetos y crear soluciones usando un enfoque
Session time-out
hola,
Hola Mundo con Google App Engine y Maven
Hola Amigos,
El fin de semana escribi un pequeño tutorial de como hacer un hola mundo con google app engine y maven.
Expert Spring MVC and Web Flow + PDF Download
Que tal gente ... les comparto un buen libro electronico de Spring MVC.. muy bueno aunque cuesta pero de echo muy economico a comparacion de Amazon, les adjunto el URL http://www.lulu.com/content/multimedia/expert-spring-mvc-and-web-flow/6684402
Espero que les sirva de ayuda






Comentarios recientes
hace 4 días 11 horas
hace 5 días 4 horas
hace 5 días 20 horas
hace 6 días 53 mins
hace 6 días 11 horas
hace 1 semana 4 horas
hace 1 semana 1 día
hace 1 semana 1 día
hace 1 semana 1 día
hace 1 semana 3 días