API REST 4. Calidad al implementar aplicacion Web

Introducción

Existen 3 niveles para aplicar API REST en el desarrollo de una Aplicación Web.
Cumplir con estás nos garantiza las mejores practicas para su implementación, integración, estabilidad y escabilidad.
Para detalles se puede consultar  http://asiermarques.com/2013/conceptos-sobre-apis-rest/

Nivel 1. Uso correcto de URIs

  1. Identificar de forma única el recurso
  2. Las URI no deben contener acciones
  3. Independientes del formato
  4. Jerarquía lógica
  5. Los filtrados no se deben hacer en la URI

Nivel 2. HTTP

  1. Usar métodos HTTP; GET, POST, PUT, DELETE y PATCH
  2. Código de estado
  3. Aceptación de tipos de contenido

Nivel 3. Hypermedia

Se vera mas a detalle posteriormente.

Con lo que llevamos hasta este momento, podemos generar un proyecto de API REST en Web con las mejores practicas.
Vamos a retomar la tabla Persona y crear un Sistema Web con API REST para administrar personas; crear, leer, actualizar y eliminar.

Construir aplicación

Crear proyecto

Ir a

File -> New -> Other… -> Spring Boot -> Spring Starter Project

Seleccionamos nombre del proyecto, tipo, versión de java, paquete, entre otras opciones. Clic en Next>. Seleccionamos la versión de Spring Boot y las dependencias:

  1. JPA
  2. H2
  3. MySQL
  4. Web

Clic en Next> y posteriormente clic en Finish.

Crear paquetes

Creamos los paquetes

  • com.mio.administrar.controller
  • com.mio.administrar.repository
  • com.mio.administrar.entity

Copiar clases e interfaces

Tomando las clases e interfaces del proyecto anterior https://github.com/arielolivagh/gs-rest-service-complete/tree/v2.0  copiamos:

  • La clase PersonaController al paquete com.mio.administrar.controller
  • La interface PersonaRepository al paquete com.mio.administrar.repository
  • La clase Persona al paquete com.mio.administrar.entity

Conexión a la Base de Datos

Escribimos los parámetros de conexión a la Base de Datos en el archivo application.properties.

spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/Pruebas
spring.datasource.username=root
spring.datasource.password=root

Crear consulta para búsqueda de personas por id

En la clase repository vamos a crear un nuevo query para obtener una persona por su id.

@Query("select p from Persona p where p.idPersona = ?1")
Persona findPersona(int id);

Crear controller de calidad

Crear personas

  • Método POST
  • La respuesta es Json
  • Documentación JavaDoc
    /**
     * Crea una persona: POST http://{servidor}:{puerto}/persona
     * @param nombre Nombre de la persona
     * @param edad Edad de la persona
     * @param sexo Sexo de la persona
     * @return mensaje de 'Agregado correctamente'
     */
    @RequestMapping(method=RequestMethod.POST,produces={"application/json"})
    public String createPersona(@RequestParam String nombre,@RequestParam int edad,@RequestParam String sexo) {
            Persona p = new Persona();
    	p.setNombre(nombre);
    	p.setEdad(edad);
    	p.setSexo(sexo);
    	personaRepository.save(p);
    		
            return "Agregado correctamente";
    }

    Consumir:

    curl -i -X POST -d "nombre=Mariel&edad=51&sexo=F" http://localhost:8080/persona

Leer todas las personas

  • Método GET
  • La respuesta es Json
  • ocumentación JavaDoc
    /**
     * Obtiene todas las personas: GET http://{servidor}:{puerto}/persona
     * @return Lista de personas
     */
     @RequestMapping(method=RequestMethod.GET,produces={"application/json"})
        public Iterable<Persona> readPersonas() {
        return personaRepository.findAll();
     }

    Consumir:

    curl -i -X GET http://localhost:8080/persona

Leer una persona

  • Método GET
  • La respuesta es Json
  • Documentación JavaDoc
    /**
     * Obtiene una person por id: GET http://{servidor}:{puerto}/persona/{id}
     * @param id Id de la persona. En la Url
     * @return Una personas
     */
     @RequestMapping(value="/{id}",method=RequestMethod.GET,produces={"application/json"})
        public Persona readPersonaById(@PathVariable("id") int id) {
        return personaRepository.findPersona(id);
     }

    Consumir:

    curl -i -X GET http://localhost:8080/persona/7

