Tommy เป็นเว็บเซิร์ฟเวอร์ Apache Tomcat ที่กำหนดค่าได้อย่างสมบูรณ์แบบเดียวที่ช่วยให้คุณเรียกใช้หรือฝังเว็บแอปพลิเคชันเว็บแอปพลิเคชันแบบคงที่และแบบไดนามิก (JSP และ Servlets)
แอพสามารถให้เป็นไดเรกทอรีหรือบรรจุเป็นคลังเก็บสงคราม (หรือซิป) ที่สามารถมี servlets, jsp, html และสิ่งของคงที่อื่น ๆ ทั้งหมดเช่น CSS, JavaScript ฯลฯ
เราใช้เว็บเซิร์ฟเวอร์ทอมมี่ในโครงการอื่น ๆ ของเรา:
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)
เรียกใช้ไฟล์ zip (หรือสงคราม):
java -jar tommy.jar --app MyKillerApp.warเรียกใช้ไฟล์ zip (หรือสงคราม) ที่มีบรรทัดคำสั่งที่กำหนดเอง args:
java -jar tommy.jar --app MyKillerApp.war myparam1 myparam2 ...เรียกใช้ zip (หรือสงคราม) จากเว็บเซิร์ฟเวอร์:
java -jar tommy.jar --app https://example.com/MyKillerApp.zipเรียกใช้แอปพลิเคชันเว็บที่ระเบิดจากไดเรกทอรี:
java -jar tommy.jar --app MyKillerAppDirเรียกใช้ zip ที่ป้องกันด้วยรหัสผ่าน (หรือสงคราม) เก็บถาวร:
java -jar tommy.jar --app MyKillerApp.zip --password mysecretเรียกใช้ zip ที่ป้องกันด้วยรหัสผ่าน (หรือสงคราม) เก็บถาวรด้วยคำสั่งบรรทัดคำสั่งที่กำหนดเอง args:
java -jar tommy.jar --app MyKillerApp.zip --password mysecret myparam1 myparam2 .../app ของ tommy.jarapp.war หรือ app.zip (สามารถเข้ารหัสที่เก็บถาวร) และคัดลอกคลังเก็บไปยังไดเรกทอรีรากของ tommy.jar แบรนด์แอปของคุณโดยการเปลี่ยนชื่อ tommy.jar เป็น MyKillerApp.jar
เรียกใช้แอพฝังตัว:
java -jar MyKillerApp.jarเรียกใช้แอพฝังตัวด้วยบรรทัดคำสั่งที่กำหนดเอง args:
java -jar MyKillerApp.jar myparam1 myparam2 ...เรียกใช้แอพฝังตัวที่ป้องกันด้วยรหัสผ่าน:
java -jar MyKillerApp.jar --password mysecretเรียกใช้แอพฝังตัวที่ป้องกันด้วยรหัสผ่านด้วยบรรทัดคำสั่งที่กำหนดเอง args:
java -jar MyKillerApp.jar --password mysecret myparam1 myparam2 .../META-INF/tomcat/conf ไดเร็กทอรีของ tommy.jar Archive // ...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. วิธีซ่อนข้อมูลการติดตามสแต็ก Tomcat และข้อมูลเซิร์ฟเวอร์ในหน้าข้อผิดพลาด?
A. ขั้นตอน:
/META-INF/tomcat/conf/server.xml ของ tommy.jar Archive<Host><Valve> ต่อไปนี้: < Valve className = " org.apache.catalina.valves.ErrorReportValve "
showReport = " false "
showServerInfo = " false " /> Q. แอปของฉันล้มเหลวด้วย java.lang.ClassNotFoundException: javax.servlet.*
A. อันเป็นผลมาจากการย้ายจาก Java EE ไปยังจาการ์ตา EE เริ่มต้นจาก V10 Apache Tomcat รองรับเฉพาะสเป็คจาการ์ตา EE javax.servlet.* ไม่ได้รับการสนับสนุนอีกต่อไป แทนที่ javax.servlet.* นำเข้าในรหัสของคุณด้วย jakarta.servlet.*