Tomcat neden context.xml dosyamı silmek istiyor


24

İşyerinde web tabanlı bir Java uygulaması geliştiriyorum ve (açıkçası) geliştirme sırasında yerel olarak çalıştırmanız gerekiyor. Tomcat dokümanlarını çözdüm ve uygun bir bağlam.xml dosyasına sahip oldum, /etc/tomcat6/Catalina/localhost/ancak her seferinde Tomcat onu silmeye karar veriyor! Bu da onu geri koymam ve Tomcat’i yeniden başlatmam gerektiği anlamına geliyor.

Bunu neden yapar? Bu konuda Tomcat docs'larını aradım ve hiçbiri akıllı değilim.

(Ah evet: aslında çağrılmadı context.xmlancak owners.xmlbu uygulamanın HTTP yolu öneki olduğu için.)

Güncelleştirme

Tomcat çalışırken, Tomcat'ın dosyayı sildiğini gördüm . Sanırım bir hataya ihtiyacım var ...


Bu problemi yaşayın. Savaşınızı değiştirdiğinizde, uygulamanın yayılmamasına neden olan içerik dosyasının silinmesine neden olur. Etrafta bir işim yok ama
sevilebilirden

Yanıtlar:


18

Hızlı özet : Tomcat'ın bağlam dosyasını kaldırmayı da içeren bağlamı geri alması gibi (savaş dosyasını değiştirmek, web uygulamasını silmek veya yeni içerikle değiştirmek gibi) birkaç koşul vardır.

Ayrıntılar : Tomcat'in otomatik Dağıtma yapıp yapmaması (web uygulamasının dizinindeki değişiklikleri kontrol etmenin yanı sıra .xml tanımlayıcınızdaki değişiklikleri kontrol etmek anlamına gelir):

  1. server.xml $ CATALINA_HOME / conf / server.xml bölümünde bulunur:

    <Ana bilgisayar adı = "localhost" appBase = "webapps" unpackWARs = "true" autoDeploy = "true" xmlValidation = "false" xmlNamespaceAware = "false">

  2. Bu özelliği, bağlam dosyanızda değeri aşırı yükleyerek de ayarlayabilirsiniz.

AutoDeploy = true olduğunda dokümanlar için alıntı yapmak bağlam dosyanızın kaldırılmasına neden olabilir:

  • Bir WAR dosyasını silmek , ilişkili bir genişletilmiş dizinin, içerik dosyasının ve çalışma dizininin kaldırılmasıyla uygulamanın geri alımını tetikler .
  • Bir dizinin silinmesi, ilgili içerik dosyalarının ve çalışma dizininin kaldırılmasıyla uygulamanın geri alımını tetikler .
  • Bir WAR dosyasını güncellemek , ilişkili bir genişletilmiş dizinin, içerik dosyasının ve çalışma dizininin kaldırılmasıyla uygulamanın geri alımını tetikler .
  • Bir dizinin (dizinin içeriğinin değil) güncellenmesi, ilişkili bir içerik dosyasının ve çalışma dizininin kaldırılmasıyla uygulamanın konuşlandırılmasını tetikler .

Ayrıntılı detaylar : http://tomcat.apache.org/tomcat-6.0-doc/config/host.html#Automatic%20Application%20Deployment



:) lütfen kendinize yardım edin (sözdizimi vurgusu, daha önce cevabın bir bölümünü
silen

Mesele şu ki, sadece bir link eklerseniz, bağlantının hedefi kaybolabilir ve cevabı gereksiz kılar. Bu yüzden serverfault.com sizi sadece link yerine gerçek cevabı göndermeye teşvik eder. Ve yorum yaptığımda, metnin geri kalanı görünmüyordu. Yine de bağlantının kısa bir özeti yerine daha eksiksiz bir yanıt göndermenizi tavsiye ederim.
Jenny D, Monica’nın

1
Bu sadece doğru değil. Orijinal cevap, linkte bulabildiklerinizin kısa bir özetini içerir (ve hala da vardır). Bağlantı olmadan cevap hala mükemmel bir anlam ifade ediyor ve bağlantı ile birlikte detayları bulabilirsiniz.
Jan Zyka

Ama kulağa çok kulağa çok rahatsız gelmeyi planlamamıştım :) Bu web’e fazla girmedim, aynı şeyi çözüyordum ve paylaşmak istedim.
Jan Zyka

5

Eğer varsa autoDeploy istemiyoruz özelliği, örneğin üretim ortamlarında, sen conf / Catalina / localhost bağlam dosyasında şu nitelikleri dikkate alabilir:

  • autoDeploy = "false"
  • ve deployXML = "false"

