4.8. Configurar el Entorno de la Aplicación

Las aplicaciones Vaadin se despliegan como aplicaciones web Java. Una "aplicación web" Java puede contener un número de servlets, de los cuales cada uno puede ser una aplicación Vaadin o algún otro servlet, y recursos estáticos como archivos HTML. Dicha aplicación web es normalmente empaquetada como un archivo WAR (Web application ARchive), el cual se puede desplegar en un servidor de aplicaciones Java (o un contenedor de servlets para ser exactos).

Para ver un tutorial detallado sobre cómo se empaquetan las aplicaciones web, por favor, refiérase a cualquier libro de Java que trate de Java Servlets. Sun tiene una excelente referencia en linea en http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WCC3.html.

Recuerde que, en el lenguaje Servlet Java, una "aplicación web" significa un conjunto de servlets Java o portlets, páginas HTML y JSP estáticas, y otros recursos que componen una aplicación. Una aplicación web Java es típicamente envasada como un paquete WAR para ser desplegado. Por otro lado, las aplicaciones Vaadin, se ejecutan como servlets dentro de esa aplicación web Java. Existe también otros tipos de aplicaciones web. Para evitar confusión con el significado general de "aplicación web", en este libro a menudo nos referiremos a la aplicación web Java como "WAR".

4.8.1 Crear un WAR Desplegable en Eclipse

Para desplegar una aplicación en un servidor web, necesita crear un paquete WAR. Aquí proporcionamos las instrucciones para Eclipse.
  1. Seleccione File → Export y luego Web → WAR File. O, en el Project Explorer haga clic derecho en el proyecto y seleccione Web → WAR File.
  2. En Web project seleccione el proyecto a exportar. En Destination Ingrese el nombre de archivo (.war).
  3. Realice cualquier otros ajustes en el cuadro de diálogo y haga clic en Finish.
4.8.2 Contenido de una Aplicacione Web

Los siguientes archivos son necesarios en una aplicación web a fin de ejecutarlo.

Organización de una aplicación web
  • WEB-INF/web.xml
    Este es el descriptor de aplicaciones web estándar que define cómo se organiza la aplicación. Puede referirse a cualquier libro de Java sobre el contenido de este archivo. También vea un ejemplo en el Ejemplo 4.1, "web.xml".

    WEB-INF/lib/vaadin-6.x.x.jar
    Esta es la librería Vaadin. Está incluida en el paquete del producto en el directorio lib.

    Sus clases de la aplicación
    Debe incluir sus clases de la aplicación, ya sea en un archivo JAR en WEB-INF/lib o como clases en WEB-INF/classes

    Sus archivos propios de tema (OPCIONAL)
    Si la aplicación utiliza un tema en especial (apariencia), debe incluirlo en el directorio VAADIN/themes/nombretema.

    Conjunto de Widget (OPCIONAL)
    Si su aplicación utiliza un conjunto de proyectos widget específicos, deben ser compilados en el directorio VAADIN/widgetset/.
4.8.3 El Descriptor de Despliegue web.xml

El descriptor de despliegue es un archivo XML con el nombre de web.xml en el directorio WEB-INF de una aplicación web. Se trata de un componente estándar en Java EE que describe cómo una aplicación web debe ser desplegada. La estructura del descriptor de despliegue se ilustra en el siguiente ejemplo. Sólo tiene que desplegar aplicaciones como servlets implementado por el contenedor de la clase especial com.vaadin.terminal.gwt.server.ApplicationServlet. La clase de la aplicación actual se especifica proporcionando el parámetro application con el nombre de la clase específica de la aplicación para el servlet. El servlet es entonces conectado a una URL de una manera estándar para Servlets Java.

