نشر الطلب على مضيف مخصص من Tomcat
سؤال
حصلت على بعض المشكلات لنشر طلبي.
البيئة: Ubuntu 10.04 ، Tomcat 7.02 (التثبيت من الأرشيف من موقع Tomcat ، وليس من المستودعات) ، يتم تشغيل الخادم وإيقاف دليل ، وليس استخدام أي IDE.
لأول مرة قمت بإنشاء مضيف في $CATALINA_HOME/conf/server.xml
:
<Host name="java.dev"
appBase="/home/krasilich/java/"
autoDeploy="true" >
<Alias>www.java.dev</Alias>
</Host>
ثم إنشاء سياق في $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
:
<Context docBase="siloc/web/" />
وحصلت على الخطأ
تم تحديد docbase/home/krasilich/java/siloc/web/داخل appbase المضيف ، وسيتم تجاهله
ولكن ، إذا قمت بنسخ manager.xml إلى $CATALINA_HOME/conf/Catalina/java.dev/
يمكنني تشغيل تطبيق مدير. إذا قمت بنشر طلبي من خلال المدير - فإنه يقول أن كل شيء يسير على ما يرام ، لكنني ما زلت أرى 404 على java.dev:8080/siloc/
هذا كل شيء عن مضيف مخصص.
لقد حاولت نشر الطلب من خلال المدير في LocalHost أيضًا وهو يعمل ، يمكنني رؤية "Hello Word" على LocalHost: 8080/siloc/
ولكن ، إذا قمت بتغيير النص في INDEX.JSP ، فلن يتأثر على الواجهة الأمامية. زر "إعادة النشر" لا يساعدني.
كما ذكرت المدير فقط نسخ ملفات التطبيق إلى دليل WebApps ، ولا تقوم بأي تغييرات في ملفات التكوين.
كل ما أحتاجه يمكنني نشر التطبيق في أي دليل في نظام الملفات الخاص بي (في الواقع سيكون /home/krasilich/java/
).
وسيكون من الرائع أن أتمكن من القيام بذلك على مضيف مخصص مثل java.dev أحتاج إلى الإجابة ، لماذا السياق في $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
لا يعمل معي ، وماذا سأفعل لجعله ثابتًا؟
شكرًا.
المحلول
لقد تمكنت من تكرار مشكلتك.
هناك حلولان يمكنني أن أقترحهما بعد العبث بمجموعات من appBase
و docBase
. يبدو أن الاثنين لا يعملان معًا.
الخيار 1 - إزالة AppBase
مسح ال appBase
من server.xml
وتحديد المسار الكامل لتطبيق الويب في docBase
في ال $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
أفترض أن قيمتك ستكون /home/krasilich/java/siloc/web/siloc
.
ملاحظة: تحديد ما يصل فقط إلى المجلد الأصل /home/krasilich/java/siloc/web/
سوف تظهر لك قائمة دليل للمجلد الأصل
الخيار 2 - إزالة docbase
في $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
مسح ال docBase
واحتفظ فقط <Context/>
Tomcat يستدعي اسم WebApp siloc
من $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
وتبحث عن webapp المسمى siloc
في Appbase.
هذا يسمح java.dev:8080/siloc/ بالعمل شريطة أيضًا تغيير appBase
في server.xml
إلى المجلد الأصل من الويب الخاص بك siloc
.
استجابة لسبب manager
يعمل ، نفس السبب - لا يوجد docbase في manager.xml
أحاول مجموعات أخرى من docbase ولكن أي قيمة أعطي رميات
تحذير: تم تحديد Docbase ... داخل Appbase المضيف ، وسيتم تجاهله
لذا فإن استنتاجي هو إزالة docbase. هذه ليست فكرة جيدة - نظرًا لأن المسار الكامل إلى المجلد الأصل يتم ترميزه في server.xml.