Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Negocios en la Web
Volumen 1: Introducción a la Computación Empresarial y JavaBeans
Computación Local
Los componentes comparten un espacio de direcciones comunes para
comunicarse
Computación Distribuída
Los programas realizan llamadas a otros espacios de direcciones
generalmente de otras máquinas
Middleware
Software para sistemas distribuídos que apunta a ocultar
heterogeneidad de las redes subyacentes , hadware, sistema operativo y
lenguajes de programación
RMI (Invocación a Métodos Remotos)
Modelo de programación basado en objetos en el cual un objeto en un proceso
puede invocar al método de un objeto en otro proceso que reside en una
máquina diferente
Volumen 1: Introducción a la Computación Empresarial y JavaBeans
RPC (Llamada a Procedimiento Remoto)
Es una tecnología general donde un proceso cliente invoca a un procedimient
en un proceso servidor, generalmente en un sistema remoto
Java RMI
Implementación proporcionada por Java la cual permite que se pueda
invocar a un método de un objeto situado en otra JVM
DCOM (Modelo de Objeto de Componentes Distribuído)
Extensión de COM para soportar la comunicación entre objetos situados en
diferentes computadores basados en Windows
CORBA (Arquitectura Común de Intermediarios en Peticiones a Objetos )
Especificación para el diseñi Middleware que hace posible que objetos
escritos usando diferentes lenguajes puedan comunicarse entre si
Servicios Web
Permiten hacer llamadas a procedimientos remotos contra un objeto sobre la
red
Volumen 1: Introducción a la Computación Empresarial y JavaBeans
Java RMI
Mecanismo de Trabajo
El registro crea un socket en un numero de puerto y espera las peticiones de
los clientes . Cuando un cliente solicita una referencia a un objeto remoto, el
registro lo entrega al cliente. Seguidamente, el cliente se comunica con el
objeto remoto y no se requiere del registro para invocar los métodos
Cómo escribir una aplicación RMI
1. Definir una interfaz remota
5. Definir una clase que invoque los métodos del objeto remoto
6. Iniciar el registro
7. Ejecutar el helper
8. Ejecutar el cliente
Volumen 1: Introducción a la Computación Empresarial y JavaBeans
Servicio de Nombres
Característica que ayuda a asociar un nombre con un objeto, proporcionando
una interfaz para que los clientes puedan acceder al objeto
Servicio de Directorios
Posee características similares al Servicio de Nombres , adicionalmente
también asocia atributos con el objetos
Problemas
•
La forma en que un programa de aplicación accede a un producto es
totalmente diferente a la manera en que otro programa lo accede.
•
Cambiar de servicios significa reescribir el programa de aplicación. Un
problema similar es el de los usuarios de bases de datos para los que JDBC
fue una solución.
Volumen 1: Introducción a la Computación Empresarial y JavaBeans
JNDI
JNDI
JNDI fue presentado para proporcionar a los programadores de Java de una
interfaz común para acceder a los diferentes servicios de nombres y
directorios productos de diferentes proveedores
JNDI para acceder al sistema de Archivos ...
try {
Hashtable props = new Hashtable();
props.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory");
props.put(Context.PROVIDER_URL, "file:c:\\TEMP");
Context cotx = new InitialContext(props);
Object fobj = cotx.lookup("test.txt");
System.out.println(fobj);
} catch (Exception e) {
e.printStackTrace();
}
Volumen 1: Introducción a la Computación Empresarial y JavaBeans
Diferentes Servicios de Nombres y Directorios
1. RMI: Servicio de Nombres con sistema plano
2. Nombrado COS : Servicio de Directorio para enlazar objetos CORBA
3. NIS (Servicio de Información en Red): Servicio de Directorio utilizado para
almacenar información que debe ser compartida en la red. Es un producto de
Sun Microsystems
4. NDS : Mantiene un directorio de información que va a ser accedida desde
cualquier punto de la red. Es un producto Novell.
5. IBM WAS : Servicio de Directorio que ofrece acceso compartido a
componentes Java.
6. Servicios que usan el Protocolo LDAP: a través de este protocolo todos
los servicios se acceden de la misma forma utilizando convenciones de
nombres y separadores
Volumen 1: Introducción a la Computación Empresarial y JavaBeans
DataSources
Mecanismo de Trabajo
Los objetos DataSources permiten manejar un pool de conexiones a una base
de datos sin necesidad de conocer las especificaciones y detalles técnicos
de la misma.
Pasos para crear un objeto DataSource y acceder a una Base
de Datos
1. Crear un initialContext para el servicio JNDI
javax.sql.DataSource
4. El método getConnecction() de la interfaz javax.sql.DataSource se invoca
DataSources
Ejemplo de un programa que obtiene una conexión a una base de
datos
…
Context cotx=new InitialContext(props);
DataSource ds = (DataSource) cotx.lookup("java:comp/env/jdbc/sampledatasource");
Connection con=ds.getConnection();
...
Volumen 1: Introducción a la Computación Empresarial y JavaBeans
JavaBeans
Requerimientos
1. Debe ser instanciable
2. Debe tener un constructor sin argumentos
3. Debe ser serializable
4. Debe seguir las convenciones de nombres definidas para sus métodos y
accesorios
Propiedades
1. Propiedades: Atributos o variables de un bean
2. Métodos : Comportamientos que muestran un bean
3. Eventos: Indican que algo ha cambiado en un bean
4. Propiedad Bound : Capacidad de actualizar a los elementos dependientes
con relación al valor de una propiedad que ha cambiado
5. Propiedad Constrained : El cambio del valor de una propiedad cambia solo
si los listeners notificados del cambio, lo aprueban
Volumen 1: Introducción a la Computación Empresarial y JavaBeans
Qué es J2EE?
Es una especificación unificada para desarrollar aplicaciones empresariales
distribuidas a través de un modelo de aplicaciones basado en componentes.
Los componentes dependen de las entidades de nivel del sistema, conocidas
como contenedores.
Ventajas de J2EE
1. Arquitectura y Desarrollo simplificado
2. Escalabilidad
4. Integración
5. Seguridad Flexible
Volumen 2: Componentes WEB – I (Servlets)
GET
•
La información ingresada por el usuario se agrega al URL
•
Existe una restricción en la cantidad de datos que pueden ser pasados como
parte del URL
•
El Método GET es el método de pedido HTTP más usado
•
Los datos del formulario son pasados al servidor como una cadena de
consulta en el URL
•
El cuerpo del pedido es vacío
POST
•
Los parámetros del formulario se almacenan en el cuerpo de la solicitud
•
Las desventajas del método GET son superadas por el método POST
•
Cualquier cantidad de datos pueden ser enviados al servidor
Volumen 2: Componentes WEB – I (Servlets)
SERVLETS
Qué es un Servlet?
Es un programa del lado del servidor escrito en Java que reside y se ejecuta en
un servidor web y extiende la funcionalidad del servidor web para entregar
contenido dinámico
Tareas que puede llevar a cabo un Servlet
•
Generar paginas web dinámicas
•
Actuar como interfaz entre el cliente y los recursos del lado del servidor
•
Mantener información de estado y sesión del cliente
•
Proporcionar servicios de autenticación
•
Redireccionar solicitudes a otros programas de lado del servidor
Ventajas del uso de Servlets
•
Independencia del hardware
•
Bajas probabilidades de violaciones de seguridad
•
Reutilización de código
•
Interacción con otros componentes
Volumen 2: Componentes WEB – I (Servlets)
SERVLETS
Consejos para escribir Servlets
•
Deben implementar directa o indirectamente la interfaz Servlet
•
Invocar el método doxxxxx () dependiendo del tipo de solicitud
•
Obtener el flujo del objeto HttpServletResponse para comunicarse con el
cliente
•
Todos los Servlets deben ser parte de una aplicación web
Volumen 2: Componentes WEB – I (Servlets)
SERVLETS
Código para un Servlet sencillo
import javax.servlet.http.*
import javax.servlet.*;
import java.io.*;
public class WelcomeServlet extends HttpServlet{
Contenedores Web
Funcionamiento de los Contenedores Web
•
Soporta la API Servlet y proporciona un entorno en tiempo de ejecución para
su funcionamiento
•
Administra el ciclo de vida de los Servlets
•
Cumple su función de alojamiento de Servlets
•
Actúa como puente entre el Servidor Web y los Servlets
Implementaciones Disponibles de Contenedores Web
•
WebSphere Application Server
•
WebLogic
•
Open Network Environment
•
Tomcat Server
Volumen 2: Componentes WEB – I (Servlets)
Filtros en Servlet
Funcionamiento de los Filtros en Servlet
•
Son una clase de Java que pueden interceptar y manipular solicitudes de los
clientes antes de que estas accedan a los recursos de la aplicación
•
Pueden interceptar y manipular respuestas de los recursos de la aplicación
antes que sean enviadas a los clientes finales.
•
Son objetos de una clase de java que implementa la interfaz
javax.servlet.Filter
•
Cuando el contenedor web recibe una petición , verifica si hay un filtro
asociado al recurso solicitado. Si es así, la petición es enviada al filtro
•
Cuando una petición Servlet llega al servidor se ejecutaran de 0 a N filtros
•
El orden de ejecución esta determinado por el orden en el que se ubiquen los
filtros en el descriptor de despliegue
Volumen 2: Componentes WEB – I (Servlets)
Filtros en Servlet
Metodos de la interfaz javax.servlet.Filter
•
init(): Construye el objeto de configuración del filtro
•
destroy(): Coloca el filtro fuera de servicio
•
doFilter(): Realiza el trabajo de filtrado sobre la petición o respuesta
Ciclo de Vida de un Filtro
•
El servidor llama al método init() para inicializar el filtro
•
Se invoca al método doFilter() para realizar la acción de filtrado
•
El filtro luego llama a método chain.doFilter() para transferir el control al
nuevo filtro
•
El servidor llama al método destroy() para indicar que el filtro está fuera de
servicio
Volumen 2: Componentes WEB – I (Servlets)
Proporciona
implementación
especifica para
HTTP de la interfaz
Servlet
Volumen 2: Componentes WEB – I (Servlets)
Administración de Sesiones
Técnicas de Administración de Sesiones
•
Cookies: Es una pieza de informacion textual enviada por el servidor al
cliente, almacenada en el disco duro del cliente y devuelta al cliente en
solicitudes posteriores
•
Campos Ocultos : El servidor incorpora campos ocultos en cada formulario
HTML presentado al usuario. El cliente no puede ver ni modificar los campos
ocultos
•
Reescritura de URL : Todos los hiperenlaces proporcionados por el cliente
tienen el sessionID agregado a ellos
•
Sesiones de Secure Socket Layer (SSL): Protocolo usado para autenticar
el servidor al cliente y viceversa
Volumen 2: Componentes WEB – I (Servlets)
•
Permite los scripts de lado del servidor, donde el contenido estático es
generado usando HTML, mientras que el contenido dinámico es generado
usando código script
•
La tecnología JSP se extiende desde HTML a código Java embebido de
forma transparente en las páginas HTML
•
Representa una forma mejorada de escribir los Servlets
•
Separa la información de la presentación de la lógica de la aplicación
Volumen 3: Componentes WEB - II (JSP)
Arquitectura JSP
<%@ page import=”java.util.Date” session=”true” info=”Example program to demonstrate the use of JSP page directive”
errorPage=”Error.jsp” isErrorPage=”false” isThreadSafe=”false” %>
<HTML>
<HEAD>
<TITLE>Hello World JSP Example with Current Time
</TITLE>
</HEAD>
<BODY>
Hello World. The local server time is <%= new Date() %>.
</BODY>
</HTML>
Ejemplo2
<%@ page isErrorPage="true" %>
<HTML>
<HEAD><TITLE>Error Page </TITLE></HEAD>
<BODY>
<H2>Exception has occurred</H2>
<TABLE border="1">
<TR>
<TH>Exception</TH> <TD><%=exception %></TD>
</TR>
<TR> <TH>Message</TH> <TD><%=exception.getMessage() %></TD>
</TR>
</TABLE>
</BODY>
</HTML>
Volumen 3: Componentes WEB - II (JSP)
Paso 1: Crear el JSP
<%@ page import="java.util.*" %>
<%@ taglib uri="/CustomTags/" prefix="simple" %>
<HTML>
<HEAD><TITLE>Ejemplo de un Simple Custom Tag</TITLE></HEAD>
<BODY>
<%Calendar calendar = Calendar.getInstance();
int hr = calendar.get(Calendar.HOUR_OF_DAY);
int min=calendar.get(Calendar.MINUTE);
int sec=calendar.get(Calendar.SECOND);
%>
<FONT size="5" color="#0065CE">
<simple:greeting/>
La Hora es: <%=hr%>:<%=min%>:<%=sec%>
</FONT>
</BODY>
</HTML>
Volumen 3: Componentes WEB - II (JSP)
Paso 2: Crear la clase Manejadora de la Etiqueta
import javax.servlet.jsp.*;
import java.util.*;
import java.io.*;
import javax.servlet.jsp.tagext.TagSupport;
public class GreetingTagHandler extends TagSupport {
Paso 2: Crear la clase Manejadora de la Etiqueta
else
if (hr < 16)
pageContext.getOut().write("Good Afternoon.");
else
if (hr < 19)
pageContext.getOut().write("Good Evening.");
else
pageContext.getOut().write("Good Night.");
} catch (IOException ex) {
throw new JspTagException("Fatal error:greeting tag could not write to the output stream");
}
return EVAL_PAGE;
}//fin del metodo doEndTag()
}//fin de la Clase
Volumen 3: Componentes WEB - II (JSP)
Paso 3: Crear el Descriptor de Librería de Etiqueta
•
El Descriptor de Librería de Etiquetas (Tag Library Descriptor-TLD) es un
documento XML con la extensión .tld conforme con el DTD dado por Sun
Microsystems
•
El TLD corresponderá a la etiqueta personalizada <simple:greeting> con su
clase manejadora GreetingTagHandler.java
Volumen 3: Componentes WEB - II (JSP)
Paso 4: Escribir el TLD
Paso 5: Actualizar el Web.xml