You are on page 1of 14

Docente: Eduardo A.

Klagges Sazo

CUESTIONARIO 1 JAVA J2EE

Para responder este cuestionario use los documentos entregados por su profesor
en la semana 1

1. Que es Java EE
Es una plataforma de programacin para desarrollar y ejecutar software de
aplicaciones empresariales con arquitectura de N capas distribuida,
basndose ampliamente en componentes de software seguros, modulares,
extensibles y reutilizables ejecutndose sobre un servidor de aplicaciones.


2. Que especificaciones de API, incluye Java EE
Java EE incluye varias especificaciones de API, tales como JDBC, RMI, e- mail,
JMS, Servicios Web, XML, etc y define cmo coordinarlos. Java EE tambin
configura algunas especificaciones nicas para Java EE para componentes.
Estas incluyen Enterprise JavaBeans, Servlets, Portlets (siguiendo la
especificacin de Portlets Java), Java Server Pages (jsp) y varias tecnologas
de servicios web (Web Services).

3. Que permiten crear al desarrollador estas especificaciones y que otros
beneficios trae consigo
Permiten al desarrollador crear una Aplicacin de Empresa portable entre
plataformas y escalable, a la vez que integrable con tecnologas anteriores.
Otros beneficios aadidos son, por ejemplo, que el servidor de aplicaciones
puede manejar transacciones, la seguridad, escalabilidad, concurrencia y
gestin de los componentes desplegados, significando que los
desarrolladores pueden concentrarse ms en la lgica de negocio de los
componentes en lugar de en tareas de mantenimiento de bajo nivel.

4. Indique y detalle cmo se estructura la arquitectura multicapa de Java EE
(disee un grafico que lo explique)

Docente: Eduardo A. Klagges Sazo

5. Cules son las razones que empujan a la creacin de la plataforma J2EE
Programacin eficiente. Para conseguir productividad es importante
que los equipos de desarrollo tengan una forma estndar de construir
mltiples aplicaciones en diversas capas (cliente, servidor web, etc.).
En cada capa necesitaremos diversas herramientas, por ejemplo en la
capa cliente tenemos applets, aplicaciones Java, etc. En la capa web
tenemos servlets, pginas JSP, etc. Con JEE tenemos una tecnologa
estndar, un nico modelo de aplicaciones, que incluye diversas
herramientas; en contraposicin al desarrollo tradicional con HTML,
Javascript, CGI, servidor web, etc. Que implicaba numerosos modelos
para la creacin de contenidos dinmicos, con los lgicos
inconvenientes para la integracin.
Extensibilidad frente a la demanda del negocio. En un contexto
de crecimiento de nmero de usuarios es precisa la gestin de
recursos, como conexiones a bases de datos, transacciones o
balanceo de carga. Adems los equipos de desarrollo deben aplicar
un estndar que les permita abstraerse de la implementacin del
servidor, con aplicaciones que puedan ejecutarse en mltiples
servidores, desde un simple servidor hasta una arquitectura de alta
disponibilidad y balanceo de carga entre diversas mquinas.
Integracin. Los equipos de ingeniera precisan estndares que
favorezcan la integracin entre diversas capas de software.

6. Nombre tres IDE que se pueden utilizar en la plataforma J2EE
NetBeans IDE, un IDE basado en Java
La plataforma Eclipse, un IDE basado en Java
Jedit, de cdigo abierto, un IDE basado en Java
7. Nombre tres Framework que se pueden utilizar en esta plataforma
JUnit, un framework para Pruebas de unidad automatizadas
Struts2, un Framework para desarrollar aplicaciones web EE
conforme al modelo MVC
Spring, un Framework para desarrollar aplicaciones web EE conforme
al modelo MVC


Docente: Eduardo A. Klagges Sazo

8. Nombre dos contenedores WEB Servlet/JSP
Apache Software Foundation Apache Tomcat, un contenedor
web de Servlet/JSP.
Jetty, un servidor web y un contenedor web Servlet/JSP.

9. Nombre dos servidores de aplicaciones de la plataforma J2EE
JBoss, un servidor de aplicaciones de Red Hat
Glass Fish, un servidor de aplicaciones desarrollado por Su

