blog de betotto

Kotlin, Undertow como proxy

Introduccion

Las tecnologias del front están creciendo como la espuma y bien sabemos que el front ya no es solamente hacer validaciones o hacer marquesinas, ahora se desarrollan aplicaciones enteras con el concepto de Single Page Applications, dejando a Java solo en el Middleware o en Android. Y después de Kotlin ya ni en Android :P. Seamos sinceros al comparar una aplicación hecha con React o con Angular contra una aplicación en JSF, se nota el porque casi todas las grandes compañías del mundo voltearon a ver a Nodejs (que es mucho muy bueno) y a tecnologías puramente de Front.

Dejando atrás las discusiones sobre si Tomcat o Spring Batch o EJB o Nodejs, que ademas de nunca acabar, no dejan de ser servidores que entregan archivos HTML, JS, CSS y otros (pdf, imagenes, txt, csv, xls, xml), que pueden estar hechos como tu quieras (React, Angular, Aurelia, Vue, Jquery). Por lo que un servidor http siempre esta involucrado; muchas soluciones actuales dejan totalmente el Front en Nodejs y los servicios en Java, otros combinan Nginx con Nodejs y Java; mientras otros solo Java o solo Nodejs.

Kotlin, Camel y MyBatis

Introducción

Ya con nuestro servicio en forma de mock, podemos empezar a extenderlo un poco mas e incluir mas endpoints. En ese sentido agregaremos consultas a una base de datos, usando MySQL; no sera una tabla muy grande, pero servirá para ejemplificar el proceso. El mapeador de objetos java a SQL sera MyBatis, voy a hacer enojar a muchos tal vez, pero considero que JPA es de los frameworks mas obscuros del mundo Java :D, no se enojen; a mi no me gusta, no significa que no sea util para alguien.

Vamos a obtener los datos de la base para las operaciones que ya creamos, getAll y getByID, asimismo agregaremos una operación mas para insertar Preguntas en la base.

Prerequisitos

Ahora si tenemos mas pre-requisitos:

  • MySQL instalado en donde sea pero que tengamos acceso a una base
  • El conector jdbc-mysql en el repo local de maven
  • El proyecto hasta el POST anterior

La Base de Datos

La base por ahora solo sera una tabla QUESTION, con la estructura siguiente:

CREATE TABLE IF NOT EXISTS `questions`.`QUESTION` (

Kotlin, Camel y CXF

Mock del primer servicio

Una vez que tenemos la base del proyecto, podemos agregar nuestro primer servicio REST usaremos la referencia JAX-RS 2 con la implementacion Apache CXF.

Nuestro primer servicio sera un endpoint de preguntas, con dos operaciones la primera consultar una lista de preguntas, de momento escritas en el mismo codigo, y la segunda de esa lista de preguntas obtener una en particular por su codigo.

Prerequisitos

De momento el unico requerimiento previo es tener nuestro proyecto como lo dejamos en el primer post.

Mensajes de Camel

Apache camel al igual que EJB estan basados en los principios de lo que ahora conocemos como microservicios antes de que incluso se llamaran asi, pequenias aplicaciones que al sumarse todas dan como resultado un proceso complejo, cada microservicio se comunica con otros para resolver la tarea en especifica que tiene asignada.

Hello World!!! Kotlin

Introduccion

Este es el inicio de una pequenia serie de posts donde tratare de mostrar una alternativa a Spring y a JEE para la creacion de Servicios, desde la perspectiva del middleware.

Para ello hare uso de una herramienta no tan conocida, pero que ha estado ahi desde hace mucho tiempo (gratuita tambien), facilitando la integracion de sistemas empresariales, esta herramienta es Apache Camel. Apache Camel es en resumen un framework que implementa los Patrones de Integracion Empresariales EIP por sus siglas en ingles, o sea pautas a seguir para facilitar la integracion de Sistemas.

Herramientas de desarrollo

Para poder realizar la primera practica estas son las herramientas que debemos tener instaladas en nuestra maquina:

  • Intellij Community Edition
  • Java SE 9 integrado en el PATH de nuestra maquina de desarrollo
  • Gradle integrado en el PATH de nuestra maquina de desarrollo

Crear el proyecto con Intellij

Primero abrimos IntelliJ y seleccionamos la opcion Create New Project

Distribuir contenido