Web Services con Java (JAX-WS)

ReflectionToStringBuilderLos Web Services cada vez son más indispensable a la hora de construir aplicaciones, debido a que ya casi cualquier aplicación empresarial, requiere integrarse o comunicarse con otra. Por este motivo Java ofrece la librería JAX-WS la cual es definida por la especificación JSR 224. La especificación remplace a la JAX-RCP, la cual era únicamente para llamadas a procedimientos remotos, lo cual es diferente a los Web Services.

 

Crear Web Services con Java es mucho más fácil de lo que pudiéramos creer, pues ya que tan solo es necesario anotar una clase, para que esta sea expuesta automáticamente como tal por medio del servidor de aplicaciones. Para demostrar esto, desarrollaremos un Servicio para consultar y crear Empleados.

 

Lo primero que tenemos que hacer, es crear una clase que queremos exponer como WebService, luego la tenemos que anotar con @WebService :

@WebService(serviceName = "EmployeeService", targetNamespace = "http://xmlns.oscarblancarte.com/services/v1/EmployeeService")
public class EmployeeServiceImpl

as

Operaciones básicas

Operaciones básicasUna parte esencial de utilizar JPA es saber utilizar las operaciones básicas, operaciones mediante las cuales es posible consultar, persistir, actualizar y eliminar entidades, de estas operaciones estaremos hablando hoy.

 

Gran parte de la funcionalidad de JPA es expuesta por medio de la Interface EntityManager, de la cual ya hemos hablado con anterioridad, y es por medio de esta interface, que es posible realizar las operaciones básicas. Las operaciones o métodos que exponen EntityManager son persist, merge, remove, find entre otras, que son sin duda las operaciones que más utilizaremos los proyectos.

En la sección anterior de este tutorial, hablamos de los estados de las entidades, las cuales será clave para entender cómo y cuándo deberemos utilizar dichas operaciones.

 

Sin más, las operaciones se describen a continuación:

as

Java 8 – Interfaces funcionales

Interfaces funcionalesSe le conoce como interface funcional a toda aquella interface que tenga solamente un método abstracto, es decir puede implementar uno o más métodos default, pero deberá tener forzosamente un único método abstracto. Si no te queda claro que es un método abstracto en una interface, es un método sin implementar.

Las interfaces funcionales es un nuevo concepto que fue agregado a partir de la versión 8 de Java y cobran su importancia al utilizar expresiones lambda (λ).

Ejemplo de interfaces funcionales:

A continuación, veremos ejemplos de dos interfaces funcionales válidas: as

Java 8 – Default Method

Default MethodUna de las novedades que trae Java 8 a nivel del lenguaje, son los Default Method o Métodos default, los cuales permiten agregar métodos implementados en las interfaces. Antes de la versión 8 de Java era totalmente imposible definirles cuerpo a los métodos de las interfaces ya que nos marcaba error de compilación.

Para agregar un método default solo será necesario marcar un método con el operador default , veamos un ejemplo de cómo se implementan:

public default double getTotal(){
  return getQuantity() * getPrice();
}

Los métodos default se utilizan cuando es necesario implementar un cuerpo sin la necesidad de tener que implementar por separado una clase abstracta, además los métodos por default se pueden sobrescribir en caso de que la implementación por default no cumpla con lo que requerimos. Tenemos que resaltar que los métodos default no remplazan a las clases abstractas, pues estas últimas son mucho más potentes, debido a que nos permiten definir propiedades a nivel de clase, constructores y métodos privados. Veamos una limitante de los métodos default:

as

Ciclo de vida de las Entidades

Tutorial de JPA persistence.xml

Entender el ciclo de vida de las Entidades es sin duda uno de los puntos cruciales de JPA, pues entender cómo es que una Entidad es gestionada por EntityManager nos permitirá entender mejor como es que JPA funciona y prevenir muchos errores en tiempo de ejecución.

Lo primero que debemos de entender, es que todas entidades que utilicemos con JPA, serán administradas por el EntityManager, es por este motivo que hemos agregado este esta sección al capítulo de EntityManager.

 

Persistence Context:

Antes de entrar a los estados de las Entidades es importante entender un nuevo concepto que no hemos analizados en esta guía, se trata del Contexto de persistencia (Persistence Context), este lo podemos ver como contenedor en donde se encuentra todas las Entidades administradas por el EntityManager. Cuando un nuevo EntityManager es creado a través del EntityManagerFactory este le asigna un Unidad de persistencia. as

Patrón de diseño Command

Patrón de diseño CommandEl patrón de diseño Command es muy utilizado cuando se requiere hacer ejecuciones de operaciones sin conocer realmente lo que hacen, estas operaciones son conocidas como comandos y son implementadas como una clase independiente que realiza una acción muy concreta, para lo cual,únicamente recibe un conjunto de parámetros para realizar su tarea. as

Patrón de diseño – Composite

El patrón de diseño Composite nos sirve para construir estructuras complejas partiendo de otras estructuras mucho más simples, dicho de otra manera, podemos crear estructuras compuestas las cuales están conformadas por otras estructuras más pequeñas.

Para comprender mejor como funciona este patrón imaginemos una casa de ladrillos, las casas como tal no están hecha de una pieza, si observamos las paredes estas esta echas de pequeñas piezas llamadas ladrillos, entonces, el conjunto de estos ladrillos crea paredes, y un conjunto de paredes crean una casa. este ejemplo puede ser aplicado al patrón Composite, y no digo que vallamos a crear una casa con este patrón, sino más bien nos da una idea de cómo trabaja para poder utilizarlo con otros ejemplos.

Patrón de diseño Composite
Fig. 1: Estructura del patrón de diseño Composite.

as

Java Message Service (JMS)

QueueEn este Post se habla hacer de la especificación de JMS, los patronos de entrega de manejes que soporta como lo son Punto a Punto(P2P) y Publicador/Suscriptor. También hablare sobre los Temas y Colas (Topis and Queues) y los diferentes tipos de suscriptores que soporta la implementación de JMS.

Java Message Service es una especificación de la Java Community Process(JRS 914) la cual fue desarrollada originalmente para permitir a las aplicaciones Java comunicarse con los proveedores MOM o Middleware Orientado a Mensajes la cual buscaba los siguientes objetivos: as