10. Defina que es un servidor de aplicaciones
Se denomina servidor de aplicaciones a un servidor en una red de
computadores que ejecuta ciertas aplicaciones.
Usualmente se trata de un dispositivo de software que proporciona
servicios de aplicacin a las computadoras cliente. Un servidor de
aplicaciones generalmente gestiona la mayor parte (o la totalidad) de las
funciones de lgica de negocio y de acceso a los datos de la aplicacin. Los
principales beneficios de la aplicacin de la tecnologa de servidores de
aplicacin son la centralizacin y la disminucin de la complejidad en el
desarrollo de aplicaciones. Si bien el trmino es aplicable a todas las
plataformas de software, hoy en da el trmino servidor de aplicaciones se
ha convertido en sinnimo de la plataforma J2EE de Sun Microsystems.

11. Nombre los servidores de aplicaciones Java EE5 y Java EE6 certificados
GlassFish, un servidor de aplicaciones de cdigo abierto de Sun
JBoss, un servidor de aplicaciones de cdigo abierto de JBoss Inc.
(adquirida por Red Hat en Abril del 2006)
OpenEJB, Open Source Enterprise Java Beans (EJB) Container System
and Server
Servidor de Aplicaciones SAP NetWeaver, Java EE 5 Edition de SAP
Geronimo, un servidor de aplicaciones de cdigo abierto de Apache
JOnAS, un servidor de aplicaciones de cdigo abierto de OW2
Consortium - ObjectWeb
Sun Java System Web Server
Sun Java System Application Server
Docente: Eduardo A. Klagges Sazo

IBM WebSphere Application Server (WAS), un servidor de
aplicaciones altamente escalable, completamente conforme a J2EE de
IBM
Servidor de Aplicaciones WebLogic de BEA Systems
12. Defina que son los Enterprise java Beans
Son una de las API que forman parte del estndar de construccin de
aplicaciones empresariales J2EE (ahora JEE 5.0) de Oracle Corporation
(inicialmente desarrollado por Sun Microsystems)

13. Indique que permiten hacer los EJB
Comunicacin remota utilizando CORBA
Transacciones
Control de la concurrencia
Eventos utilizando JMS (Java messaging service)
Servicios de nombres y de directorio
Seguridad
14. Cules son los subsistemas de la arquitectura de un servidor de aplicaciones
Servidor HTTP (tambin denominado servidor Web o servidor de
pginas). Un ejemplo, el servidor Apache.
Contenedor de aplicaciones, contenedor Servlet/JSP o contenedor
Web. Un ejemplo, Tomcat (que incluye el servicio anterior sobre
pginas)
Contenedor Enterprise Java Beans, que contiene aplicativos Java
de interaccin con bases de datos o sistemas empresariales. Un
ejemplo es JBoss que contiene a los anteriores (servidor de pginas
web y contenedor de aplicaciones web).

15. Qu es el protocolo HTTP
Es un protocolo de aplicacin, generalmente implementado sobre TCP/IP.
Es un protocolo sin estado basado en solicitudes (request) y respuestas
(response), que usa por defecto el puerto 8080:
"Basado en peticiones y respuestas": significa que el cliente (por ejemplo un
navegador) inicia siempre la conexin (por ejemplo, para pedir una pgina).
No hay posibilidad de que el servidor realice una llamada de respuesta al
Docente: Eduardo A. Klagges Sazo

cliente (retro llamada). El servidor ofrece la respuesta (la pgina) y cierra la
conexin. En la siguiente peticin del cliente se abre una conexin y el ciclo
estado": el servidor cierra la conexin una vez realizada la respuesta. No se
mantienen los datos asociados a la conexin. Ms adelante veremos que
hay una forma de persistencia de datos asociada a la "sesin".
16. Que ocurre cuando un navegador invoca una aplicacin (haga un diagrama
que muestre la secuencia)
El cliente (el navegador) no invoca directamente el contenedor de
aplicaciones, sino que llama al servidor web por medio de HTTP. El servidor
web se interpone en la solicitud o invocacin; siendo el servidor web el
responsable de trasladar la solicitud al contenedor de aplicaciones.
La solicitud llega el servidor de pginas web, que tiene que descifrar si el
recurso solicitado es un recurso esttico o una aplicacin. Si es una
aplicacin delega la solicitud en el contenedor web (contenedor
Servlet/JSP).
El contenedor web gestiona la localizacin y ejecucin de Servlets y JSP,
que no son ms que pequeos programas. El contenedor web o contenedor
Servlet/JSP recibe la solicitud.
Su mquina Java (JVM) invoca al objeto Servlet/JSP, por tanto nos
encontramos ante un tipo de aplicaciones que se ejecutan en el servidor, no
en el cliente. No conviene olvidar que un Servlet o un JSP no es ms que una
clase Java.
Lo ms interesante en este sentido es que:
La JVM (generalmente) no crea una instancia de la clase por cada
solicitud, sino que con una nica instancia de un Servlet/JSP se da
servicio a mltiples solicitudes HTTP. Esto hace que el consumo de
recursos sea pequeo en comparacin con otras opciones, como el
uso de CGIs, en donde cada solicitud se resuelve en un proceso.
Para cada solicitud se genera un hilo (thread) para resolverla (pero
con una nica instancia de la clase, como hemos dicho).




