martes, 11 de octubre de 2011

Tutorial: Tomcat7 + Struts2 + VIM "à la" sysadmin

  1. Nos bajamos las últimas versiones de Tomcat y de Struts. Para este tutorial suponemos que Tomcat está instalado y arrancado, de forma que podemos desplegar las aplicaciones en la URL /manager (esa parte de la complejidad es para nosotros transparente ya que la gestiona Tomcat).
  2. Creamos la estructura de directorios siguiente (los ficheros los iremos creando más adelante):
  3. +-webapp_template/
      | make.sh
      +-versions/
      +-src/
        | index.jsp
        +-jsps/
        | | HelloWorld.jsp
        +-WEB-INF/
          | web.xml
          | struts.xml
          +-lib/
          | | [librerías.jar, ver más adelante]
          +-classes/
            | [ficheros .java dentro de su paquete]
  4. Grabamos las últimas versiones de las siguientes librerías (todas son o de Struts o de se pueden encontrar en la web de Apache) en el directorio lib, que es donde va a buscar los .jar el servidor Tomcat. Las librerías son:
    • struts2-core
    • xwork-core
    • ognl
    • freemarker
    • commons-fileupload
    • commons-io
    • commons-lang
    • commons-logging
    • javassist
  5. El script en bash make.sh tiene el siguiente contenido (este realmente es el paso más "sysadmin"):
  6. ----------- make.sh ------------------------------------
    #!/bin/bash
    TIMESTAMP=$( date "+%Y%m%d%H%M%S" )
    RUTA_DIR_ACTUAL=$( dirname `pwd` )
    NOMB_DIR_ACTUAL=$( basename `pwd` )
    HOME_APP="`pwd`"
    ROOT_LIB="$HOME_APP/src/WEB-INF/lib"
    LIBRERIAS="."
    for i in $( ls -1 $ROOT_LIB ); do
      LIBRERIAS=$LIBRERIAS:$ROOT_LIB/$i
    done
    #echo LIBRERIAS=$LIBRERIAS
    rm -rf compiled
    cp -a src compiled
    cd compiled
    find . -name "*.java" -exec javac -verbose -classpath $LIBRERIAS {} \;
    find . -name "*~" -exec rm -v {} \;
    find . -name "#*#" -exec rm -v {} \;
    find . -name "*.java" -exec rm -v {} \;
    cp WEB-INF/struts.xml WEB-INF/classes
    zip -r ../${NOMB_DIR_ACTUAL}.war *
    cd ..
    cp ${NOMB_DIR_ACTUAL}.war versions/${NOMB_DIR_ACTUAL}_${TIMESTAMP}.war
    ---------------------------------------------------------
  7. Creamos nuestra vista (jsps/HelloWorld.jsp) y nuestro controlador (WEB-INF/classes/template/HelloWord.java) con el siguiente código:
  8. ----------- HelloWorld.jsp ------------------------------
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %>
    <p><s:property value="greetings" /></p>
    ---------------------------------------------------------
    ----------- HelloWorld.java -----------------------------
    package template;

    import com.opensymphony.xwork2.ActionSupport;

    public class HelloWorld extends ActionSupport {

      String greetings = null;

      public String execute() throws Exception {
        setGreetings("Hello World");
        return SUCCESS;
      }

      public String getGreetings() {
        return greetings;
      }

      public void setGreetings(String greetings) {
        this.greetings = greetings;
      }

    }
    ---------------------------------------------------------
  9. Lo siguiente es crear los ficheros de configuración de Tomcat (WEB-INF/web.xml) y de Struts (WEB-INF/struts.xml):
  10. ----------- web.xml -------------------------------------
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

      <display-name>hello</display-name>

      <filter>
        <filter-name>struts2</filter-name>
        <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class>
      </filter>

      <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>

      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>

    </web-app>
    ---------------------------------------------------------
    ----------- struts.xml ----------------------------------
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
      "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
      "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>

      <package name="hello" extends="struts-default">
        <action name="HelloWorld" class="template.HelloWorld">
          <result>/jsps/HelloWorld.jsp</result>
        </action>
      </package>

    </struts>
    ---------------------------------------------------------
  11. Creamos el fichero index.jsp que luego llamará al Action:
  12. ----------- index.jsp -----------------------------------
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <!DOCTYPE& html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Hello Sample</title>
      </head>
      <body>
        <s:action name="HelloWorld" executeResult="true"></s:action>
      </body>
    </html>
    ---------------------------------------------------------
  13. ./make.sh, desplegar (en el interfaz web del Tomcat) y probar la aplicación (en http://localhost:8080/webapp_template/). Cruzar los dedos para que funcione.

La mayor parte de este tutorial está transcrito de una página web donde lo encontré. Realmente mi aportación es el script make.sh y perfilar la estructura de directorios.

Cualquier comentario será bienvenido.

No hay comentarios:

Publicar un comentario