Ámbitos de una aplicación de Spring
Introducción En este tutorial se muestran los distintos ámbitos (Scopes) para un Bean que podemos encontrar en Spring Framework. Es prioritario entender que la definición de un Bean no es más que una receta para crear instancias de una clase de acuerdo con dicha definición. Partiendo de esta base, se puede asumir que la misma receta para crear instancias de una clase se puede emplear en múltiples ocasiones o varias veces durante el ciclo de vida de una aplicación. Una de las características que permite Spring configurar en la definición de los Beans es el Scope o ámbito de los […]

Spring Bean Scopes: Guía para comprender los distintos scopes (ámbitos) ...


Spring boot as a Linux service
Introducción En este post mostraremos como configurar una aplicación Spring Boot para que se ejecute como un servicio en Linux. En primer lugar se muestran las instrucciones para configurar el servicio con scripts compatibles con sistemas de inicio tipo System V, en segundo se muestra como configurar el servicio en sistemas más nuevos que emplean systemd. Jar ejecutable Una de las ventajas de Spring Boot es que nos permite crear Jar ejecutables de forma autónoma, esto nos permite tratar directamente la aplicación empaquetada en un Jar como un ejecutable que a su vez dispone de parámetros como “start”, “stop”, “restart”, […]

Spring-boot como un servicio en Linux


Spring mongo sequece
Introducción En este post mostraré cómo asignar un valor de una secuencia incrementada de forma automática a un campo empleando una colección de mongo. Para ello emplearemos la misma técnica que se muestra en el tutorial de mongodb.com pero con métodos puramente Java. Es importante reseñar que este valor no debería de emplearse como identificador único del documento, Mongo ya dispone de mejores métodos para asignar identificadores a documentos, y por lo general sería una mala práctica. Por otro lado, en sistemas distribuidos o en bases de datos con una enorme cantidad de documentos, tampoco debería de emplearse esta metodología. […]

Spring-data + Mongo: Secuencia autoincremental en MongoDB mediante un servicio ...



build.gradle script 2
Introducción En este post mostraré cómo servir una aplicación Frontend creada con Angular (>2) empleando como Backend y servidor de páginas estático una aplicación Java desarrollada con Spring Boot  utilizando Gradle como herramienta para la construcción y desplegado automatizado. Requisitos La pila de tecnologías necesarias para poder completar este tutorial son: Node.js Angular CLI Gradle El principal objetivo es conseguir un npm install + build que integre y despliegue los ficheros de distribución en el directorio de recursos estáticos de Spring al mismo tiempo que se hace la construcción y despliegue de la aplicación Java. Del mismo modo que se ha […]

Integrando Angular y Spring Boot mediante Gradle


Certificate Details
OCSP (Online Certificate Status Protocol) es un protocolo que se emplea para determinar el estado y vigencia de un certificado en un momento determinado. La FNMT (Fabrica Nacional de Moneda y Timbre) ofrece este servicio para los certificados emitidos por cualquiera de sus autoridades certificadoras. Hasta no hace mucho, este servicio se ofrecía por la FNMT de forma privada para empresas y con coste por consulta. Imaginamos que a raíz de las distintas directivas europeas, los servicios OCSP de la FNTM ahora se ofrecen de forma abierta y gratuita. En este post os enseñaremos a emplear la herramienta openssl para […]

OCSP: Validar estado de revocación de certificados FNMT mediante protocolo ...


DOCKER 1
Docker Machine Tal como hemos visto en anteriores publicaciones, docker puede funcionar en Windows a través de una máquina virtual generalmente sobre Virtual Box. Para ello, Docker ofrece la herramienta docker-machine que permite automatizar y ajustar automáticamente todas las tareas relacionadas con la puesta a punto y configuración de esta máquina virtual. En ocasiones, normalmente para hacer un ajuste completo del entorno, puede ser necesario acceder manualmente al Shell de esta máquina virtual. Para ello disponemos de las distintas opciones que se enumeran a continuación. docker-machine ssh La forma más sencilla de acceder es mediante el empleo de la propia herramienta docker-machine […]

