En esta ocasión veremos como arrancar Tomcat usando Maven, específicamente usaremos un plugin (appassembler-maven-plugin).
Necesitamos una estructura de directorios tipo Maven (algo similar a la imagen de abajo).
Primero comencemos con el pom.xml, este archivo XML nos permitirá gestionar las depemdencias necesarias:
pom.xml
Clase principal del proyecto.
Main.java
Nota: Prestar atención a la ruta "src/main/webapp/" es donde se colocará la página pincipal.
Página JSP (index.jsp)
Servlet (HolaMundoServlet.java)
Ahora a definir los Servlets y su mapeo (web.xml).
¿Cómo compilo y ejecuto el programa?
1. Empaquetar (desde una terminal) todo con:
2. Ejecutar aplicación y abrir el navegdor en http://localhost:8080/
¡Listo!
Necesitamos una estructura de directorios tipo Maven (algo similar a la imagen de abajo).
proyecto/src/main/java/org/codemonkey/Main.java proyecto/src/main/java/org/codemonkey/servlets/HolaMundoServlet.java proyecto/src/main/java/resources proyecto/src/main/java/webapp/index.jsp proyecto/src/main/java/webapp/WEB-INF/web.xml proyecto/pom.xml
Primero comencemos con el pom.xml, este archivo XML nos permitirá gestionar las depemdencias necesarias:
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.codemonkey</groupId> <artifactId>jeecurso</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Curso JEE</name> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <tomcat.version>9.0.0.M6</tomcat.version> </properties> <dependencies> <dependency> <groupId>org.jboss.weld</groupId> <artifactId>weld-se</artifactId> <version>1.0.1-Final</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.4</version> </dependency> <!-- Tomcat inicio --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>${tomcat.version}</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <version>${tomcat.version}</version> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jasper</artifactId> <version>${tomcat.version}</version> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jasper-el</artifactId> <version>${tomcat.version}</version> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jsp-api</artifactId> <version>${tomcat.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>javax.el</groupId> <artifactId>javax.el-api</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-logging-juli</artifactId> <version>${tomcat.version}</version> </dependency> <dependency> <groupId>javax.el</groupId> <artifactId>el-api</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>el-impl</artifactId> <version>2.2</version> </dependency> <!-- Tomcat fin --> </dependencies> <!-- Ejecutar aplicaciones Tomcat--> <build> <finalName>embeddedTomcatSample</finalName> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>appassembler-maven-plugin</artifactId> <version>2.0.0</version> <configuration> <assembleDirectory>target</assembleDirectory> <programs> <program> <mainClass>org.codemonkey.Main</mainClass> <name>webapp</name> </program> </programs> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>assemble</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
Clase principal del proyecto.
Main.java
package org.codemonkey; import java.io.File; import javax.servlet.ServletException; import org.apache.catalina.LifecycleException; import org.apache.catalina.startup.Tomcat; public class Main { public static void main(String[] args) throws LifecycleException, InterruptedException, ServletException { String docBase = "src/main/webapp/"; Tomcat tomcat = new Tomcat(); String webPort = System.getenv("PORT"); if(webPort == null || webPort.isEmpty()) { webPort = "8080"; } tomcat.setPort(Integer.valueOf(webPort)); tomcat.addWebapp("/", new File(docBase).getAbsolutePath()); System.out.println("configuring app with basedir: " + new File("./" + docBase).getAbsolutePath()); tomcat.start(); tomcat.getServer().await(); } }
Nota: Prestar atención a la ruta "src/main/webapp/" es donde se colocará la página pincipal.
Página JSP (index.jsp)
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <title>Index</title> <meta charset="UTF-8"> </head> <body> <h1> Tomcat en Maven </h1> <ul> <li><a href="/HolaMundoServlet">Hola Mundo Servlet</a></li> </ul> </body> </html>
Servlet (HolaMundoServlet.java)
package org.codemonkey.servlets; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //http://localhost:8080/HolaMundoServlet @WebServlet("/HolaMundoServlet") public class HolaMundoServlet extends HttpServlet { protected void doGet(HttpServletRequest request ,HttpServletResponse response) throws ServletException,IOException { // obtenemos un stream vinculado al navegador PrintWriter out = response.getWriter(); // todo lo que escribimos llega al navegador out.println("<html><body>"); // obtengo la fecha y hora actual String hoyEs = (new Date()).toString(); out.println("<h1>Hola Mundo, hoy es: "+hoyEs+"<h1>"); out.println("</body><html>"); // cerramos el stream out.close(); } }
Ahora a definir los Servlets y su mapeo (web.xml).
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app 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/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>Curso JEE</display-name> <description>Tomcat con Maven</description> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>HolaMundoServlet</servlet-name> <servlet-class>org.codemonkey.servlets.HolaMundoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HolaMundoServlet</servlet-name> <url-pattern>/HolaMundoServlet</url-pattern> </servlet-mapping> </web-app>
¿Cómo compilo y ejecuto el programa?
1. Empaquetar (desde una terminal) todo con:
$ mvn package
$ sh /target/bin/webapp
¡Listo!
Comentarios
Publicar un comentario