Actualiza una persona

  • Método PUT
  • La respuesta es Json
  • Documentación JavaDoc
    /**
     * Actualiza una persona por Id: PUT http://{servidor}:{puerto}/persona/{id}
     * @param id Id de la persona. En la Url
     * @param nombre Nombre de la persona
     * @param edad Edad de la persona
     * @param sexo Sexo de la person
     * @return mensaje de 'Actualizado correctamente'
     */
     @RequestMapping(value="/{id}",method=RequestMethod.PUT,produces={"application/json"})
     public String updatePersona(@RequestParam String nombre,@RequestParam int edad,@RequestParam String sexo,@PathVariable("id") int id) {
        Persona p = new Persona();
        p.setIdPersona(id);
        p.setNombre(nombre);
        p.setEdad(edad);
        p.setSexo(sexo);
        personaRepository.save(p);
        return "Actualizado correctamente";
     }

    Consumir:

    curl -i -X PUT -d "nombre=Ariel&edad=100&sexo=M" http://localhost:8080/persona/7

Actualiza edad de una persona

  • Método PATCH
  • La respuesta es Json
  • Documentación JavaDoc
    /**
     * Actualiza la edad de una persona por Id: PATCH http://{servidor}:{puerto}/persona/{id}
     * @param id Id de la persona. En la Url
     * @param edad Edad de la persona
     * @return mensaje de 'Actualizando la edad correctamente'
     */
     @RequestMapping(value="/{id}",method=RequestMethod.PATCH,produces={"application/json"})
     public String updateParcialPersona(@PathVariable("id") int id,@RequestParam int edad) {
        Persona p = personaRepository.findPersona(id);
        p.setEdad(edad);
        personaRepository.save(p);
        return "Actualizando la edad correctamente";
     }

    Consumir:

    curl -i -X PATCH -d "edad=10" http://localhost:8080/persona/7

Elimina todas las personas

  • Método DELETE
  • La respuesta es Json
  • Documentación JavaDoc
    /**
     * Elimina todas las personas: DELETE http://{servidor}:{puerto}/persona
     * @return mensaje de 'Todo eliminado correctamente'
     */
     @RequestMapping(method=RequestMethod.DELETE,produces={"application/json"})
        public String deleteAllPersona() {
        personaRepository.deleteAll();
        return "Todo eliminado correctamente";
     }

    Consumir:

    curl -i -X DELETE http://localhost:8080/persona

Elimina una persona

  • Método DELETE
  • La respuesta es Json
  • Documentación JavaDoc
    /**
     * Elimina una persona por id: DELETE http://{servidor}:{puerto}/persona/{id}
     * @param id Id de la persona. En la Url
     * @return mensaje de 'Eliminado correctamente'
     */
     @RequestMapping(value="/{id}", method=RequestMethod.DELETE,produces={"application/json"})
     public String deletePersona(@PathVariable("id") int id) {
        Persona p = new Persona();
        p.setIdPersona(id);
        personaRepository.delete(p);
        return "Eliminado correctamente";
     }

    Consumir:

    curl -i -X DELETE http://localhost:8080/persona/7

Otras

Descargar proyecto

Se puede descargar el proyecto completo de https://github.com/arielolivagh/administrarPersona/tree/v1.0

API REST 2. Conectarse a Base de Datos MySQL

Descripción

Para publicar y consumir algunos métodos del API REST vamos a crear y conectarnos a una Base de Datos MySQL.

Crear la Base de Datos

Con el siguiente script podemos crear la Base de Datos en MySQL.

-- MySQL dump 10.13  Distrib 5.7.19, for Linux (x86_64)
--
-- Host: localhost    Database: Pruebas
-- ------------------------------------------------------
-- Server version	5.7.19-0ubuntu0.16.04.1

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `Persona`
--

