Tommy est un minuscule serveur Web Apache Tomcat entièrement configurable entièrement configurable qui vous permet d'exécuter ou d'intégrer des applications Web statiques et dynamiques (JSP et servlets).
Une application peut être fournie en tant que répertoire ou emballé comme archive de guerre (ou zip) qui peut contenir des servlets, JSP, HTML et tous les autres trucs statiques comme CSS, JavaScript, etc.
Nous utilisons le serveur Web Tommy dans d'autres projets:
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)
Exécuter le fichier zip (ou war):
java -jar tommy.jar --app MyKillerApp.warExécutez le fichier zip (ou war) avec des args de ligne de commande personnalisés:
java -jar tommy.jar --app MyKillerApp.war myparam1 myparam2 ...Exécutez Zip (ou War) depuis le serveur Web:
java -jar tommy.jar --app https://example.com/MyKillerApp.zipExécutez l'application Web explosée à partir du répertoire:
java -jar tommy.jar --app MyKillerAppDirExécutez l'archive de zip protégée par mot de passe:
java -jar tommy.jar --app MyKillerApp.zip --password mysecretExécutez l'archive zip (ou guerre) protégé par mot de passe avec des args de ligne de commande personnalisés:
java -jar tommy.jar --app MyKillerApp.zip --password mysecret myparam1 myparam2 .../app du tommy.jar .app.war ou app.zip (l'archive peut être cryptée) et copiez l'archive dans le répertoire racine du tommy.jar . Marquez votre application en renommant le tommy.jar à MyKillerApp.jar .
Exécutez l'application intégrée:
java -jar MyKillerApp.jarExécutez l'application embarquée avec des args de ligne de commande personnalisés:
java -jar MyKillerApp.jar myparam1 myparam2 ...Exécutez l'application embarquée protégée par mot de passe:
java -jar MyKillerApp.jar --password mysecretExécutez l'application embarquée protégée par mot de passe avec des args de ligne de commande personnalisés:
java -jar MyKillerApp.jar --password mysecret myparam1 myparam2 .../META-INF/tomcat/conf le répertoire de l'archive 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" );
// ...
Q. Comment masquer la trace de pile Tomcat et les informations sur le serveur dans les pages d'erreur?
A. Étapes:
/META-INF/tomcat/conf/server.xml de l'archive tommy.jar<Host><Valve> suivant: < Valve className = " org.apache.catalina.valves.ErrorReportValve "
showReport = " false "
showServerInfo = " false " /> Q. Mon application a échoué avec java.lang.ClassNotFoundException: javax.servlet.*
A. À la suite de la décision de Java EE à Jakarta EE, à partir de V10, Apache Tomcat ne prend en charge que la spécification Jakarta EE. javax.servlet.* n'est plus pris en charge. Remplacez le javax.servlet.* Imports dans votre code par jakarta.servlet.* .