Comunicaciones basadas en la web - PowerPoint PPT Presentation

About This Presentation
Title:

Comunicaciones basadas en la web

Description:

... llama cuando el servlet es invocado con una peticion Http GET, que es la normal ... De la misma manera, cuando un entity bean es removido, se llama a ejbRemove y ... – PowerPoint PPT presentation

Number of Views:133
Avg rating:3.0/5.0
Slides: 33
Provided by: nbal
Category:

less

Transcript and Presenter's Notes

Title: Comunicaciones basadas en la web


1
Comunicaciones basadas en la web
  • Cc52n 2005/1

2
Web-based communication
  • Se basan en el esque ma cliente servidor que
    implementa la web
  • usa protocolos web http (port 80, GET, PUT, ...)
  • Trabajan bien tras frirewalls
  • Clientes normalmente flacos
  • Ejemplos en Java
  • Servlets
  • Applets
  • J2EE
  • Java Web Services (via SOAP)

3
Desarrollo y ejecución de Applets
1. Escribir el código fuente en un archivo con
extensión Java con un editor de texto 2.
Compilarlo con el Compilador (javac) para
generar el archivo clase con extensión class 3.
Ponerlo en el servidor web junto con una
página que contengauna referencia al applet (tag)
4. Invocar con un browser la página web
4
Desarrollo y ejecución de Applets
MyApplet.java
MyApplet.class
Java class file
Java source code
MyApplet.class
Pagina.html
Pagina.html
Applet tag
ltapplet codeMyApplet.class gt ltparametersgt lt/apple
tgt
Pagina.html
MyApplet.class
GET Pagina.html
5
Desarrollo y ejecución de Servlets
1. Escribir el código fuente en un archivo con
extensión Java con un editor de texto 2.
Compilarlo con el Compilador (javac) para
generar el archivo clase con extensión class 3.
Ponerlo en el servidor web en el lugar
apropiado 4. Invocar con un browser el servlet
(directamente o a través de un botón action
de un form de HTML)
6
Desarrollo y ejecución de Servlets
MyServlet.java
MyServlet.class
Java class file
Java source code
MyServlet.class
Código HTML
GET MyServlet
7
Java Script
El código de un programa es escrito directamente
dentro de la página HTML NO SE PARECE MUCHO A
JAVA !!!!!
Html Script
ltscript language JavaScriptgt the
code lt/scriptgt
Java program running on the client
8
Java Server Pages (y ...)
  • Como Java Script para applets, JSP es un
    lenguaje script para la programación de servlets
  • El código es escrito directamente dentro de la
    página HTML pero es ejecutada en el servidor
  • El server generará entonces código HTML el cual
    será escritoen el browser cliente

9
Esquema J2EE
Servidor de Aplicaciones
DBMS
J2EE Bean
Servlet JSP
respuesta
Servidor web
Contacta un Servlet o un JSP
10
Servlets
  • Servlets son módulos que extienden a servidores
    orientados a request/response, como por ejemplo
    Servidores Web java-enabled.
  • Un servlet puede ser el responsable de tomar
    datos de una forma HTML y aplicar un método
    para actualizar las bases de datos de la una
    compañía de acuerdo a ellos.
  • Servlets reemplazan a los CGI scripts. They
    provide a way to generate dynamic documents that
    is both easier to write and faster to run.
  • Servlets also address the problem of doing
    server-side programming with platform-specific
    APIs they are developed with the Java Servlet
    API, a standard Java extension.

11
La Anatomía de un Servlet
  • Un nuevo tipo (clase) de servlet es especificado
    extendiendo la clase HttpServlet
  • Existen métodos predefinidos
  • init() es llamado por el servidor web cuando el
    servlet se sube la primera vez (uploaded)
  • doGet(HttpServletRequest req, HttpServletResponse
    res) throws ServletException, IOException
  • se llama cuando el servlet es invocado con una
    peticion Http GET, que es la normal cuando se
    contacta un serv.
  • doPost(HttpServletRequest req, HttpServletResponse
    res) throws ServletException, IOException
  • se ejecuta cuando el servlet fue invocado con una
    petición Http POST

12
Anatomía de un servlet
  • Una petición GET se genera siempre que una
    petición http es ingresada en el browser
    (http//www.yahoo.com/ implica GET index.html
    Httpx.x )
  • Cuando el servlet se llama por primera vez, se
    inicializa y 4-6 threads son levantados para
    atender a cleintes en paralelo cuando vayan
    apareciendo, Para ahorrar tiempo
  • En la mayoría de los casos los servlets son
    contactados a través de forms en páginas html. En
    este caso es posible especificar parámetros y
    generar una petición POST