Docker: Accediendo al shell (SSH) de docker-machine



AngularJSMarcNuri
AngularJS: servicios y controladores Los servicios de angularJS nos ofrecen una forma muy sencilla de compartir datos y funcionalidad entre controladores y otras partes de nuestra aplicación. El código completo de este tutorial se encuentra aquí https://jsfiddle.net/h6ut4djn/; Vista HTML Supongamos que partimos del siguiente código html, dónde hay dos controladores distintos, uno que permite editar los datos y variables y el otro que muestra los datos definitivos: [crayon-5a1526aad7367943055494/] El primer controlador, “controlador1” se encarga de la edición de las distintas variables. Desde él, podemos cambiar el valor de una variable normal, pero también alterar una variable más compleja tipo array. En […]

AngularJS: Cómo compartir datos entre controladores (Controllers) empleando servicios (Services)


Spring + EclipseLink JPA
Spring Data JPA Spring emplea Hibernate como proveedor de JPA por defecto. Aunque Hibernate es una buena elección, algunos preferimos emplear EclipseLink ya que en un principio se suponía que era la implementación de referencia para el JSR de Persistencia en Java. En este tutorial mostraremos como configurar una aplicación Spring Boot para que use EclipseLink como capa de persistencia JPA para una base de datos PostgreSQL, aunque se podría emplear cualquier otro tipo de base de datos. Arreglando dependencias Para poder emplear EclipseLink, tenemos que quitar el EntityManager de Hibernate del classpath para evitarnos problemas. Para ello simplemente tenemos que añadir una exclusión […]

Spring Data JPA + EclipseLink: Configurando Spring-Boot para usar EclipseLink ...


DOCKER 3
Introducción Docker está revolucionando el mundo del cloud computing y la virtualización. Se trata de un proyecto que automatiza la puesta en marcha de aplicaciones dentro de contenedores de software a través de una capa adicional de abstracción y automatización de la virtualización a nivel de sistema operativo en Linux. Todo esto permite separar la aplicación de la infraestructura subyacente de aplicaciones y servidores (Sistema operativo, Bases de datos, servidores de aplicaciones…) y centrarse únicamente en su desarrollo y puesta en marcha. De este modo, podemos reproducir exactamente las mismas condiciones en cuanto a arquitectura en el entorno de desarrollo y […]

Docker: Instalando docker en Windows



mnIMAPSync Process
¿Una herramienta más para sincronizar correo IMAP? Hace un par de años, cuando liberamos por primera vez mnIMAPSync, ya había varias herramientas disponibles  para sincronizar el correo electrónico. El problema con la mayoría de ellas es que cuando se hacen copias de seguridad o migraciones incrementales del correo, algunos mensajes, en general aquellos que no está conforme a las especificaciones del RFC, se duplican en el servidor donde hacemos la copia. Esto se debe principalmente a headers incorrectos o a que el mensaje carece de message-id. Al no disponer de ninguna herramienta, tuvimos que programar una que hiciese correctamente el trabajo. La […]

Migración de correo electrónico mediante mnIMAPSync


Apache Tomcat - Apache HTTPd - mod_proxy front-end 4
Apache Tomcat y la Web Normalmente cuando se ejecuta un servidor de aplicaciones como Apache Tomcat, se suele vincular un conector directamente en el puerto 80. De este modo, los usuarios que visiten la aplicación web, podrán navegar hasta ella simplemente introduciendo el nombre de dominio en la barra de direcciones de su navegador en lugar de tener que especificar el puerto especial después del dominio (http://tudominio.com:8080). Si no hay opciones para vincular el puerto 80 a un contector de Tomcat (algunos sistemas operativos bloquean esta funcionalidad por seguridad), existen otras alternativas de conseguir el mismo comportamiento. Por ejemplo, establecer una redirección del […]

Ejecutar Apache Tomcat y Apache HTTPD en el puerto 80 ...