GLOSARIO WEB SERVICE
GLOSARIO WEB SERVICE
para esta entrada pretendo aclarar términos que desconozco propios de ambientes de desarrollo de software, especialmente bajo un lenguaje de programación especifico como es JAVA.
los términos aquí definidos corresponden al taller sobre web service.
SOAP: (originalmente las siglas de Simple
Object Access Protocol) es un protocolo estándar que
define cómo dos objetos en diferentes procesos pueden comunicarse por medio de
intercambio de datos XML. Este
protocolo deriva de un protocolo creado por Dave Winer en 1998, llamado XML-RPC. SOAP
fue creado por Microsoft, IBM y otros. Está actualmente bajo el
auspicio de la W3C. Es
uno de los protocolos utilizados en los servicios Web.
JAX-WS: JAX-WS (Java
API for XML Web Services) es
una interfaz
de programación de aplicaciones (API)
de Java en Extensible
Markup Language (XML) para la creación de servicios web (WS).
Es parte de la plataforma Java EE de Sun Microsystems.
Al igual que las otras API de Java EE, JAX-WS utiliza anotaciones,
introducidas en Java SE 5, para
simplificar el desarrollo y despliegue de los clientes y puntos finales de
servicios web. Es parte del Java
Web Services Development Pack.
La implementación
de referencia de JAX-WS se desarrolla como un proyecto
de código
abierto y forma parte del proyecto GlassFish,
un servidor de aplicaciones Java EE de código abierto. Se llama JAX-WS RI
(por Reference Implementation) y se dice que es la implementación de
calidad de producción (contrariamente a la implementación de referencia antigua
que era una prueba de concepto).
API: API significa Interfaz de Programación de Aplicaciones,
y su definición formal le da poca información útil a alguien que no entiende
mucho de informática. Una API es una “llave de acceso” a funciones que nos
permiten hacer uso de un servicio web provisto por un tercero, dentro de una
aplicación web propia, de manera segura.
Ejemplos de APIs:
·
Google Maps a través de su acceso a “API”
nos permite ponerle datos e información útil sobre sus mapas, y presentarlos
con ciertas búsquedas o funciones personalizadas, desde nuestra propia
aplicación.
·
Paypal con su “API” nos permite hacer
operaciones de pagos electrónicos usando nuestro propio sistema web, sin
necesidad de acceder/operar en la web de Paypal
IDE: Un entorno de desarrollo integrado o entorno de
desarrollo interactivo, en inglés Integrated Development
Environment (IDE), es una aplicación
informática que proporciona servicios integrales para facilitarle
al desarrollador o programador el desarrollo
de software.
Normalmente, un IDE consiste de un editor
de código fuente, herramientas de construcción automáticas y
un depurador. La
mayoría de los IDE tienen auto-completado inteligente de código (IntelliSense).
Algunos IDE contienen un compilador,
un intérprete, o
ambos, tales como NetBeans y Eclipse;
GlassFish: es un servidor de
aplicaciones de software libre desarrollado por Sun Microsystems,
compañía adquirida por Oracle Corporation, que
implementa las tecnologías definidas en la plataforma Java EE y permite ejecutar aplicaciones que
siguen esta especificación. Es gratuito, de código libre y se distribuye bajo un licenciamiento
dual a través de la licencia CDDL y
la GNU GPL. La
versión comercial es denominada Oracle GlassFish Enterprise Server (antes Sun
GlassFish Enterprise Server).
WSDL: las siglas de Web Services Description
Language, es un formato del Extensible
Markup Language (XML) que se utiliza para describir servicios web (WS).
La versión 1.0 fue la primera recomendación por parte del W3C y
la versión 1.1 no alcanzó nunca tal estatus. La versión 2.0 se convirtió en la
recomendación actual por parte de dicha entidad.
WSDL describe la interfaz pública a los servicios Web. Está
basado en XML y describe la forma de comunicación, es decir, los requisitos del
protocolo y los formatos de los mensajes necesarios para interactuar con los
servicios listados en su catálogo. Las operaciones y mensajes que soporta se
describen en abstracto y se ligan después al protocolo concreto de red y al
formato del mensaje.
Así, WSDL se usa a menudo en combinación con SOAP y XML Schema. Un
programa cliente que se conecta a un servicio web puede leer el WSDL para
determinar qué funciones están disponibles en el servidor. Los tipos de datos
especiales se incluyen en el archivo WSDL en forma de XML Schema. El cliente
puede usar SOAP para hacer la llamada a una de las funciones listadas en el
WSDL.
El WSDL nos permite tener una descripción de un servicio web.
Especifica la interfaz abstracta a través de la cual un cliente puede acceder
al servicio y los detalles de cómo se debe utilizar.
EJB CONTAINER: Las Enterprise JavaBeans (también
conocidas por sus siglas EJB) son una de las interfaces
de programación de aplicaciones(API) que forman parte del estándar de
construcción de aplicaciones empresariales J2EE (ahora JEE) de Oracle
Corporation(inicialmente desarrollado por Sun Microsystems).
Su especificación detalla cómo los servidores de aplicaciones
proveen objetos desde el lado del servidor, que son precisamente los EJB:
- · Comunicación remota utilizando CORBA.
- · Transacciones.
- · Control de la concurrencia.
- · Eventos utilizando JMS (Java Messaging Service).
- · Servicios de nombres y de directorio.
- · Seguridad.
- · Ubicación de componentes en un servidor de aplicaciones.
La especificación de EJB define los papeles jugados por el
contenedor de EJB y los EJB, además de disponer los EJB en un contenedor.
Existen tres tipos de EJB:
1. EJB de
Entidad (Entity
EJB): su objetivo es encapsular los objetos del lado del servidor que
almacena los datos. Los EJB de entidad presentan la característica fundamental
de la persistencia: (nota: en la documentación de Java
para JEE 5.0, los entity beans desaparecen, porque son
remplazados por Java Persistence API o JPA)
·
Persistencia gestionada por el contenedor (CMP): el contenedor se encarga
de almacenar y recuperar los datos del objeto de entidad mediante el mapeo o
vinculación de las columnas de una tabla de la base de datos con los atributos del objeto.
·
Persistencia gestionada por el bean (BMP): el propio objeto entidad
se encarga, mediante una base de datos u otro mecanismo, de almacenar y recuperar los datos a los que se
refiere, por lo cual la responsabilidad de implementar los mecanismos de
persistencia es del programador.
2. EJB de
Sesión (Session
EJB): gestionan el flujo de la información en el servidor. Generalmente
sirven a los clientes como una fachada de los servicios proporcionados
por otros componentes disponibles en el servidor. Puede haber dos tipos:
·
Con estado (stateful): en un bean de sesión con
estado, las variables de instancia del bean almacenan datos específicos
obtenidos durante la conexión con el cliente. Cada bean de sesión con estado,
por tanto, almacena el estado conversacional de un cliente que interactúa con
el bean. Este estado conversacional se modifica conforme el cliente va
realizando llamadas a los métodos de negocio del bean. El estado conversacional
no se guarda cuando el cliente termina la sesión.
·
Sin estado (stateless): los beans de sesión sin
estado son objetos distribuidos que carecen de estado asociado permitiendo por
tanto que se los acceda concurrentemente. No se garantiza que los contenidos
de las variables de instancia se conserven entre llamadas al método.
3. EJB
Dirigidos por Mensajes (Message-driven EJB): son los únicos beans con
funcionamiento asíncrono. Usando el Java Messaging System (JMS), se suscriben a un tema (topic)
o a una cola (queue) y se activan al recibir un mensaje dirigido a dicho
tema o cola. No requieren de su instanciación por parte del cliente.
JAVA EE
APPLICATION: Java Platform, Enterprise
Edition o Java EE (anteriormente conocido como Java 2 Platform,
Enterprise Edition o J2EE hasta la versión 1.4; traducido informalmente
como Java Empresarial), es una plataforma de programación—parte de la Plataforma Java—para
desarrollar y ejecutar software de aplicaciones en el lenguaje de
programación Java.
Permite utilizar arquitecturas de N capas distribuidas y se apoya ampliamente
en componentes de software modulares ejecutándose sobre un servidor
de aplicaciones. La plataforma Java EE está definida por
una especificación. Similar a otras especificaciones del Java
Community Process, Java EE es también considerado informalmente
como un estándar debido a que los proveedores deben cumplir ciertos requisitos
de conformidad para declarar que sus productos son conformes a Java
EE; estandarizado por The Java Community Process / JCP.
Java EE tiene varias especificaciones de API, tales
como JDBC, RMI, e-mail, JMS, Servicios Web, XML, etc y define cómo coordinarlos. Java EE
también configura algunas especificaciones únicas para Java EE para
componentes. Estas incluyen Enterprise
JavaBeans, servlets, portlets (siguiendo la especificación de Portlets
Java), JavaServer Pages y varias tecnologías de
servicios web. Ello permite al desarrollador crear una Aplicación
de Empresa portable entre plataformas y escalable, a la vez que
integrable con tecnologías anteriores. Otros beneficios añadidos son, por
ejemplo, que el servidor de aplicaciones puede manejar transacciones, la
seguridad, escalabilidad, concurrencia y gestión de los componentes
desplegados, significando que los desarrolladores pueden concentrarse más en la
lógica de negocio de los componentes en lugar de en tareas de mantenimiento de
bajo nivel.
WEB
CONTAINER: Un contenedor que implementa el contrato de componente web
de la arquitectura J2EE. Este contrato específica un entorno de tiempo de
ejecución para componentes web que incluye servicios de seguridad,
concurrencia, administración del ciclo de vida, transacción, implementación y
otros servicios. Un contenedor web proporciona los mismos servicios como
contenedor JSP así como vista federada de las API de la plataforma J2EE. Un
contenedor web lo proporciona una web o un servidor J2EE.
MAVEN PROJECT: Maven es una herramienta de software para la gestión y
construcción de proyectos Java creada
por Jason van Zyl, de Sonatype, en 2002. Es similar en funcionalidad a Apache Ant (y
en menor medida a PEAR de PHP y CPAN de Perl), pero tiene un modelo de configuración de
construcción más simple, basado en un formato XML. Estuvo integrado inicialmente dentro del
proyecto Jakarta pero ahora ya es un proyecto de nivel superior de la Apache
Software Foundation.
Maven utiliza un Project Object Model (POM) para describir el
proyecto de software a construir, sus dependencias de otros módulos y
componentes externos, y el orden de construcción de los elementos. Viene con
objetivos predefinidos para realizar ciertas tareas claramente definidas, como
la compilación del código y su empaquetado.
Una característica clave de Maven es que está listo para usar
en red. El motor incluido en su núcleo puede dinámicamente descargar plugins de
un repositorio, el mismo repositorio que provee acceso a muchas versiones de
diferentes proyectos Open Source en Java, de Apache y otras organizaciones y
desarrolladores. Este repositorio y su sucesor reorganizado, el repositorio
Maven 2, pugnan por ser el mecanismo de facto de distribución de
aplicaciones en Java, pero su adopción ha sido muy lenta. Maven provee soporte
no solo para obtener archivos de su repositorio, sino también para subir
artefactos al repositorio al final de la construcción de la aplicación,
dejándola al acceso de todos los usuarios. Una caché local de artefactos actúa
como la primera fuente para sincronizar la salida de los proyectos a un sistema
local.
Maven está construido usando una arquitectura basada en
plugins que permite que utilice cualquier aplicación controlable a través de la
entrada estándar. En teoría, esto podría permitir a cualquiera escribir plugins
para su interfaz con herramientas como compiladores, herramientas de pruebas
unitarias, etcétera, para cualquier otro lenguaje. En realidad, el soporte y
uso de lenguajes distintos de Java es mínimo. Actualmente existe un plugin para
.Net Framework y es mantenido y un plugin nativo para C/C++ fue alguna vez
mantenido por Maven 1
@WEBSERVICE: Indica
que la clase define un servicio web. Se pueden especificar como parámetros los
nombres del servicio (serviceName), del componente Port (portName), del SEI del
servicio (name), de su espacio de nombres (targetNamespace), y de la ubicación
del WSDL (wsdlLocation), que figurarán en el documento WSDL del servicio:
@WebService(name="ConversionPortType",
serviceName="ConversionService",
portName="ConversionPort",
targetNamespace="http://jtech.ua.es",
wsdlLocation="resources/wsdl/")
@WebParam:
Permite indicar el nombre que recibirán los
parámetros en el fichero WSDL:
@WebMethod(operationName="eurosAptas")
public int euro2ptas(
@WebParam(name="CantidadEuros",
targetNamespace="http://jtech.ua.es")
double euros) {
...
}
@WEBMETHOD: indica que un determinado método debe ser
publicado como operación del servicio. Si no se indica para ningún método, se
considerará que deben ser publicados todos los métodos públicos. Si no, sólo se
publicarán los métodos indicados. Además, de forma opcional se puede indicar
como parámetro el nombre con el que queramos que aparezca la operación en el
documento WSDL:
@WebMethod(operationName="eurosAptas")
public int
euro2ptas(double euros) {
...
}
Tomcat: es un contenedor de servlets que se utiliza en la Referencia
oficial de la implementación para Java Servlet y JavaServer Pages (JSP). Las
especificaciones Java Servlet y JavaServer Pages son desarrolladas por Sun
Microsystems cuyas especificaciones vienen dadas por la JCP (Java Community
Process). Apache Tomcat es desarrollado en un entorno abierto y participatorio,
bajo la licencia de Apache Software License.
Para simplificar, podríamos decir que Apache Tomcat (o Jakarta Tomcat)
es un software desarrollado con Java (con lo cual puede funcionar en cualquier
sistema operativo, con su máquina virtual java correspondiente) que sirve como
servidor web con soporte de servlets y JSPs.
Tomcat es mantenido y desarrollado por miembros de la Apache Software
Foundation y voluntarios independientes. Los usuarios disponen de libre acceso
a su código fuente y a su forma binaria en los términos establecidos en la
Apache Software License.
SERVLET: Es una tecnología que nos
permite crear aplicaciones web interactivas (dinámicas), es decir, le permite
al usuario interactuar con la aplicación (hacer consultas, insertar y eliminar
datos, …)
- Un Servlet es un objeto java que pertenece a una clase que extiende de javax.servlet.http.HttpServlet
Son pequeños programas escritos en Java que admiten peticiones a través
del protocolo HTTP. Los servlets reciben peticiones desde un navegador web, las
procesan y devuelven una respuesta al navegador, normalmente en HTML. Para
realizar estas tareas podrán utilizar las clases incluidas en el lenguaje Java.
TRY CATCH: Excepciones, o
sencillamente problemas. En la programación siempre se producen errores, más o
menos graves, pero que hay que gestionar y tratar correctamente. Por ello en
java disponemos de un mecanismo consistente en el uso de bloques
try/catch/finally. La técnica básica consiste en colocar las instrucciones que
podrían provocar problemas dentro de un bloque try, y colocar a continuación
uno o más bloques catch, de tal forma que si se provoca un error de un
determinado tipo, lo que haremos será saltar al bloque catch capaz de gestionar
ese tipo de error específico. El bloque catch contendrá el codigo necesario
para gestionar ese tipo específico de error. Suponiendo que no se hubiesen
provocado errores en el bloque try, nunca se ejecutarían los bloques catch.
Veamos ahora la estructura del bloque try/catch/finally:
try
{
//Código que puede provocar errores
}
catch(Tipo1 var1)
{
//Gestión del error var1, de tipo Tipo1
}
REPRESENTATIONAL STATE TRANSFER (REST) : REST
deriva de "REpresentational State Transfer", que traducido vendría a
ser “transferencia de representación de estado”, lo que tampoco aclara mucho, pero
contiene la clave de lo que significa. Porque la clave de REST es que un
servicio REST no tiene estado (es stateless), lo que quiere decir que,
entre dos llamadas cualesquiera, el servicio pierde todos sus datos. Esto es,
que no se puede llamar a un servicio REST y pasarle unos datos (p. ej. un
usuario y una contraseña) y esperar que “nos recuerde” en la siguiente
petición. De ahí el nombre: el estado lo mantiene el cliente y por lo tanto es
el cliente quien debe pasar el estado en cada llamada. Si quiero que un
servicio REST me recuerde, debo pasarle quien soy en cada llamada. Eso puede
ser un usuario y una contraseña, un token o cualquier otro tipo de
credenciales, pero debo pasarlas en cada llamada. Y lo mismo aplica para el
resto de información.
distributed hypermedia systems: Hypermedia , una extensión del
término hipertexto ,
es un medio
no lineal de información que incluye gráficos, audio, video,
texto plano e hipervínculos . Esta
designación contrasta con el término multimedia más
amplio, que puede incluir presentaciones lineales no interactivas e
hipermedia. También está relacionado con el campo de la
literatura electrónica . El término fue utilizado por
primera vez en un artículo de 1965 escrito por Ted Nelson . [1]
La WWW (World Wide-web) es un ejemplo clásico de hipermedia, mientras
que una presentación de cine no
interactiva es un ejemplo de multimedia estándar debido a la ausencia de
hipervínculos.
JAX-RS: Java API for RESTful Web Services es una API del lenguaje
de programación Java que proporciona soporte en la creación
de servicios web de
acuerdo con el estilo arquitectónico Representational State Transfer (REST).1 JAX-RS usa anotaciones,
introducidas en Java SE 5, para
simplificar el desarrollo y despliegue de los clientes y puntos finales de los
servicios web.
Jersey: El desarrollo de servicios web RESTful que admiten sin problemas
la exposición de sus datos en una variedad de tipos de medios de representación
y resumen los detalles de bajo nivel de la comunicación cliente-servidor no es
una tarea fácil sin un buen conjunto
de herramientas. Para simplificar el desarrollo de los servicios web
RESTful y sus clientes en Java, se ha diseñado una API JAX-RS estándar
y portátil. El marco de servicios RESTful Web Services de Jersey es de
código abierto, calidad de producción, marco para desarrollar servicios web
RESTful en Java que brinda soporte para API JAX-RS y sirve como una
implementación de referencia JAX-RS (JSR 311 y JSR 339).
El marco de Jersey es más que la Implementación de referencia
JAX-RS. Jersey proporciona su propia API que amplía el
conjunto de herramientas JAX-RS con características y utilidades adicionales
para simplificar aún más el servicio RESTful y el desarrollo del cliente.Jersey
también expone numerosos SPI de extensión para que los desarrolladores puedan
extender Jersey para que se adapte mejor a sus necesidades.
API: Una API (siglas de ‘Application Programming Interface’) es un
conjunto de reglas (código) y especificaciones que las aplicaciones pueden
seguir para comunicarse entre ellas: sirviendo de interfaz entre programas
diferentes de la misma manera en que la interfaz de usuario facilita la
interacción humano-software.
Las API pueden servir para comunicarse con el sistema operativo
(WinAPI), con bases de datos (DBMS) o con protocolos de comunicaciones
(Jabber/XMPP).
RESTFULL: hace referencia a un servicio web que implementa la
arquitectura REST.
JAVADB (DERBY): Apache Derby es un una base de datos relacional (RDBMS)
programa completamente en Java y mantenida por la Fundación Apache. El proyecto
Apache Derby es un proyecto OpenSource bajo licencia Apache 2.0. Una de las
principales características es que Apache Derby puede ser incrustado dentro de
nuestros programas Java, ocupando solo 2,6Mb de espacio, y funcionando
directamente en memoria
MySQL: es un sistema de administración de bases de datos
(Database Management System, DBMS) para bases de datos relacionales. Así, MySQL
no es más que una aplicación que permite gestionar archivos llamados de bases
de datos
JAXB: Java Architecture for
XML Binding (JAXB)
permite a los desarrolladores Java asignar clases de Java a representaciones XML. JAXB
proporciona dos características principales: la capacidad de serializar las
referencias de objetos Java a XML y la inversa, es decir, deserializar XML en
objetos Java. En otras palabras, JAXB permite almacenar y recuperar datos en
memoria en cualquier formato XML, sin la necesidad de implementar un conjunto
específico de rutinas de carga y guardado de XML para la estructura de clases
del programa.
GET y SET: Los métodos get y set, son
simples métodos que usamos en las clases para mostrar (get) o modificar (set)
el valor de un atributo. El nombre del método siempre
sera get o set y a continuación el nombre del atributo, su
modificador siempre es public ya que queremos mostrar o modificar
desde fuera la clase. Por ejemplo, getNombre o setNombre.
JSON: (JavaScript Object Notation) es un
formato para el intercambios de datos, básicamente JSON describe los datos con
una sintaxis dedicada que se usa para identificar y gestionar los datos. JSON nació
como una alternativa a XML, el fácil uso en javascript ha
generado un gran numero de seguidores de esta alternativa. Una de las mayores
ventajas que tiene el uso de JSON es que puede ser leído por cualquier
lenguaje de programación. Por lo tanto, puede ser usado para el intercambio de
información entre distintas tecnologías.
XML : siglas en inglés de eXtensible Markup
Language, traducido como "Lenguaje de Marcado Extensible" o
"Lenguaje de Marcas Extensible", es un meta-lenguaje que permite
definir lenguajes de marcas desarrollado por el World Wide Web Consortium (W3C)
utilizado para almacenar datos en forma legible. Proviene del lenguaje SGML y
permite definir la gramática de lenguajes específicos (de la misma manera
que HTML es
a su vez un lenguaje definido por SGML) para estructurar documentos grandes. A
diferencia de otros lenguajes, XML da soporte a bases de datos, siendo útil
cuando varias aplicaciones deben comunicarse entre sí o integrar información.
XML no ha nacido únicamente para su aplicación en Internet, sino
que se propone como un estándar para el intercambio de información estructurada
entre diferentes plataformas. Se puede usar en bases de datos, editores de
texto, hojas de cálculo y casi cualquier cosa imaginable.
Comentarios
Publicar un comentario