Pre requisitos
En este artículo vamos a recordar 2 artículos previos que son:
- Instalando PostgreSQL y Payara Server
- Configurando JDBC Connection Pool y JDBC Resources en Payara para PostgreSQL
Código Fuente
El código fuente del backend está en https://github.com/joedayz/ConcentradorJakartaEE.
El código fuente del frontend está en https://github.com/joedayz/concentrador.
La intención es revelar el gran trabajo de mi colega Jorge Pingo.
Jakarta EE y MicroProfile
En este artículo no usaremos Spring Boot, vamos a usar JakartaEE y Microprofile para poder usar las APIs que nos permitan crear servicios Rest con JAX-RS y persistencia con JPA, CDI.
Apis de Jakarta EE
Apis de Microprofile
Persistence.xml
En este archivo configuramos el recurso JDBC que tendremos en Payara Server.
Y JDBC Resources:
Blaze Persistence
Para el Backend vamos a usar esta API que te permite escribir JPA Criteria queries que usa características avanzadas de SQL. El código fuente del proyecto está en GitHub y ahí puede encontrar varios casos de uso.
DeltaSpike
Otro proyecto a utilizar en este proyecto es DeltaSpike que consiste de un número de extensiones portables CDI que proveen características útiles para los desarrolladores de aplicaciones Java.
Esta requiere una implementación CDI que este disponible en runtime.
Estas características son adicionales a las provistas por la especificación CDI. En este link puedes encontrar la lista completa:
En el archivo apache-deltaspike.properties configuraremos:
globalAlternatives.org.apache.deltaspike.jpa.spi.transaction.TransactionStrategy = org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy
NOTA:
Por defaecto el tipo de transacción usado por @Transactional es RESOURCE_LOCAL. Si tu configuras el tipo de transaction-type="JTA" en el persistence.xml, tu tienes que habilitar otra TransactionStrategy en el beans.xml el cual es llamado org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy.
Más información en: https://deltaspike.apache.org/documentation/jpa.html
Context Root
El context root se define en el archivo glassfish-web.xml de esta manera:
Modelo
En el paquete model encontrará las entidades JPA y las entidades relacionadas a vistas.
Repository
Gracias a DeltaSpike podemos tener un Repository que implementará por nosotros los métodos para persistir nuestra entidad y ademas podemos crear nuestro propio Query de objetos.
Muy parecido a Spring Data.
Service
La capa de negocio podrá usar la capa repository sólo usando @Inject.
En esta capa encontraremos la clase ConsultaProductoServiceImpl.java que usará el Criteria API para armar la consulta según los filtros que tenemos en la aplicación. Ademas de eso, paginado.
Para lograr esto se usa DeltaSpike:
import com.blazebit.persistence.deltaspike.data.Page;import com.blazebit.persistence.deltaspike.data.PageRequest;import com.blazebit.persistence.deltaspike.data.Pageable;import com.blazebit.persistence.deltaspike.data.Sort;import com.blazebit.persistence.deltaspike.data.Specification;
Controller
Finalmente en esta capa tendremos los REST endpoints. Empezamos configurando la clase que hereda de Application.
Y luego puedes crear tus clases controladoras para manejar los endpoints que necesites:
Como se puede ver, se puede definir el scope, el path principal y el formato de intercambio (JSON) entre servidor y clientes:
@RequestScoped@Path("/entidad-financiera")@Produces("application/json")@Consumes("application/json")public class EntidadFinancieraController
Ejecutando el Backend
Para probar la aplicación, primero asegurese de iniciar su payara server.
Luego configure en su IDE el payara server para poder desplegar la aplicación ahí:
Al ejecutar la aplicación Ud. verá el siguiente resultado:
Y podrá probar este endpoint (http://localhost:8080/api/v1/concentrador/opcion) para ver las opciones disponibles:
Configurando el Backend en el FrontEnd
Para poder usar el backend, colocamos el endpoint base en el archivo environment.
BASE_ENDPOINT: 'http://localhost:8080/api/v1/concentrador'
Al ejecutar la aplicación obtendremos el siguiente resultado:
Y como se aprecia se puede ver las opciones disponibles que nos devuelve el backend.
Esperamos que lo disfruten.
Enjoy!
Joe
0 comentarios:
Publicar un comentario