Apache Tomcat 10.1 es el servidor de referencia para Jakarta EE Web Profile. Soporta Servlet 6.0, JSP 3.1, JSTL 3.0 y WebSocket 2.1.
Instalar y configurar Tomcat
# Descargar Tomcat 10.1 desde tomcat.apache.org wget https://downloads.apache.org/tomcat/tomcat-10/v10.1.24/bin/apache-tomcat-10.1.24.tar.gz tar -xzf apache-tomcat-10.1.24.tar.gz -C /opt export CATALINA_HOME=/opt/apache-tomcat-10.1.24 # Permisos de arranque chmod +x $CATALINA_HOME/bin/*.sh # Arrancar/parar $CATALINA_HOME/bin/startup.sh $CATALINA_HOME/bin/shutdown.sh
# Configurar usuario admin para el Manager (conf/tomcat-users.xml) <role rolename="manager-gui"/> <role rolename="admin-gui"/> <user username="admin" password="tu-password-seguro" roles="manager-gui,admin-gui"/>
Compilar y desplegar con Maven
<!-- pom.xml: plugin para despliegue automático -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat10-maven-plugin</artifactId>
<version>3.0-r1928853</version>
<configuration>
<url>http://localhost:8080/manager/text</url>
<server>TomcatLocal</server> <!-- credenciales en settings.xml -->
<path>/mi-app</path>
</configuration>
</plugin>
# Compilar el WAR mvn clean package # Desplegar en Tomcat en ejecución mvn tomcat10:deploy # Copiar manualmente el WAR al directorio webapps cp target/mi-app.war $CATALINA_HOME/webapps/ # Tomcat lo desempaqueta automáticamente
JNDI: configurar recursos en Tomcat
Los datos de conexión a BD deben vivir en la configuración de Tomcat, no en el código:
<!-- conf/context.xml -->
<Context>
<Resource name="jdbc/mibd"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mibase?useSSL=true&serverTimezone=UTC"
username="usuario"
password="contraseña"
maxTotal="20"
maxIdle="10"
maxWaitMillis="10000"/>
</Context>
// Obtener conexión desde el Servlet
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mibd");
try (Connection con = ds.getConnection()) {
// usar la conexión
}
