Tommy es un pequeño servidor web Apache Tomcat Tomcat totalmente configurable que le permite ejecutar o integrar aplicaciones web estáticas y dinámicas (JSP y Servlets).
Se puede proporcionar una aplicación como un directorio o empaquetado como archivo de guerra (o zip) que puede contener servlets, JSP, HTML y todas las demás cosas estáticas como CSS, JavaScript, etc.
Usamos el servidor web de Tommy en otros proyectos:
tommy.jar java -jar tommy.jar [options] [custom arg]...
Options:
--help print help message
--app <file|dir|URL> run app from ZIP or WAR archive, directory or URL
--port <number> HTTP TCP port number, default: 8080
--port-ssl <number> HTTPS TCP port number, default: 8443
--redirect redirect HTTP to HTTPS
--context-path <string> context path, default: /
--password <string> provide password (for encrypted ZIP (or WAR) archive)
Ejecutar el archivo zip (o guerra):
java -jar tommy.jar --app MyKillerApp.warEjecutar el archivo zip (o guerra) con args de línea de comandos personalizados:
java -jar tommy.jar --app MyKillerApp.war myparam1 myparam2 ...Ejecutar Zip (o guerra) desde el servidor web:
java -jar tommy.jar --app https://example.com/MyKillerApp.zipEjecute la aplicación web explosiva desde el directorio:
java -jar tommy.jar --app MyKillerAppDirEjecutar el archivo de ZIP (o guerra) protegido con contraseña:
java -jar tommy.jar --app MyKillerApp.zip --password mysecretEjecute el archivo de ZIP (o guerra) protegido con contraseña con args de línea de comandos personalizados:
java -jar tommy.jar --app MyKillerApp.zip --password mysecret myparam1 myparam2 .../app de tommy.jar .app.war o app.zip (el archivo se puede encriptar) y copie el archivo al directorio raíz del tommy.jar . Marca su aplicación renombrando el tommy.jar a MyKillerApp.jar .
Ejecutar la aplicación incrustada:
java -jar MyKillerApp.jarEjecutar la aplicación integrada con args de línea de comandos personalizados:
java -jar MyKillerApp.jar myparam1 myparam2 ...Ejecutar la aplicación incrustada protegida con contraseña:
java -jar MyKillerApp.jar --password mysecretEjecute la aplicación integrada protegida con contraseña con args de línea de comandos personalizados:
java -jar MyKillerApp.jar --password mysecret myparam1 myparam2 .../META-INF/tomcat/conf Directory del archivo tommy.jar . // ...somewhere in your Servlet or JSP
InitialContext ctx = new InitialContext ();
/* get custom command-line args */
String [] args = ( String []) ctx . lookup ( "java:comp/env/tommy/args" );
/* get standard input (stdin) */
InputStream stdin = ( InputStream ) ctx . lookup ( "java:comp/env/tommy/stdin" );
/* get standard output (stdout) */
PrintStream stdout = ( PrintStream ) ctx . lookup ( "java:comp/env/tommy/stdout" );
/* get standard error (stderr) */
PrintStream stderr = ( PrintStream ) ctx . lookup ( "java:comp/env/tommy/stderr" );
/* get "--app" parameter value */
String app = ( String ) ctx . lookup ( "java:comp/env/tommy/app" );
// ...
P. ¿Cómo ocultar Tomcat Stack Trace y la información del servidor en páginas de error?
A. Pasos:
/META-INF/tomcat/conf/server.xml del archivo tommy.jar<Host><Valve> : < Valve className = " org.apache.catalina.valves.ErrorReportValve "
showReport = " false "
showServerInfo = " false " /> P. Mi aplicación falló con java.lang.ClassNotFoundException: javax.servlet.*
A. Como resultado del movimiento de Java EE a Yakarta EE, a partir de V10, Apache Tomcat admite solo la especificación de Yakarta EE. javax.servlet.* ya no es compatible. Reemplace el javax.servlet.* Importa en su código con jakarta.servlet.* .