Docente: Eduardo A. Klagges Sazo

17. Qu proporcionan los contenedores J2EE
Los contenedores J2EE proporcionan acceso a los servicios subyacentes del
entorno del Servidor J2EE mediante contenedores para diferentes tipos de
componentes.
Tradicionalmente, los desarrolladores de aplicaciones tenan que escribir
cdigo para el manejo de transacciones, manejo del estado, multi-hilos,
almacenamiento de recursos, etc. Ahora el contenedor J2EE proporciona
estos servicios permitiendo que te puedas concentrar en resolver los
problemas de negocio.

18. Defina que son los contenedores J2EE
Los contenedores son el interface entre un componente y la funcionalidad
de bajo nivel especfica de la plataforma que soporta el componente. Por
ejemplo, antes de poder ejecutar un componente Web, un enterprise java
bean (EJB) o un componente de una aplicacin cliente, debe ensamblarse
dentro de una aplicacin J2EE y desplegarse dentro de su contenedor.
El proceso de ensamble implica especificar las configuraciones del servidor
para cada componente de la aplicacin J2EE y para la propia aplicacin J2EE.
Estas configuraciones personalizan el soporte subyacente proporcionado por
el servidor J2EE, que incluye servicios como JNI, JNDI, seguridad, control de
transacciones, etc
El servidor J2EE proporciona contenedores para Enterprise JavaBeans (EJB)
y para componentes Web. El contenedor EJB maneja la ejecucin de los
beans enterprise de las aplicaciones J2EE, mientras que el contenedor Web
maneja la ejecucin de las pginas JSP y los componentes servlets de la
aplicacin J2EE.
Otros contenedores distintos a estos son el contenedor de aplicaciones
clientes y el contenedor de applets, que no son parte del servidor J2EE
porque residen en la mquina del cliente.
Un contenedor de aplicaciones cliente maneja la ejecucin de los
componentes de la aplicacin cliente mientras que un contenedor de
Applets maneja la ejecucin de los applets. Normalmente estn en el JRE
(Java Runtime Environment) y el navegador Web compatible con Java,
respectivamente.

Docente: Eduardo A. Klagges Sazo

19. Defina que son los servlets
Los servlets son objetos que corren dentro del contexto de un contenedor
de servlets (ej: Tomcat) y extienden su funcionalidad. Tambin podran
correr dentro de un servidor de aplicaciones (ej: OC4J Oracle) que adems
de contenedor para servlet tendr contenedor para objetos ms avanzados
como son los EJB (Tomcat slo es un contenedor de servlets).
La palabra servlet deriva de otra anterior, applet, que se refera a pequeos
programas escritos en Java que se ejecutan en el contexto de un
navegador web. Por contraposicin, un servlet es un programa que se
ejecuta en un servidor.
El uso ms comn de los servlets es generar pginas web de forma dinmica
a partir de los parmetros de la peticin que enve el navegador web.

20. Nombre las tecnologas antiguas que existan antes de los servlets
CGI
NSAPI
ISAPI, etc

21. Defina que son los Wars
Los WARs simplemente son archivos Java de una aplicacin Web con una
extensin diferente para diferenciarlos de los comnmente usados JARs.

22. Que debera almacenarse en el directorio WEB-INF
Todos los ficheros privados, como los ficheros class de los servlets

23. Explique en qu consisten las peticiones HTTP GET y POST
Peticin GET: El usuario ingresa la informacin que es anexada hacia
una URL en un query string. Solo se puede enviar un limitado
limitada cantidad de dato:
/servlet/VerCurso?FirstName=Andres&LastName=Guzman
Peticin POST: El usuario ingresa la informacin que es enviada como
datos en la peticin HTTP post (no es anexada a la URL). Puede enviar
un ilimitada cantidad de informacin, principalmente es usado para
procesar los formularios.
Docente: Eduardo A. Klagges Sazo


