Tommy ist ein winziger, vollständig konfigurierbarer Apache-Tomcat-Webserver von Single-File, mit dem Sie statische und dynamische (JSP- und Servlets) Webanwendungen ausführen oder einbetten können.
Eine App kann als Verzeichnis bereitgestellt oder als Kriegsarchiv (oder ZIP) gepackt werden, das Servlets, JSP, HTML und alle anderen statischen Dinge wie CSS, JavaScript usw. enthalten kann.
Wir verwenden den Tommy Webserver in anderen Projekten:
tommy.jar herunter 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)
Führen Sie die ZIP -Datei (oder Krieg) aus:
java -jar tommy.jar --app MyKillerApp.warFühren Sie die ZIP-Datei (oder Krieg) mit benutzerdefinierten Befehlszeilen-Argumenten aus:
java -jar tommy.jar --app MyKillerApp.war myparam1 myparam2 ...Führen Sie ZIP (oder Krieg) vom Webserver aus:
java -jar tommy.jar --app https://example.com/MyKillerApp.zipFühren Sie die explodierte Web -App aus dem Verzeichnis aus:
java -jar tommy.jar --app MyKillerAppDirFühren Sie passwortgeschütztes ZIP-Archiv (oder Krieg) aus:
java -jar tommy.jar --app MyKillerApp.zip --password mysecretFühren Sie passwortgeschütztes ZIP-Archiv (oder Krieg) mit benutzerdefinierten Befehlszeilen-Argumenten aus:
java -jar tommy.jar --app MyKillerApp.zip --password mysecret myparam1 myparam2 .../app des tommy.jar .app.war oder app.zip (das Archiv kann verschlüsselt werden) und kopieren Sie das Archiv in das Root -Verzeichnis der tommy.jar . Brand Ihre App, indem Sie den tommy.jar in MyKillerApp.jar umbenennen.
Führen Sie die eingebettete App aus:
java -jar MyKillerApp.jarFühren Sie die eingebettete App mit benutzerdefinierten Befehlszeilen-Argumenten aus:
java -jar MyKillerApp.jar myparam1 myparam2 ...Führen Sie eine eingeschützte eingebettete App aus, die mit Kennwort geschützt ist:
java -jar MyKillerApp.jar --password mysecretFühren Sie eine einkennwortgeschützte eingebettete App mit benutzerdefinierten Befehlszeilen-Argumenten aus:
java -jar MyKillerApp.jar --password mysecret myparam1 myparam2 .../META-INF/tomcat/conf Verzeichnis des Archivs 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" );
// ...
Frage: Wie verbergte ich Tomcat -Stapelverfolgung und Serverinformationen in Fehlerseiten?
A. Schritte:
/META-INF/tomcat/conf/server.xml des tommy.jar<Host> -Element<Valve> Element ein: < Valve className = " org.apache.catalina.valves.ErrorReportValve "
showReport = " false "
showServerInfo = " false " /> Q. Meine App ist mit java.lang.ClassNotFoundException: javax.servlet.*
A. Infolge des Wechsels von Java ee nach Jakarta EE stützt Apache Tomcat nur die Jakarta ee -Spezifikation. javax.servlet.* wird nicht mehr unterstützt. Ersetzen Sie das javax.servlet.* Importiert in Ihrem Code durch jakarta.servlet.* .