Entradas

Mostrando entradas de septiembre, 2012

OSGi y los TransactionManager malditos

Puede ser que estes comenzando tu andadura en el uso de módulos OSGi, y tal vez puede ser que trabajes en un proyecto muy grande, o no tanto :-), en el que se utilice un ESB, como por ejemplo FuseESB. Si estas en esta situación es muy normal que tengas que conectarte a múltiples bases de datos y diferentes sistemas. Algo de lo que tal vez no te has percatado todavía es que el look-up por defecto de los servicios OSGi puede jugarte una mala pasada.

Nota: Este artículo presupone que tienes conocimientos previos de OSGi y Spring Dynamic Modules.

Imaginemos que existen dos bundles que corresponden a repositorios, que pueden no ser más que conectores con diferentes bases de datos. En este ejemplo FooRepository y BarRepository. Imaginemos también que tenemos otro bundle FooServices que tiene como dependencia FooRepository, pero los servicios OSGi exportados usando SpringDM se definen de la siguiente manera.



¿Le ves algún problema?, ¿no?. Tranquilo según el manual esta es la manera de declara…

Phonegap/Cordova, iOS y los iframes

Imagen
Es muy posible que todos hayáis tenido la necesidad de incluir un iframe en vuestra aplicación porque queréis mostrar el contenido HTML de una determinada URL. Suponiendo que no queréis utilizar JQuery o cualquier otra solución similar para realizar esta tarea (porque queréis que se pueda navegar dentro del iframe), podéis llegar a tener el mismo dilema que yo.

Utilizando Cordova 2.0.0 en iOS 5.1 con la configuración por defecto, cuando creo un iframe, la URL se abre en Safari. Resulta que en este caso yo quiero que se abra en mi propia aplicación. Pues para solucionar esto basta con cambiar el valor de la propiedad OpenAllWhitelistURLsInWebView, en el fichero Cordova.plist, a YES.


Muy bien esto funciona, pero resulta que además quiero añadir un enlace que permita al usuario abrir el contenido en el navegador por defecto del dispositivo. Buahhh eso es una chorrada ¿verdad?, usas la propiedad target="_blank" en el enlace. Pues no, porque al activar la propiedad OpenAllWhiteli…

Y este sábado, Apache Barcamp Spain

Imagen
El año pasado asistí a unos cuantos eventos y sin temor a equivocarme uno de los que más me gusto fue la Apache Barcamp Spain que se celebró en Sevilla durante el mes de Octubre. Durante ese fin de semana hice muchas cosas que puedes leer en entradas anteriores. Lo mejor del evento es el ambiente, muy similar al de las Agile Open Spain en donde las charlas y sesiones son las que deciden los asistentes durante la propia Barcamp, aunque en este caso de un ambito un poco más técnico. Este nivel de colaboración es genial, porque además atrae a la gente que de verdad le interesa.

Pero sin lugar a dudas, mi mayor fallo durante la anterior Barcamp fue no proponer una sesión. En esta ocasión espero poder ponerle remedio, para lo que presentaré la sesión "CoffeeScript: JavaScript bien hecho" que ya utilizase en la Tenerife Lan Party 2K12 y en la JSWeek de AgileCanarias. Si al final se celebrará la sesión o no ... ya lo veremos, lo decidiremos entre todos :-)
Por otro lado, y como nov…

Tips Android: ¿Tu aplicación se para cuando rotas la pantalla?

Buenos días a todos :-)

Resulta que estaba trabajando en un proyecto para dispositivos móviles multiplataforma, y tras hacer algunas pruebas en terminales de Apple le tocaba el turno a los de Android. Cuando parecía que todo estaba perfecto, le doy la vuelta a la tableta y la aplicación se para saliendo de nuevo al escritorio. Tras poner cara de panoli y acordarme de la madre de todo el que estuviese cerca, me toco buscar el problema.

Parece ser que no soy el único al que le ha pasado esto, gracias a Dios. Todo el problema se encuentra en el fichero AndroidManifest.xml, ¿en qué otro lugar iba a estar? :-)

Generalmente para que la pantalla pueda rotar basta que en nuestra aplicación configuremos la propiedad android:configChanges con el valor orientation.



Pero esto solo funciona hasta la versión 12 de la API de Android. A partir de la 13, que casualmente corresponde a Honeycomb al igual que la 12, para rotar se produce un cambio de tamaño que hay que permitir manualmente. En anteriores…