24. Cules son los mtodos importantes de la interface javax.servlet.Servlet y
para qu sirven
init(): Define cualquier cdigo de inicializacin que debera ejecutarse
cuando se carga el servlet en memoria.
service(): El mtodo principal, llamado cuando el servlet recibe
una solicitud de servicio. Define un paquete de lgica de
procesamiento proporcionado por el servlet.
destroy(): Define cualquier cdigo de limpieza requerido antes de
eliminar el servlet de la memoria.

25. Dibuje un esquema o mapa conceptual que explique el funcionamiento de
todos los mtodos importantes





Docente: Eduardo A. Klagges Sazo








26. Cuando escribamos nuestros Servlets que deberamos hacer
Despus de la carga e instanciacin el servlet container debe inicializar el
servlet antes de que pueda atender peticiones de los clientes. En esta
etapa puede leer la configuracin, inicializar recursos costosos y realizar
otras actividades.
El servlet se inicializa con una llamada a su mtodo init con un objeto que
implementa la interfaz ServletConfig. Este objeto le permite al servlet
acceder a los parmetros de la informacin de configuracin del servlet
container. El objeto de configuracin le permite al servlet acceder a un
objeto que implementa la interfaz ServletContext que describe el entorno
de ejecucin del servlet.
Durante la inicializacin se pueden producir errores y en ese caso se lanzar
una excepcin de la clase UnavailableException o ServletException. En este
caso la instancia del servlet no se pondr en servicio y se eliminar del
servlet container (sin llamar al mtodo destroy). Una vez que se ha
eliminado la instancia errnea se puede instanciar otra en cualquier
momento, excepto en el caso de que la instancia produjese una excepcin
de la clase UnavailableException indicando un tiempo mnimo; en este caso
se ha de esperar ese tiempo mnimo para volver a instanciar el servlet.









Docente: Eduardo A. Klagges Sazo

27. De que es responsable el container server
El servlet container puede enviar mltiples peticiones de mltiples clientes
por medio del mtodo service a la vez. Esto significa que el programador ha
de programar el servlet adecuadamente para soportar la concurrencia.
Si no se quiere que el servlet tenga esta caracterstica (la de multihilo), se
puede hacer que el servlet extienda la interfaz SingleThreadModel. As se
garantiza que slo se va a atender una peticin a la vez (slo se est
ejecutando un mtodo service a la vez). Para soportar este modelo el
container debe serializar las peticiones que llegan a un servlet o tener un
conjunto de servlets para atender las peticiones. Si el servlet es parte de una
aplicacin distribuida el container debe mantener un conjunto de instancias
del servlet en cada mquina virtual java en la que est la aplicacin.
Si el programador define un mtodo service (o mtodos como el doGet o
doPost que ejecutan el mtodo service) con la palabra clave syncronized, el
container debe serializar las peticiones al servlet.

28. Cules son las clases de excepciones que participan cuando se est
realizando un servicio debido a una peticin del cliente.
Mientras se est realizando el servicio requerido por una peticin se pueden
producir excepciones de dos clases: ServletException o
UnavailableException.
Una ServletException indica que se produjo una excepcin durante la
ejecucin del servicio y el container ha de rechazar la peticin.
Si la que se produce es una excepcin de la clase UnavailableException
indica que no se puede atender la peticin de forma temporal o
permanente.
Si la inhabilitacin es permanente el container debe eliminar el servlet
llamando a su mtodo destroy y eliminando la instancia. Si se inhabilita de
forma temporal el container no enva peticiones al servlet durante el tiempo
de inhabilitacin, devolviendo a los clientes un mensaje indicndolo. Otra
opcin es no hacer distincin entre el tipo temporal y permanente y
considerarlos todos como permanentes.


29. Cules son los mtodos que permiten operar con los atributos de la interfaz
Docente: Eduardo A. Klagges Sazo

setAttribute, permite almacenar un objeto con un nombre.
getAttribute, obtiene un objeto a partir del nombre.
getAttributeNames, obtiene los nombres de los objetos.
removeAttribute, borra un atributo.


30. Que permite acceder la interfaz ServletContext
Permite acceder a recursos como ficheros HTML, GIF y JPEG mediante los
mtodos getResource y getResourceAsStream. Estos mtodos no
permiten obtener recursos dinmicos como JSP.