Ejemplo 4.1. web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app
  id="WebApp_ID" version="2.4"
  xmlns="http://java.sun.com/xml/ns/j2ee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <servlet>
    <servlet-name>miservlet</servlet-name>
    <servlet-class>
        com.vaadin.terminal.gwt.server.ApplicationServlet
    </servlet-class>
    <init-param>
      <param-name>application</param-name>
      <param-value>MiClaseAplicacion</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>miservlet</servlet-name>
    <url-pattern>/*</url-pattern>
 </servlet-mapping>
</web-app>

El descriptor define un servlet con el nombre de miservlet. La clase del servlet, com.vaadin.terminal.gwt.server.ApplicationServlet, es proporcionada por el framework Vaadin y debe ser el mismo para todos los proyectos Vaadin. El servlet toma el nombre de la clase Calc de la clase de la aplicación del usuario como parámetro, incluyendo la ruta completa del paquete a la clase. Si la clase está en el paquete por defecto, la ruta del paquete obviamente no es utilizada.

url-pattern es definida arriba como /*. Esto coincide con cualquier URL en el contexto del proyecto. Hemos definido anteriormente el contexto del proyecto como miproyecto por lo que la URL de la aplicación será http://localhost:8080/miproyecto/. Si el proyecto fuese a tener varias aplicaciones o servlets, tendrían que tener diferentes nombres para distinguirlos. Por ejemplo, url-pattern /miapp/* coincidiría con una URL como http://localhost:8080/miproyecto/miapp/. Observe que la barra y el asterisco deben ser incluidos al final del patrón.

Observe también que si el patrón de la URL es distinta de la raíz /* (por ejemplo /miapp/*), también tendrá que hacer un mapeo de servlet a /VAADIN/* (a menos que lo sirva estáticamente como se indica a continuación). Por ejemplo:

    ...
    <servlet-mapping>
        <servlet-name>myservlet</servlet-name>
        <url-pattern>/myurl/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>myservlet</servlet-name>
        <url-pattern>/VAADIN/*</url-pattern>
    </servlet-mapping>

Si tiene varios servlets, debe especificar sólo un mapeo a /VAADIN/*. No importa a que servlet mapee el patrón, siempre y cuando se trate de un servlet Vaadin.

No tiene que proporcionar el anterior mapeo /VAADIN/* si sirve tanto en el conjunto de widgets como en los temas estáticos (personalizado y por defecto) en el directorio WebContent/VAADIN/. El mapeo permite simplemente servirlos dinámicamente desde el JAR de Vaadin. Se recomienda servirlos estáticamente para entornos de producción, ya que es mucho más rápido. Si va a servir el contenido dentro de la misma aplicación web, no puede tener el patrón raíz /* para el servlet Vaadin, ya que entonces todas las solicitudes se mapearían al servlet.

Parámetros del Descriptor de Despliegue
El descriptor de despliegue puede tener muchos parámetros y opciones que controlan la ejecución de un servlet. Puede encontrar una documentación completa del descriptor de despliegue en la Especificación de Servlet Java en http://java.sun.com/products/servlet/.

Por defecto, las aplicaciones Vaadin se ejecutan en modo de depuracion, el cual debería ser utilizado durante el desarrollo. Esto permite varias características de depuración. Para utilizar producción, debe poner en el web.xml el siguiente parámetro:

<context-param>
 <param-name>productionMode</param-name>
 <param-value>true</param-value>
 <description>Vaadin production mode</description>
</context-param>

El parámetro y los modos de depuración y producción se describen en detalle en la Sección 12.4, "Modo de Depuracion y Producción".

Una opción que a menudo es necesaria es el tiempo de espera de sesión. Diferentes contenedores de servlet utilizan valores predeterminados para diferentes tiempos de espera, como 30 minutos para Apache Tomcat. Puede configurar el tiempo de espera con:

<session-config>
    <session-timeout>30</session-timeout>
</session-config>

Después de que el tiempo de espera haya caducado, será llamado el método close() de la clase Application. Debe implementarlo si desea controlar situaciones de tiempo de espera.



Anterior
4.7. Controlar Errores
Siguiente
Capítulo 5. Componentes de Interfase de Usuario

No hay comentarios.:

Publicar un comentario