Tommy عبارة عن خادم ويب Tomcat 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.jar .app.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 . // ...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" );
// ...
س: كيفية إخفاء تتبع مكدس Tomcat ومعلومات الخادم في صفحات الأخطاء؟
أ. الخطوات:
/META-INF/tomcat/conf/server.xml tomcat/conf/server.xml من أرشيف tommy.jar<Host><Valve> : < Valve className = " org.apache.catalina.valves.ErrorReportValve "
showReport = " false "
showServerInfo = " false " /> س. فشل تطبيقي مع java.lang.ClassNotFoundException: javax.servlet.*
A. نتيجة للانتقال من Java EE إلى Jakarta EE ، بدءًا من V10 ، يدعم Apache Tomcat فقط مواصفات Jakarta EE. javax.servlet.* لم يعد مدعومًا. استبدل javax.servlet.* الواردات في الكود الخاص بك مع jakarta.servlet.* .