Beruflich Dokumente
Kultur Dokumente
Introduccin a J2EE
Es un estndar para la construccin estndar para la construccin de aplicaciones empresariales Es una especificacin basada en estndares abiertos que facilitan el diseo, construccin , ensamblado y puesta en produccin de aplicaciones empresariales Est basada en componentes Ofrece un modelo para el desarrollo de aplicaciones distribudas multitiered, la habilidad de reusar componentes, intercambio de datos basado en XML, un manejo de transacciones flexible y un modelo de seguridad unificado. Est constituido por un conjunto de tecnologas estndares: Servlets, JSP, JavaBeans, EJB, JDBC, JNDI, etc. Las soluciones J2EE no estn atadas a productos ni a interfaces de programacin de ningn fabricante
Tecnologas Web
Aplicacin web
Aplicacin que corre en al menos un servidor y a la que el usuario accede desde un cliente de propsito general (ej.: navegador web en un PC, etc.)
Apache Tomcat
Es un servidor de aplicaciones web que nos permite realizar la parte servidor de nuestras aplicaciones web.
Soporta: Servlets, JSP, acceso con JDBC y manejo de transacciones entre otras cosas. No soporta: En la actualidad Tomcat slo dispone de un contenedor web por lo tanto no soporta Enterprise Java Beans (EJB) http://jakarta.apache.org/tomcat
5
Probar Tomcat
Acceder a un navegador web y escribir la siguiente URL:
http://maquina:puerto Siendo la mquina aquella donde est sirviendo Tomcat y el puerto TCP por el que escucha.
Configuracin de Tomcat
[root@servidor1 bin]# ./catalina.sh run Using TOMCAT_HOME: /usr/local/tomcat
Directorio base de Tomcat
server.xml Tags
El archivo server.xml es un archivo en XML , el cual de no contener una estructura conforme a XML, se indicar al arranque de Tomcat; dicho archivo se encuentra bajo el directorio TOMCAT_HOME/conf Como cualquier otro documento en XML todo contenido entre <!-- --> es considerado un comentario, y por lo tanto cualquier parmetro que se encuentre entre estos caracteres no es utilizado por "Tomcat"; aquellos parmetros que no sean definidos dentro de server.xml son asignados un valor por defecto por Tomcat.
11
<Server>
<Server> es el elemento principal del archivo server.xml y todas las dems secciones deben encontrarse entre estas etiquetas; el atributo port indica el puerto TCP donde se espera la seal de cierre (shutdown) de Tomcat, el cual rara vez es modificado.
12
<GlobalNamingResources>
Anidado dentro de los elementos <GlobalNamingResources> es posible definir recursos JNDI para ser utilizados globalmente en Tomcat. A travs de <Resource> es como define el tipo de recurso JNDI que ser utilizado y mediante <ResourceParams> se especifican los parmetros especficos que tomar el recurso en dicha instancia de Tomcat.
13
<Service>
Esta etiqueta permite configurar Tomcat para diferentes modalidades de ejecucin, en el archivo server.xml "Default" se definen dos modalidades a travs del atributo name; la definicin asignada name="Catalina" es empleada para ejecutar Tomcat individualmente
14
<Connector>
El elemento Connector representa las conexiones (Puertos TCP) que sern abiertas por Tomcat al arranque, a su vez dentro de cada elemento Connector se definen diversos atributos los cuales dan ms detalles acerca de la conexin.
port="8080" pruebas port="80" produccin
15
<Engine>
Los elementos <Engine>, los cuales deben encontrarse anidados dentro de <Service>, representan el mecanismo que atender toda solicitud a Tomcat, esto es, toda solicitud recibida por las definiciones Connectors ser procesada por <Engine>, los atributos de este elemento son los siguientes:
logger: Los elementos Logger le indican a Tomcat hacia donde deben ser enviados los registros "Logs" :
16
<Host>
Los elementos Host permiten definir varios Hosts "Virtuales" para Tomcat, esto es, a travs del elemento <Engine> se define un sitio (localhost) para atender solicitudes, a travs de Host es posible definir diversos sitios "Virtuales", su configuracin es la siguiente:
Context es un elemento utilizado para indicar la ubicacin de las aplicaciones ejecutadas en Tomcat , en su configuracin "Default" estas aplicaciones se encuentran dentro del directorio webapps bajo el directorio raz de Tomcat. Una aplicacin en Tomcat o cualquier Servlet Engine(WebContainer) es un conjunto de "JSP's (Java Server Pages)" y/o "Servlets" agrupados con ciertos parmetros de arranque y seguridad, este conjunto de archivos / aplicacin en todo Servlet Engine es conocido como un WAR (Web-Archive).
17
HTTP
Tipos de peticiones
GET, POST, PUT, DELETE, TRACE, OPTIONS, HEAD Las dos tipos de peticiones ms relevantes en aplicaciones web son GET y POST
Ejemplo de GET
Utilizamos un navegador para acceder a http://localhost:8080/HTTP1-HolaMundo/index.html El navegador abre una conexin TCP al puerto indicado de la mquina localhost (resuelve el nombre por DNS si no lo encuentra en su red) y enva una peticin similar a:
GET /HTTP1-HolaMundo/ndex.html HTTP/1.0 << Otros campos >>
19
20
al servidor del que nos hemos bajado la pgina Caracteres en el valor de un parmetro:
Caracteres ASCII alfanumricos y signos . (punto), - (guin), * (asterisco) y _ (subrayado) se quedan as Espacio en blanco => sustituir por + Resto de caracteres => %xy
Las anteriores sustituciones las tiene que hacer la persona que escribe/genera el fichero Si un par par=val aparece ms de una vez, el parmetro correspondiente es multivaluado (su valor es un vector de valores)
21
Aparecer en el men de Eclipse un submen Tomcat, desde el que podemos iniciar, reiniciar y parar el servidor Tomcat
23
24
25
26
Crear una pequea pgina web prueba.html situndola en el directorio base del proyecto Propiedades del proyecto Recargar el contexto de la aplicacin web creada Iniciar Tomcat Acceder a la pgina desde el navegador http://localhost:8080/HTTP3-Prueba/prueba.html
27
Tecnologas web
Para la creacin de aplicaciones web se pueden seguir varias estrategias o herramientas:
Antes. CGI (Common Gateway Interface): Un programa en lenguaje de propsito general o especfico como C que realiza las funciones de la parte servidora de la aplicacin
Sencillos stos crean un proceso por cada peticin de cliente, por tanto, ineficientes bajo cargas elevadas Lgica de presentacin y de aplicacin mezcladas en los scripts CGI
28
Servlets
Cuando un usuario solicita una pgina HTML, se le enva una copia de esa misma pgina al cliente. esttico Hay ocasiones en las que el usuario solicita datos en tiempo real, como conocer datos de contacto de los clientes de una empresa. dinmico Un servlet permite construir pginas HTML dinmicas. Antes CGI, ahora servlets
Desventajas CGI: Crean un nuevo proceso por cada peticin colapsando el servidor en cargas altas Ventajas Servlets: Los servlets, en cambio, no requieren una nueva ejecucin para cada usuario reutilizando el cdigo y los componentes (multisubprocesos) que el servidor ya tiene cargados en memoria de otras solicitudes.
30
32
Servlets HTTP
El paquete javax.servlet.http define la clase HttpServlet que implementa a su vez la clase general Servlet. HttpServlet es un servlet abstracto que maneja una aplicacin bsica relacionada con el manejo de una peticin http. Incluye los mtodos doGet(), doPost() (equivalentes a las operaciones de http estndar GET/POST), doPut(), doDelete(), doHead(), doTrace() y doOptions(). Todos estos mtodos reciben dos objetos:
Un HttpServletRequest: encapsula la comunicacin, usando el protocolo http, desde el cliente al servidor. Subclase del objeto ServletRequest. Un HttpServletResponse: encapsula la comunicacin, usando el protocolo http, de vuelta desde el servidor al cliente. Subclase del objeto ServletResponse.
33
36
El tipo de datos enviados al cliente es texto/html que ser interpretado en el cliente (navegador)
37
38
39
40
Ejemplo HolaMundo.java
Importar en Eclipse el proyecto Servlet1-HolaMundo Ver el cdigo y el ciclo de vida Cdigo de HolaMundo.java:
C:\java\Servlet1HolaMundo\HolaMundo\WEBINF\src\HolaMundo.java
41
44
46
SingleThreadModel
Normalmente un servlet sirve a varios clientes concurrentemente. Para hacer que el servlet maneje slo a un cliente a la vez ste debe implementar el interface SingleThreadModel Esta puede ser una solucin para aquellos servlets que permiten la comparticin de recursos como bases de datos, y no se quiere complicar el cdigo proporcionando mecanismos de sincronizacin.
La contrapartida es que las peticiones de usuario se harn una a una con el consiguiente retardo en la respuesta.
47
El nombre de una aplicacin web no tiene porque coincidir con el de su fichero .war. El nombre se decide al instalar el fichero .war Estructura de un fichero .war
Directorio WEB-INF/classes
Ficheros .class que conforman la aplicacin web, agrupados en directorios segn su estructura en paquetes
Directorio WEB-INF/lib
Ficheros .jar de libreras que usa la aplicacin
Un fichero .war se puede instalar/desplegar (deployment) en cualquier servidor de aplicaciones web conforme a J2EE
49
WEB-INF/web.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app > <distributable/> <!-- ========== Servlets================ --> <servlet> <servlet-name>FormHTML</servlet-name> <servlet-class>FormHTML</servlet-class> </servlet> ... Resto de servlets de la aplicacion...
51
WEB-INF/web.xml (2)
<!-- ==========Servlet mapping============ --> <servlet-mapping> <servlet-name>FormHTML</servlet-name> <url-pattern>/FormHTML</url-pattern> </servlet-mapping> ... Mappings para el resto de servlets del tutorial ... <!-- ====== Welcome page================= --> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
52
Las URLs que se usan en los ficheros HTML o en las respuestas generadas del ejemplo son de tipo path relativo, y en consecuencia no incluyen http://localhost:8080
Buena idea, permite instalar la aplicacin en otro servidor
53
Por motivos de escalabilidad y de que en HTTP no hay nada especial que indique que un navegador ha dejado de usar la aplicacin web, cada sesin dispone de un timeout (en minutos)
Si transcurre el timeout sin que el navegador acceda a la aplicacin, el servidor destruye la sesin Configurable en web.xml
55
56
57
59
60
61
Manejo de la sesin
Para manejar la sesin
introducir los datos de la sesin en el objeto request:
HttpSession session = request.getSession(true); session.setAttribute(login, login);
62
forward
Nos movemos a otra URL dentro del servidor Se conserva todo lo que haba en la request til para tratar errores en formularios Los servlets de procesamiento insertan el atributo errores (un Map) en la request Los servlets que muestran formularios comprueban si la request incluye el atributo errores
63
Para el resto de situaciones, es mejor usar un sendRedirect, dado que forward no cambia la URL que muestra la caja de dilogo del navegador
64