31. Para qu sirve la clase HttpServletRequest
Para encapsular la informacin de las peticiones de los clientes se define una
clase cuyas instancias representan las peticiones.

32. Cules son los mtodos en la clase ServletRequest que atienden las
peticiones de la capa cliente
getParameter, dado un nombre devuelve el primer valor de su array
de valores.
getParameterNames, devuelve todos los nombres de los parmetros.
getParameterValues, dado un nombre devuelve un array de strings
con todos los valores asociados.

33. Defina que son los atributos
Son objetos asociados a una peticin. Son creados por el container para
expresar informacin que de otra manera no podra expresar o son creados
por un servlet para comunicar informacin a otro servlet.

34. Cules son los mtodos que tienen relacin directa con los atributos
getAttribute
getAttributeNames
setAttribute

35. Qu permite el mtodo getCookies
Docente: Eduardo A. Klagges Sazo

En la interfaz HttpServletRequest tenemos un mtodo que permite obtener
un array con las cookies de la peticin.

36. Qu permite el mtodo getSession
GetSession(boolean crear), nos devuelve un objeto de tipo HttpSession y
cuyo parmetro indica si debera crearse una sesin o no para ese usuario
en caso de que no exista ya.



37. Para qu sirve la clase ServletResponse
El objeto respuesta encapsula toda la informacin que se le devuelve al
cliente. Este objeto es de una clase que implementa la interfaz
ServletResponse.
38. Cules son los mtodos en la interfaz ServletResponse asociados al Buffering
getBufferSize, obtiene el tamao del buffer. Si an no se uso el buffer
devuelve 0.
setBufferSize, este mtodo establece el tamao del buffer.
isCommited, con este mtodo se sabe si lo que hay en el buffer ha
sido enviado al cliente o no.
reset, este mtodo limpia el buffer sin que los datos que contenga se
le en
contenido del buffer se enve al cliente.
39. Para qu se usa el Buffering
El buffering se usa cuando el servlet usa un objeto ServletOutputStream o
un Writer para realizar las operaciones de escritura.



40. Cules son los mtodos en la interfaz ServletResponse asociados a las
cabeceras
Docente: Eduardo A. Klagges Sazo

setHeader, este mtodo establece una cabecera dado un nombre y
un valor. Si ya existe una cabecera con ese nombre se reemplazan los
valores por los nuevos.
addHeader, este mtodo aade un valor a una cabecera. Si el nombre
de la cabecera an no existe se crea.

41. Qu contienen las cabeceras
Las cabeceras contienen datos que son nmeros o fechas, siendo los
mtodos para operar con ellos, los siguientes: setIntHeader, setDateHeader,
addInteHeader y addDateHeader.

42. Cules son los eventos que indican que el servlet ha satisfecho la respuesta
del cliente
La terminacin del servicio del servlet.
Cuando el contenido escrito en el objeto respuesta es el
especificado mediante el mtodo setContentLength.
Cuando se llama al mtodo sendError.
Cuando se llama al mtodo sendRedirect.
Cuando se finaliza el objeto respuesta se enva el contenido del buffer
al cliente.

43. Que se debe hacer para que un cliente se una a una sesin
Reescritura de la URL. Es lo que se utiliza cuando un cliente no acepta
cookies. Este mtodo consiste en aadir informacin al path que puede ser
interpretada por el container para asociar la peticin a una sesin. La
identificacin de la sesin ha de ser codificada en el string de la URL como
adems todos los containers deben soportarlo. El container enva una
cookie al cliente y este le devuelve la cookie en cada peticin asociando la
Sesiones SSL. Se usa con el protocolo HTTPS, que a su vez utiliza tecnologa
SSL (Secure Sockets Layer) de encriptado. Este protocolo tiene un
mecanismo que permite identificar las peticiones de un cliente con una
sesin. A partir de este mecanismo el container puede obtener informacin
para asociar la peticin a una sesin.
Docente: Eduardo A. Klagges Sazo


44. En qu caso se considera nueva una sesin
El cliente no conoce la sesin.
El cliente no se une a la sesin, por lo que el container no puede
asociar esta peticin con una anterior.

45. Con que mtodo se puede determinar la fecha del ltimo acceso a la sesin
antes de la peticin actual
Por medio del mtodo getLastAccessedTime de la interfaz HttpSession se
puede determinar la fecha del ltimo acceso a la sesin antes de la peticin
actual. Una sesin se considera accedida cuando se atiende una peticin que
es parte de la sesin.