13
Pasando parametros
  • Es posible pasar parámetros en la línea de
    invocación URL
  • http//hostport/servlet?param1value1param2valu
    e2..
  • El servlet puede preguntar por los valores de los
    parámetros si conoce el nombre de ellos de la
    siguente manera
  • String value req.getParametervalues(param1)
  • Parámetros pueden ser solamente strings

14
Session Tracking
  • Session tracking es el mecanismo que usan los
    servlets para mantener información acerca del
    estado de los requests de un usuario (esto es,
    requests originados de un mismo browser) en un
    período de tiempo.

15
Using Cookies
  • Cookies are a way for a servlet to send some
    information to a client to store, and for the
    server to later retrieve its data from that
    client.
  • Servlets send cookies to clients by adding fields
    to HTTP response headers.
  • Clients automatically return cookies by adding
    fields to HTTP request headers.
  • Cookies have a name and a value (additionally
    they can have some comments).
  • In addition to a name and a value, you can also
    provide optional attributes such as comments.
  • A server can provide one or more cookies to a
    client.

16
Using Cookies
  • To send a cookie
  • 1.Instantiate a Cookie object
  • 2.Set any attributes
  • 3.Send the cookie
  • To get information from a cookie,
  • 1.Retrieve all the cookies from the user's
    request
  • 2.Find the cookie by its name
  • 3.Get the values of the cookies that
    you found

17
Los Enterprise Java Beans son como los Servlets
  • Son trozos de código que extienden un servidor
  • Viven en un contenedor apropiado
  • El contenedor decide cuándo se crean y se
    destruyen
  • No son contactados directamente por el cliente

18
Existen 3 Clases principales
  • Session Beans
  • Implementan procesos, orientados a acciones
    (cálculo de un valor)
  • Entity Beans
  • Están asociados a datos persistentes. Representan
    una instancia de un dato almacenado
  • Message Driven Beans
  • Parecidos a Session beans pero son despertados
    o contactados por mensajes que pueden incluso ser
    asínctonos

19
Refinando la clasificación
  • Session Beans
  • Sin estado son contactados una vez por los
    clientes, ejecutan una acción y no queda traza de
    lo que se hizo
  • Con estado en una sesión pueden ser
    contactados varias veces por el mismo cliente
    para desarrollar una conversación. Será
    necesario mantener algún tipo de información para
    recordar lo que va haciendo el cliente
  • Entity Beans
  • Persistencia controlada por el Bean el
    programador debe incluir código de modo de
    asegurarse que el enttity bean represente a un
    dato en una tabla
  • Persistencia controlada por el container el
    container se preocupa de asociar el bean a un
    dato de una tabla

20
Cómo administra el container el cliclo de vida de
los beans
  • Los beans son creados y destruidos por el
    container. Cuando un bean se levanta con el
    container (el bean debe estar ahí cuando se echa
    a andar el server) se crean instancias del bean
    (bean pool) las cuales son asignadas a los
    clientes. Qué bean es entregado a qué cliente lo
    decide el container
  • Si se necesitan más beans estos son creados por
    el container (create)
  • Si hay demasiados estos son destruidos (Remove)
  • El container puede decidir además hacer dormir
    o despertar a los beans según las necesidades
    (activate, passivate) para

21
El papel de cada uno de las 3 clases de objetos
  • Cuando un cliente desea contactar a un bean
    localiza un un ejbHome Object que correspoda al
    de un bean deseado.
  • Este proceso es bien dependiente de las
    condiciones locales pero normalmente requiere
    hacer un lookup a un servidor de nombres
    (normalmente provisto por el servidor de
    aplicaciones también) por medio de la API JNDI
  • Una vez que tiene una referencia a este lo usa
    para fabricar un objeto EJB, al cual le aplica
    los métodos
  • El EJBObjet se contactará con un bean adecuado
    para que dé el servicio (esto lo hace el
    contenedor)

22
El papel de cada uno de las 3 clases de objetos
Bean Pool
3 contacta home
ejbHome
cliente
5- retorna referencia
4 crea ejbObject
6 invoca método
1-ubicar
2 retorna referencia
7 contacta bean
ejbObject
Naming
23
Estados de un Bean
Cliente invoca create en un home Interface
Cliente llama a remove() en el ejbObject o se
le da un timeout al cliente
No existe
El container llega a un límite de su capacidad
swapping
1- Class.newInstance() 2- setSessionContext() 3-
ejbCreate(...)
ejbRemove()
Timeout del cleinte
ejbPasivate()
Activo
Pasivo
ejbActiivate()
Liente llama a un método del Bean pasivado
24
Los Entity beans
  • Un bean representa a un dato (fila) en una base
    de datos
  • Hay que pensar en ellos como si fueran uno solo
    con el dato en memoria secundaria
  • Debe existir un mecanismo para automáticamente
    transferir los datos de la memoria secundaria al
    EJB y vice-versa
  • Esto se hace a través de llamadas a los métodos
    ejbLoad() y ejbStore()
  • Estos métodos son llamados por el container
    cuando estima que es necesario
  • distintos beans pueden representar al mismo dato
    en disco
  • ejbActivate() y ejbPassivate() se llaman cuando
    un entity bean es puesto/sacado de un pool de
    beans, por lo que hay que programas la
    adquisición y liberación de reucursos
  • Como además se debe guardar el estado del bean en
    memoria secundaria, por lo cual se llama siempre
    a ejbStore abtes de pasivar y a ejbLoad antes de
    activar

