Cuestionario: Conceptos sobre servidores de aplicaciones.

1. Define ‘Servidor de aplicaciones’.

En informática, 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 aplicación a las máquinas cliente. Un servidor de aplicaciones generalmente gestiona la mayor parte (o la totalidad) de las funciones de lógica de negocio y de acceso a los datos de la aplicación. Los principales beneficios de la aplicación de la tecnología de servidores de aplicación son la centralización y la disminución de la complejidad en el desarrollo de aplicaciones.

2. Define servlet, applet, J2EE, J2SE, JSP, EJB y JDBC

  • servlet: Los servlets son objetos que corren dentro y fuera del contexto de un contenedor de servlets (ej: Tomcat) y extienden su cuidado. La palabra servlet deriva de otra anterior, applet, que se refería a pequeños programas que se ejecutan en el contexto de un navegador web. Por contraposición. El uso más común de los servlets es generar páginas web de forma dinámica a partir de los parámetros de la petición que envíe el navegador web.
  • applet: Un applet es un componente de una aplicación que se ejecuta en el contexto de otro programa, por ejemplo en un navegador web. El applet debe ejecutarse en un contenedor, que le proporciona un programa anfitrión, mediante un plugin, o en aplicaciones como teléfonos móviles que soportan el modelo de programación por “applets”. A diferencia de un programa, un applet no puede ejecutarse de manera independiente, ofrece información gráfica y a veces interactúa con el usuario, típicamente carece de sesión y tiene privilegios de seguridad restringidos. Un applet normalmente lleva al cabo una función muy específica que carece de uso independiente. El término fue introducido en AppleScript en 1993.
  • J2EE: 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 considerada 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.
  • J2SE: Java Platform, Standard Edition o Java SE (conocido anteriormente hasta la versión 5.0 como Plataforma Java 2, Standard Edition o J2SE), es una colección de APIs del lenguaje de programación Java útiles para muchos programas de la Plataforma Java. La Plataforma Java 2, Enterprise Edition incluye todas las clases en el Java SE, además de algunas de las cuales son útiles para programas que se ejecutan en servidores sobre workstations. Comenzando con la versión J2SE 1.4 (Merlin), la plataforma Java SE ha sido desarrollada bajo la supervisión del Java Community Process. JSR 59 la especificación para J2SE 1.4 y JSR 176 especificó J2SE 5.0 (Tiger). En 2006, Java SE 6 (Mustang) está siendo desarrollada bajo el JSR 270.
  • JSP: JavaServer Pages, es una tecnología que ayuda a los desarrolladores de software a crear páginas web dinámicas basadas en HTML, XML entre otros tipos de documentos. JSP es similar a PHP pero usa el lenguaje de programación Java.
  • EJB: Los Enterprise JavaBeans (también conocidos por sus siglas EJB) son una de las 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:
  1. Comunicación remota utilizando CORBA
  2. Transacciones
  3. Control de la concurrencia
  4. Eventos utilizando JMS (Java messaging service)
  5. Servicios de nombres y de directorio
  6. Seguridad
  7. 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.

  • JDBC: Java Database Connectivity, más conocida por sus siglas JDBC, es una API que permite la ejecución de operaciones sobre bases de datos desde el lenguaje de programación Java, independientemente del sistema operativo donde se ejecute o de la base de datos a la cual se accede, utilizando el dialecto SQL del modelo de base de datos que se utilice.

3. Diferencias entre CGI y Servlet.

La tecnología Servlet proporciona las mismas ventajas del lenguaje Java en cuanto a portabilidad (“write once, run anywhere”) y seguridad, ya que un Servlet es una clase de Java igual que cualquier otra, y por tanto tiene en ese sentido todas las características del lenguaje, Esto es algo de lo que carecen los programas CGI, ya que hay que compilarlos para el sistema operativo del servidor y no disponen en muchos casos de técnicas de comprobación dinámica de errores en tiempo de ejecución.

Otra de las principales ventajas de los Servlets con respecto a los programas CGI, es la del rendimiento y esto a pesar de que java no es un lenguaje particularmente rápido, Mientras que es necesario cargar los programas CGI tantas veces como peticiones del servicio existan por parte de los clientes, los Servlets, una vez que son llamados por primera vez, quedan activos en la memoria del servidor hasta que el programa que controla el servidor los desactiva. De esta manera se minimiza en gran medida el tiempo de respuesta.

Además, los Servlets se benefician de la gran capacidad de Java para ejecutar métodos en ordenadores remotos, para conectar bases de datos, para la seguridad de la información, ect. Se podría decir que las clases estándar de Java ofrecen resueltos muchos problemas que con otros lenguajes tiene que resolver el programador.

4. Explica los distintos roles definidos en Tomcat.

  • manager-gui. Da acceso a las páginas de estado y a la consola web de tomcat. Las cuentas con este nivel de acceso pueden ejecutar/detener aplicaciones, ver estados, generar diagnósticos, etc.
  • manager-script. Ofrece todas las funcionalidades que el manager-gui pero usando una interfaz texto. Los scripts pueden hacer lo que el usuario con un cliente web en la consola de tomcat.
  • manager-jmx da acceso al jmxproxy, el cual monitoriza herramientas y scripts, que administradoes y desarrolladores podrían encontrar útil. También tiene acceso a las páginas de estado.
  • manager-status da a los usuarios acceso a las estadísiticas. Serán capaces de acceder a los enlaces de estado en un índice principal de tomcat pero recivirá un error 403.

5. ¿Qué rol se utiliza para la ‘Aplication Manager’ de Tomcat?

El admin-gui y el admin-script.

6. Nombra y describe los principales directorios de la estructura de directorios de Tomcat.

  • bin: Contiene los scripts de arrancar/parar
  • conf: Contiene varios ficheros de configuración incluyendo server.xml (el fichero de configuración principal de Tomcat) y web.xml que configura los valores por defecto para las distintas aplicaciones desplegadas en Tomcat.
  • doc: Contiene varia documentación sobre Tomcat (Este manual, en Inglés).
  • lib: Contiene varios ficheros jar que son utilizados por Tomcat. Sobre UNIX, cualquier fichero de este directorio se añade al classpath de Tomcat.
  • logs: Aquí es donde Tomcat sitúa los ficheros de diario.
  • src: Los ficheros fuentes del API Servlet. ¡No te excites, todavía! Estoa son sólo los interfaces vacíos y las clases abstractas que debería implementar cualquier contenedor de servlets.