Saya sedang mengembangkan aplikasi Java berbasis web di tempat kerja dan (jelas) harus menjalankannya secara lokal selama pengembangan. Saya telah menemukan dokumen Tomcat dan memiliki file context.xml yang sesuai /etc/tomcat6/Catalina/localhost/
tetapi sering kali, Tomcat memutuskan untuk menghapusnya! Yang berarti saya harus meletakkannya kembali dan memulai kembali Tomcat.
Mengapa ini melakukan ini? Saya telah mencari dokumen Tomcat tentang hal itu dan tidak ada yang lebih bijak.
(Oh ya: itu sebenarnya tidak disebut context.xml
tetapi owners.xml
karena itu adalah awalan jalur HTTP untuk aplikasi ini.)
Memperbarui
Saya sekarang melihat Tomcat menghapus file sementara Tomcat sedang berjalan . Saya rasa saya perlu mengajukan bug ...
Jawaban:
Ringkasan cepat : ada beberapa kondisi (seperti mengubah file perang, menghapus aplikasi web, atau menggantinya dengan konten baru) di mana tomcat akan menganggur konteks termasuk menghapus file konteks.
Detail : Apakah tomcat melakukan atau tidak melakukan autoDeployment (berarti memeriksa perubahan dalam deskriptor .xml Anda serta memeriksa perubahan dalam direktori webapp) didorong oleh:
server.xml diterjemahkan dalam bagian $ CATALINA_HOME / conf / server.xml:
<Host name = "localhost" appBase = "webapps" unpackWARs = "true" autoDeploy = "true" xmlValidation = "false" xmlNamespaceAware = "false">
Anda juga dapat mengatur properti ini di file konteks Anda yang melebihi nilai
Mengutip dokumen untuk kasus-kasus ketika autoDeploy = true dapat menyebabkan penghapusan file konteks Anda:
Detail lengkap : http://tomcat.apache.org/tomcat-6.0-doc/config/host.html#Automatic%20Application%20Deployment
sumber
Jika Anda tidak ingin fitur autoDeploy , dalam lingkungan produksi misalnya, Anda dapat mempertimbangkan atribut berikut di file konteks conf / Catalina / localhost:
autoDeploy = "false" mungkin tidak bekerja sendiri karena application context.xml (dalam META-INF) dapat mengesampingkan pengaturan server.xml dari autoDeploy.
dokumentasi atribut deployXML atribut dokumentasi layak dibaca (§ Implementasi Standar).
Kasus pengguna autoDeploy yang lengkap, dan ketika konteks dihapus: mis. Aplikasi tidak dipekerjakan, kasus pengguna didokumentasikan dapat ditemukan di sini .
sumber
Tidak bisa menjawab bagian Why why.
Namun, tautan ini menyatakan Anda bisa menghentikan ini dengan mengatur
autoDeploy="false"
inserver.xml
sumber
Jujur saya tidak tahu apa alasan di balik Tomcat melakukan ini, tetapi cobalah menambahkan atribut XML berikut ke elemen konteks Anda
Jadi konteks Anda dapat terlihat seperti ini:
Ini harus menjaga Tomcat dari menghapus file
sumber
Saya menyadari ini adalah utas lama, tetapi saya pikir saya akan membagikan apa yang saya temukan untuk memperbaiki masalah ini ...
Saya telah memiliki masalah yang sama persis dengan file context.xml saya untuk versi desktop tomcat saya menjadi musnah setiap kali saya akan menggunakan salinan baru file perang untuk aplikasi saya.
Masalahnya adalah karena saya membuat perubahan pada file ini secara langsung pada sistem file. Apa yang diperbaiki masalahnya adalah mengedit file context.xml melalui editor Eclipse saya. Di dalam Eclipse saya, ada proyek "server" yang setelah Anda mengembangkannya, Anda dapat melihat beberapa file, seperti context.xml dan server.xml. Tampaknya jika Anda memodifikasi file dari sini alih-alih pergi ke sistem file, perubahan Anda akan disimpan.
Saya menemukan solusi ini di utas berikut: https://www.liferay.com/community/forums/-/message_boards/message/16511799
Saya harap ini membantu orang lain!
-StephenS
sumber
Masalah umum seperti yang dijelaskan oleh judul ditutupi oleh penyebaran kembali dari perang tanpa menghapus konteks yang masih menjadi masalah terbuka saat ini.
Ada perbedaan yang diakui antara penggunaan kembali yang tidak menghapus konteks, dan penggunaan setelah berhenti digunakan di mana penghapusan itu menghapus konteks. Dokumentasinya sudah ketinggalan zaman, dan manajer GUI masih tidak mendukung penyebaran kembali.
sumber
Kadang-kadang perlu memiliki nilai yang berbeda untuk aplikasi di server, misalnya jalur untuk menyimpan file yang diunggah. Di lingkungan pengembang mabe kami memiliki sesuatu seperti ini:
Tetapi di server jalurnya berbeda:
Saya juga memiliki masalah yang sama, kucing jantan menghapus context.xml (meapp.xml) dari conf / Catalina / localhost
Untuk mengatasi saya menggunakan context.xml.default, di jalur yang sama saya membuat file bernama context.xml.default dan di dalam konfigurasi put yang ingin saya pegang:
Jadi, ketika memindahkan kemudian aplikasi, parameter confir masih ada.
sumber