25
Las 2 maneras de lograr persistencia de los beans
  • En un bean-manajed persistence entity bean el
    programador debe escribir las instrucciones para
    que las variables del entity bean sean las
    correspondientes a un dato en una base de datos
    (saving, loading, and finding)
  • Estas instrucciones van en los métodos de
    creación (ejbCreate(...)), destrucción
    (ejbRemove()), localización (ejbFind(...)), carga
    (ejbload()) y almacenamiento (ejbStore())
  • Esto generalmente se hace via instrucciones JDBC
  • En los container-managed persistence beans de
    esto se encarga el container, sólo basta dar
    algunas directrices para la localización de los
    datos en un archivo especial (según yo, esto
    sería una de las gracias más grandes de j2ee)

26
Creación y destrucción de Entity Beans
  • Cuando un entity bean es creado por una llamada
    al método ejbCreate se debe crear también este
    dato en la base de datos, si se trata de un
    bean-managed persistence bean, aquí se deben
    programar las instruccónes SQL para insertar una
    fila en una tabla
  • De la misma manera, cuando un entity bean es
    removido, se llama a ejbRemove y aquí se debe
    programas la instrucción SQL que borre la fila
    correspondiente
  • A cada clase de entity bean que se crea hay que
    asociarle un objeto que represente la clave
    primaria de ese tipo de objeto (por ejemplo un
    string. Por convención se usa el nombre del bean
    terminado en PK (por ejemplo CuentaPK)
  • El método ejbCreate de un entity bean debe
    devolver un siempre un objeto de este tipo luego
    de haber creado el dato

27
Esquema de creación de un entity bean
1- create()
2- ejbCreate()
cliente
Home
4- retorna una referencia al EJB object
Bean
4- retorna un objeto que representa la
clave primaria del ejb creado
5- creación del objeto EJB
3- se crea el dato en la base de datos
EJB Object
Base de Datos
CONTAINER
28
Los CMP Entity Beans
  • La idea principal es no tener que escribir ningun
    código de persistencia con la base de datos
  • Mucho del código migra del Bean al Deployment
    descriptor (pero muy simplificado)
  • Juega un papel importante el EJB-QL, que es un
    lenguaje estilo SQL orientado a objetos con el
    cual se especifican muchas cosas.

29
SOAP
  • Simple Object Access Protocol
  • XML-based communication protocol and encoding
    format for inter-application communication
  • SOAP is widely viewed as the backbone to a new
    generation of cross-platform cross-language
    distributed computing applications, termed Web
    Services.
  • En java está implementado con el servidor AXIS

30
Architecture
Tomcat
Axis
XML
Servicio Web
Cliente
XML
31
Ejemplo (client)
import org.apache.axis.client.Call import
org.apache.axis.client.Service import
org.apache.axis.encoding.XMLType public class
CalcClient public static void main(String
args) throws Exception String endpoint
"http//hostport/axis/Calculator.jws" if
(args null args.length ! 3)
System.err.println("Usage CalcClient
ltaddsubtractgt arg1 arg2") return
String method args0
Integer i1 new Integer(args1) Integer
i2 new Integer(args2) Service service
new Service() Call call (Call)
service.createCall() call.setTargetEndpoint
Address( new java.net.URL(endpoint) )
call.setOperationName( method )
call.addParameter( "op1", XMLType.XSD_INT,
ParameterMode.IN ) call.addParameter(
"op2", XMLType.XSD_INT, ParameterMode.IN )
call.setReturnType( XMLType.XSD_INT )
Integer ret (Integer) call.invoke( new Object
i1, i2 ) System.out.println("Got
result " ret)
32
Ejemplo (server)
public class Calculator public int add(int
i1, int i2) return i1 i2 public
int subtract(int i1, int i2) return i1 -
i2
  • En AXIS basta con escribir este archivo en java,
    cambiarle la extensión a jws y el resto
    (deplyment) lo hace el sistema
  • Se pueden usar WS Deployment Descriptors para
    customizar el servicio
Write a Comment
User Comments (0)
About PowerShow.com