autoDeploy = "false" tek başına çalışmayabilir çünkü uygulama context.xml (META-INF içinde), autoDeploy'un server.xml ayarlarını geçersiz kılabilir.

  • Uygulamanın META-INF / context.xml, geliştirme ortamında autoDeploy ile birlikte kullanılacak
  • AutoDeploy olmadan, üretimdeki conf / Catalina / localhost içeriği.

deployXML özniteliği dokümantasyon özniteliği dokümantasyonu okunmaya değer (§ Standart Uygulama).

Kapsamlı autoDeploy kullanıcı davası ve içerik kaldırıldığı zaman: örn. Uygulama konuşulmamış, kullanıcı davası belgelenmiştir burada bulunabilir .


2

Neden biti cevap veremiyorum .

Ancak, Bu bağlantı , ayarını ayarlayarak bunu durdurabileceğinizi belirtir autoDeploy="false".server.xml


1
Tomcat7 altında autoDeploy = "false" farketmez :(
Joseph Lust

1

Tomcat’ın arkasındaki sebeplerin ne olduğunu dürüstçe bilmiyorum, ancak bağlam öğenize aşağıdaki XML özelliğini eklemeyi deneyin

reloadable="false"

Yani bağlamınız şöyle bir şeye benzeyebilir:

<Context path="/" docBase="/some/path/name" reloadable="false">
<!-- Context related stuff -->
</Context>

Bu, Tomcat’in dosyayı silmesini engellemelidir


Ne yazık ki, her geliştirme işleminden sonra Tomcat’ı yeniden başlatmak zorunda kalacağım için bu gelişimi zorlaştırıyor.
staticsan

gelişiminde bu konuda yardımcı olmak için çıkış jrebel: zeroturnaround.com/jrebel
harmanjd

0

Bunun eski bir konu olduğunun farkındayım, ama bu sorunu çözmek için bulduğum şeyi paylaşacağımı düşündüm ...

Uygulamam için savaş dosyasının yeni bir kopyasını dağıtacağım her seferinde tomcat'ın masaüstü sürümüm için de aynı sorunu yaşıyordum.

Sorun, doğrudan bu dosya sisteminde doğrudan dosya sisteminde değişiklikler yapmamdan kaynaklanıyordu. Problemi düzelten, eclipse editörüm aracılığıyla context.xml dosyasını düzenlemekti. Eclipse'imin içinde, genişlettiğinizde, context.xml ve server.xml gibi bir avuç dosya görebileceğiniz bir "sunucu" projesi var. Dosya sisteminden çıkmak yerine dosyaları buradan değiştirirseniz, değişikliklerin tutulduğu anlaşılıyor.

Bu çözümü aşağıdaki başlıkta buldum: https://www.liferay.com/community/forums/-/message_boards/message/16511799

Umarım bunun bir başkasına yardımı olur!

-StephenS


0

Başlığın tanımladığı genel konu , şu anda hala açık olan bir konuyu silmeden savaştan Re-konuş ile kapsanmaktadır .

İçeriği silmeyen yeniden dağıtım ile dağıtımın içeriği sildiği dağıtımdan sonra dağıtma arasında onaylanmış bir ayrım vardır. Belgeler güncel değildi ve GUI yöneticisi hala yeniden konuşlandırmayı desteklemiyor.


-1

Bazen, sunucudaki uygulama için farklı değerler olabilir, örneğin yüklenen dosyaları saklama yolu. Mabe geliştirici ortamında şöyle bir şey var:

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/ParkMeServer" allowCasualMultipartParsing="true" reloadable="false">
     <Parameter name="rutaTrabajo" value="C:\Larry\Proyectos\app\rutaTrabajoxx" override="true"/>
</Context>

Ancak sunucuda yol farklıdır:

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/ParkMeServer" allowCasualMultipartParsing="true" >
     <Parameter name="rutaTrabajo" value="/usr/share/App/rutaTrabajo" override="true"/>
</Context>

Ben de aynı sorunu yaşıyorum, tomcat conf / Catalina / localhost dosyasından context.xml (meapp.xml) dosyasını siliyor

Çözmek için context.xml.default kullanıyorum, aynı yolda context.xml.default adında bir dosya oluşturdum ve düzenlemek istediğim bir put config içinde:

 cat context.xml.default
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/ParkMeServer" allowCasualMultipartParsing="true" >
     <Parameter name="rutaTrabajo" value="/usr/share/ParkiMeApp/rutaTrabajo" override="true"/>
</Context>

Böylece, yeniden dağıtmanın ardından uygulama yapıldığında, onaylanan parametreler hala oradadır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.