DROP TABLE IF EXISTS `persona`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `persona` (
  `idPersona` int(11) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(200) NOT NULL,
  `edad` int(11) NOT NULL,
  `sexo` char(1) NOT NULL,
  PRIMARY KEY (`idPersona`),
  UNIQUE KEY `idPersona_UNIQUE` (`idPersona`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `Persona`
--
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2017-08-29 12:27:04

Agregar dependencias

Tomamos el proyecto http://arieloliva.com/api-rest-en-spring/.

En el archivo pom.xml agregamos las dependencias necesarias:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
   <groupId>com.h2database</groupId>
   <artifactId>h2</artifactId>
   <scope>runtime</scope>
</dependency>

Crear archivo Application.properties

En la ruta src/main/resources del proyecto creamos el archivo application.properties. Agregamos los siguientes parámetros de la conexión a la Base de Datos.

spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/Pruebas
spring.datasource.username=root
spring.datasource.password=root

Crear entity

Un entity es el modelado de una tabla. Nuestra tabla se llama Persona y tiene los campos:

Nombre Tipo Tamaño Null AutoIncrementar
idPersona int 11 no si
nombre varchar 200 no no
edad int 11 no no
sexo char 1 no no

Con estos datos podemos crear la Clase que modela la tabla.

  1. Crear Clase en el paquete hello con nombre Persona
  2. variables privadas idPersona, nombre, edad y sexo con sus respectivos set y get
  3. Anotación @Entity en la Clase para indicar que es un entity.
  4. Anotación @Id y @GeneratedValue(strategy=GenerationType.IDENTITY) en la variable idPersona. para indicar que es el identificador único y se auto genera.

El resultado final es:

package hello;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Persona implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int idPersona;

	private int edad;
	private String nombre;
	private String sexo;

	public Persona() {
	}
	public int getIdPersona() {
		return this.idPersona;
	}
	public void setIdPersona(int idPersona) {
		this.idPersona = idPersona;
	}
	public int getEdad() {
		return this.edad;
	}
	public void setEdad(int edad) {
		this.edad = edad;
	}
	public String getNombre() {
		return this.nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getSexo() {
		return this.sexo;
	}
	public void setSexo(String sexo) {
		this.sexo = sexo;
	}
}

Crear repositorio

Un repositorio es una interface con los métodos necesarios para acceso a la Base de Datos.

  1. Crear Interface en el paquete hello con nombre PersonaRepository
  2. Extendemos de CrudRepository<Persona, Long>. Crud (Create, Read, Update, Delete). Proporciona todos los métodos para Crear, Leer, Actualizar y Borrar los datos de la tabla.

El resultado final es:

package hello;

import org.springframework.data.repository.CrudRepository;

public interface PersonaRepository extends CrudRepository<Persona, Long>{
		
}

Crear controlador

  1. Crear Clase en el paquete hello con nombre PersonaController
  2. Anotaciones @RestController y @RequestMapping(path=»/persona») en la Clase. Para indicar que que es una API REST y la base del mapeo es /persona.
  3. Variable private PersonaRepository personaRepository con anotación @Autowired la cual obtiene el llamado a PersonaRepository.
  4. Método public Iterable<Persona> getPersona() con la anotación @RequestMapping(«/all») para obtener todos los datos de la tabla persona con el mapeo all.

El resultado final es:

package hello;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(path="/persona")
public class PersonaController {
	@Autowired
	private PersonaRepository personaRepository;
	
	@RequestMapping("/all")
	public Iterable<Persona> getPersona() {
        return personaRepository.findAll();
    }
}

Ejecutar aplicación

Después de ejecutar la aplicación el resultado obtenido es:

Otros

Descargar proyecto

Se puede descargar el proyecto completo de https://github.com/arielolivagh/gs-rest-service-complete/tree/v1.0

API REST 1. Spring

Descripción

Crear un API REST en Spring en sumamente sencillo. Vamos a crear uno utilizando lo siguiente:

  1. Eclipse
  2. Librerías de Spring
  3. Terminal
  4. Java

Pasos

Los pasos se detallan a continuación:

Instalar eclipse

  1. Descargar eclipse http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/neon3
  2. Descomprimir en alguna ubicación.
  3. Ejecutar y seleccionar carpeta de trabajo (workspace) .

Instalar librerías de Spring

En la pagina https://spring.io/tools/sts/all de Spring nos muestra el repositorio para instalar STS (Spring Tool Suite).

  1. En eclipse ir a Help -> Install New Software… -> Add…
  2. En la ventana que se muestra escribir STS en name y http://dist.springsource.com/release/TOOLS/update/e4.7/ en Location. Y clic en OK.
  3. Seleccione todas las opciones y clic en Next.
  4. Aceptar licencia, esperar a que termine de instalarse y reiniciar eclipse.

Importar proyecto Spring

Con la instalación de STS podemos integrar proyectos en Spring ya terminados.

  1.  Ir a File -> New -> Other… -> Spring Boot -> Import Spring Getting Started Content. Clic en Next.
  2. Seleccionar Rest Service. Maven en la sección Build Type, complete en la sección Code Sets y clic en Finish.
  3. Se crear el proyecto y se abre una pagina de ayuda.

Crear jar del proyecto

  1. Abrir la terminal de eclipse o del Sistema Operativo
  2. Pasarse a la ubicación del proyecto
    cd .../developer_spring/ide/workspace/gs-rest-service-complete
  3. Ejecutar
    ./mvnw clean package
  4. En la terminal se muestra que la construcción fue correcta.

Ejecutar proyecto

  1. Abrir la terminal de eclipse o la terminal del Sistema Operativo.
  2. Pasarse a la ubicación del jar recién creado.
    cd .../developer_spring/ide/workspace/gs-rest-service-complete/target/
  3. Ejecutar jar.
    java -jar gs-rest-service-0.1.0.jar
  4. Inicia la carga de Spring
  5. El mensaje Started Application in … indica que se ha levantado correctamente.

Ver resultado

  1. Abrir explorador de Internet
  2. Capturar la URL http://localhost:8080/greeting
  3. O http://localhost:8080/greeting?name=Ariel

SpringBoot 6. Configurar JPA y la Base de Datos en Eclipse

Configurar JPA

En http://arieloliva.com/crearbasededatos/ creamos la Base de Datos Kanban. Vamos a conectar eclipse con está para habilitar JPA y crear los modelos.

Agregamos la dependencia JPA en el archivo pom.xml del proyecto.

	<dependency>
      		<groupId>org.springframework.boot</groupId>
      		<artifactId>spring-boot-starter-data-jpa</artifactId>
    	</dependency>

Después habilitamos JPA.

Clic derecho sobre el proyecto -> Propiedades -> Project Facets

Clic en Convert to faceted form…

Habilitar JPA con la versión 2.1. Clic en ApplyOK.

Crear conexión a MySQL

Para crear la conexión a MySQL,

Clic derecho sobre el proyecto -> Propiedades -> JPA -> Connection -> Add connection…

Seleccionar MySQL, elegir un nombre para la conexión y clic en Next.

Clic en el icono New Driver Definition  Elegir el driver 5.1.

Pasarse a la pestaña JAR List, seleccionar el driver mysql-connector-java-5.1.0-bin.jar y clic en Remove JAR/Zip para eliminarlo.

Selección_158
Clic en Add JAR/Zip… Ir a la ruta …/developer/db y seleccionar el archivo mysql-connector-java-5.1.41.jar (Se puede descargar de http://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.41 ). Clic en OK.

Escribir los datos de la Base de Datos MySQL.

Database kanban
URL jdbc:mysql://localhost:3306/kanban
User name root
Password El seleccionado en la instalación

Clic en Test Connection para validar que la conexión es correcta. Clic en OK.

Selección_161
Clic en Next >,  en Finish y en OK.

Validar la conexión a MySQL

Sobre Eclipse en la pestaña Data Source Explorer se muestra la conexión recién creada. Clic con el botón derecho y Connect.

Introducir la contraseña y OK.


Podemos ver las tablas de la Base de Datos de MySQL.

 

 

SpringBoot 3. Clonar proyecto de GitHub en Eclipse

Instalar EGit

Vamos a clonar el proyecto https://github.com/arielolivagh/kanbanDinamico en Eclipse. Necesitamos instalar EGit. Desde Eclipse:

Help -> Install New Software…

Clic en Add… y escribir EGit en name: y http://download.eclipse.org/egit/updates en Location: Clic en OK.

Esperamos un momento a que se carguen todos los resultados. Seleccionamos todas las opciones y Next.

Next.

Aceptar licencia y Finish.

Después de unos minutos acepte reiniciar Eclipse para que tome los cambios.

Para ver la ventana de repositorios de Git:

Window->Show View -> Other…

Seleccionamos Git y luego Git Repositories.

Se muestran los repositorios.

Importar proyecto

En el explorador de proyectos de Eclipse

Import ->Import… -> Projects from Git

Clic en Next.

Seleccionar Clone URI, Next.

Poner en URI: https://github.com/arielolivagh/kanbanDinamico y automáticamente se llenar los datos de Host y Repository path. Seleccionar protocolo https, teclear User y Password de su cuenta de GitHub. Clic en Next.

Seleccionar master. Next.

Seleccionar la ruta …/developer/git. Clic en Next.

Seleccionar import as general project. Clic en Next.

Escribir Project name y confirmar Directory. Clic en Finish.

En el explorador de proyectos se muestra el proyecto kanbanDinamico.

Y en la ventana de repositorios de Git.

 

Java EE 6. Conectar Eclipse con MySQL

Configurar JPA

Clic con el botón derecho sobre el proyecto y seleccionar Propiedades. Clic en Project Facets. Asegurarse que este habilitado JPA y tiene seleccionado la versión 2.1.

Selección_154

Conectar con MySQL

En la misma ventana de propiedades, seleccionar JPA y en la sección de Connection clic en Add connection..
Selección_153
Seleccionar MySQL, elegir un nombre para la conección y clic en Next >.

Selección_155
Clic en el icono New Driver Definition.

Selección_156Elegir el driver 5.1.

Selección_157

Pasarse a la pestaña JAR List, seleccionar el driver mysql-connector-java-5.1.0-bin.jar y clic en Remove JAR/Zip para eliminarlo.

Selección_158
Clic en Add JAR/Zip... Ir a la ruta …/developer/db y seleccionar el archivo mysql-connector-java-5.1.38.jar (Se descargo el jar en el articulo http://arieloliva.com/configurar_proyecto/ en la sección «Dependencia para MySQL»). Clic en OK.

Selección_159
Escribir los datos de la Base de Datos MySQL.

Database mydb
URL jdbc:mysql://localhost:3306/mydb
User name root
Password El seleccionado en la instalación

Selección_160

Clic en Test Connection para validar que la conección es correcta.

Selección_161
Clic en Next > y  en Finish.

Validar la conección a MySQL

Sobre Eclipse en la pestaña Data Source Explorer se muestra la conección recién creada. Clic con el botón derecho y Connect.

Selección_163

Introducir la contraseña y OK.

Selección_164
Podemos ver las tablas de la Base de Datos de MySQL.

Selección_165

Java EE 4. Configurar Proyecto

Archivo pom.xml

El archivo pom (Project Object Model) es la unidas principal de un proyecto Maven que contiene información acerca del proyecto, fuentes, test, dependencias, plugins, version, etc.

Cambiar archivo pom.xml la versión más actual

Abrir el archivo en eclipse e ir a la sección build. Lo valores de source y target se deben cambiar a 1.8.

pom

El proyecto marcara un error.

Clic con el botón derecho en el proyecto seleccionar Properties y luego Project Facets. la opción Java debe estar habilitada con la versión 1.8. Apply y OK.

pom2

Clic con el botón derecho en el proyecto seleccionar Maven y luego Update Project… Seleccionar el proyecto y OK.

pom3

El error en el proyecto desaparece.

En la sección de dependencias se muestra:

Selección_121

Vamos a actualizar a las versiones más recientes de los componentes web:

Dependencia para javax.servlet

Ir al link http://mvnrepository.com/ el cual es el repositorio oficial de Maven. Escribir javax.servlet y Search. Se muestran las coincidencias, seleccionar Java Servlet API.

Selección_122

Lo recomendable es elegir el release mas reciente. Clic en 3.1.0.

Selección_123

Muestra la dependencia correspondiente en la sección de Maven. Remplazamos la dependencia en el archivo pom.xml.

Selección_124

Dependencia para javax.servlet.jsp

En el repositorio de Maven buscar javax.servlet.jsp y seleccionar JavaServlet  Pages(TM) API. La ultima versión disponible es la 2.2.

Selección_127

Copiar la dependencia y reemplazarla en pom.xml. El resultado es:

Selección_128

Actualizar descriptor de despliegue

Abrir el archivo web.xml que se encuentra en la ruta nombreDelProyecto/scr/main/webapp/WEB-INF/ dentro del proyecto. La rama <web-app> la reemplazamos por:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
		 http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

Selección_129

Activar Dynamic Web Module

Con esta opción cuando creamos un servlet no se agregan en el descriptor de despliegue (web.xml) y podemos utilizar las anotaciones. Clic derecho en el proyecto -> Properties -> Project Facets -> Dynamic Web Module.

Selección_130

Dependencia para JPA

Desde el repositorio de Maven buscar eclipseLink, seleccionar EclipseLink JPA. Seleccionar el ultimo release, que es 2.6.2. y agregarlo al archivo pom.xml en la sección de dependencies.

Selección_133

Dependencia para EJB

Desde el repositorio de Maven buscar javax.ejb, seleccionar  Ejb Api. Seleccionar el ultimo release, que es 3.0. y agregarlo al archivo pom.xml en la sección de dependencies.

Selección_136

Dependencia para MySQL

Desde el repositorio de Maven buscar mysql, seleccionar MySQL Connector/J. Seleccionar el ultimo release, que es 5.1.38. y agregarlo al archivo pom.xml en la sección de dependencies.

También descargar el jar y copiarlo en ../developer/deb/. El link esta en Artifact y se llama Download( JAR).

Selección_139

Dependencia para Validator

Permite agregar validaciones en los entitys.

Desde el repositorio de Maven buscar bean validator, seleccionar Bean validator API. Seleccionar el ultimo release, que es 1.1.0.Final. y agregarlo al archivo pom.xml en la sección de dependencies.

Selección_142

Dependencia para jstl

Para evitar usar Scriplets en el proyecto.

Desde el repositorio de Maven buscar jstl, seleccionar Jstl. Seleccionar el ultimo release, que es 1.2. y agregarlo al archivo pom.xml en la sección de dependencies.

Selección_145

Probar que todavía funciona el proyecto

Después de configurar el proyecto se debe validar que sigue funcionando.

  1. Clic derecho sobre el proyecto Run As -> 1. Run On Server
  2. Seleccionamos GlassFish. Clic en Next.
  3. Pasamos el proyecto a la ventana de Configured y clic en Finish.
  4. Se muestra la ventana de «hola mundo», lo cual indica que el proyecto se ejecuto correctamente.

Selección_146

Instalar plug-in GlassFish Tools en Eclipse

Instalar plug-in GlassFish Tools en Eclipse

Antecedentes

Tenemos Eclipse Luna y deseamos instalar el plug-in GlassFish Tools para instalar GlassFish como Servidor de Aplicaciones.

Modo 1. Instalar por Marketplace

Dentro de Eclipse ir a:

Help -> Eclipse Marketplace… -> Search

Escribimos glassfish y presionamos el botón Go. Cuando nos muestre  GlassFish Tools damos clic en Install.

glassfishTools

Habilitamos todo y clic en Confirm.

glassfishTools2

Aceptamos la licencia y clic en Finish.

glassfishTools3

Cuando termine  de instalar nos pedirá reiniciar Eclipse. Clic en Yes.

glassfishTools4

Modo 2. Instalar por Install New Software…

Dentro de Eclipse ir a:

Help -> Install New Software…

Clic en Add..

pluginsGlassFish

Escribir un nombre y la URL

http://download.oracle.com/otn_software/oepe/luna

Clic en OK.
Selección_110

Seleccionar Tools y habilitar GlassFish Tools. Clic en Next.

Selección_111

Clic en Next >.

Selección_112

Aceptar la licencia y Finish.

Selección_113

 Finalmente reiniciar Eclipse con clic en Yes.

Selección_114

Errores

Si se muestra algún tipo de error, principalmente en Windows, lo más seguro es que sea la referencia al JDK de Java. De acuerdo al link https://marketplace.eclipse.org/content/glassfish-tools se pueden aplicar la siguiente solucion:

  1. Verificar que la versión de Java sea la correcta, de acuerdo a la tabla:
    Versión de Eclipse Versión mínima de Java
    Mars Java 8
    Luna Java 8
    Kepler Java 7
    Juno Java 6
  2. Ir a Help -> About Eclipse -> Installation Details -> Configuration y Buscar la linea inmediatamente despues de -vm, esta debe mostrar la ruta donde esta instalado el JDK con la versión correcta. Por ejemplo en Ubuntu muestra. Selección_115
  3. Si no tiene la ruta del JDK correcto se debe de modificar el archivo eclipse.ini que se localiza en …/developer/ide/eclipse y agregar las lineas:
    -vm
    ruta del JDK

    Por ejemplo:

    -vm
    C:\Archivos de programa\Java\jdk1.8.0_40

     

 

Java EE 2. Configurar Eclipse

Introducción

En Java existe una cantidad enorme de librerías que podemos reutilizar para nuestros proyectos, Maven nos proporciona la facilidad de gestionar estas librerías para manejar versiones y dependencias, así como empaquetar y distribuir el proyecto. Para mas detalles: http://www.genbetadev.com/java-j2ee/que-es-maven.

Eclipse ya integra Maven y su uso lo hace muy sencillo. El proyecto Java EE que crearemos será un proyecto Maven

Configurar Eclipse

1. Seleccionar workspace

Al abrir Eclipse por primera vez debemos seleccionar la ruta ../developer/ide/workspace

workspace

2. Crear Archetypes de Maven

Dentro de Eclipse ir a:

Windows -> Preferences -> Maven -> Archetypes

archetype

Clic en el botón Add Remote Catalog.. En el campo Catalog File:  copiamos la ruta: http://repo.maven.apache.org/maven2/archetype-catalog.xml y clic en el botón OK.

archetype2

Se muestra la nueva ruta de Archetypes agregada.

archetype2_1

NOTA: Esta ruta se puede obtener de la pagina oficial de Maven https://maven.apache.org/https://maven.apache.org/archetype/archetype-models/archetype-catalog/archetype-catalog.html

archetype3

3. Configurar el servidor de aplicaciones en Eclipse

Instalar las herramientas de Glassfish.

Dentro de Eclipse ir a:

Help -> Eclipse Marketplace… -> Search

Escribimos glassfish y presionamos el botón Go. Cuando nos muestre  GlassFish Tools damos clic en Install.

glassfishTools

Habilitamos todo y clic en Confirm.

glassfishTools2

Aceptamos la licencia y clic en Finish.

glassfishTools3

Cuando termine  de instalar nos pedirá reiniciar Eclipse. Clic en Yes.

glassfishTools4

NOTA: Si  se muestra un error al instalar el plug-in se puede intentar lo siguiente. http://arieloliva.com/error_glassfish_tools_eclipse/

Configurar GlassFish.

Después de reiniciar Eclipse, seleccionamos la pestaña Servers y clic en No servers are available. Click this link to create a new server…

server

Seleccionamos GlassFish 4 y el nombre del servidor. Presionamos Next.

server2

Seleccionamos la ruta ../developer/server/glassfish4/glassfish donde previamente se descomprimimos el servidor de aplicaciones GlassFish. Clic en Next.

server3

Dejamos el password en blanco y clic en Finish.

server4

Se muestra el servidor. Clic derecho y seleccionamos Start. El servidor debe levantarse.

server6

 

4. Crear proyecto Maven

Dentro de Eclipse ir a:

File -> New -> Other -> Maven -> Maven Project  Next

maven

 Default workspace y clic en Next.

maven2

Escribimos en Filter: J2EE, esperamos a que muestre los Archetype y seleccionamoa webapp-j2ee14 versión 1.3. Clic en Next.

maven3

Escribimos,
 Group Id: paquete inicial del proyecto
 Artifact Id: Nombre del proyecto
Versión: Versión del sistema a desarrollar (1.0.0). Clic en Finish.

maven4

 Clic derecho sobre el proyecto Run As -> 1. Run On Server

maven5

Seleccionamos GlassFish. Clic en Next.

maven6

Pasamos el proyecto a la ventana de Configured y clic en Finish.

maven7

Se muestra la ventana de «hola mundo». Lo cual indica que el proyecto se ejecuto correctamente

maven8