Sunucuyu yeniden başlatmadan Tomcat'te “server.xml” düzenlensin mi?


10

Tomcat 8'in confklasöründeki "server.xml" dosyasını düzenledim . HostYeni bir web sitesi için yeni bir etiket ekledim .

Tomcat sunucusunu yeniden başlatmalı mıyım?

Tomcat'in yeni düzenleneni ayrıştırıp uygulamasını sağlayabilir miyim server.xml?



@dawud Bağlantı için teşekkürler, ama bahsediyoruz <Host>, değil <Context>.
Basil Bourque

2
Ne olursa olsun, önemli kısmı server.xmlbaşlangıçta bir kez ayrıştırılmasıdır. Yeniden başlatma olmadan yeniden yüklenemez.
dawud

@dawud Teşekkürler. Şimdi bu sözü görüyorum. Bu soruyu kapatabilmem için bir cevap verdim
Basil Bourque

Yanıtlar:


14

Tomcat'i yeniden başlatmadan dosyayı düzenlemek oldukça mümkün olduğundan, sorunun tamamen doğru bir şekilde yapılmadığını söyleyerek başladım, ancak değişiklikler çalışan işlem tarafından göz ardı edilir.

Asıl soru, server.xmlTomcat'i yeniden başlatmadan değişikliklerin nasıl uygulanacağıdır .

Bilgi toplama başlatma işlemi ve sınıf-yükleyici Tomcat'in çevrimiçi belgelere sayfalarında, konuyu daha ayrıntılı olarak anlamak mümkündür.

Daha spesifik olarak, serverStartup.txt dosyasında ve başlatma işleminin UML diyagramında ve ilgili bölümler aşağıdaki gibi özetlenebilir:

Sequence 1. Start from Command Line
  ...
Sequence 2. Process command line argument (start, startd, stop, stopd)
Class: org.apache.catalina.startup.Bootstrap (assume command->start)
What it does:
a) Catalina.setAwait(true);
b) Catalina.load()
    b3) createStartDigester()
        Configures a digester for the main server.xml elements
    b4) Load the server.xml and parse it using the digester
        Parsing the server.xml using the digester is an automatic
        XML-object mapping tool, that will create the objects defined
        in server.xml
        Startup of the actual container has not started yet.
    b6) Calls initialize on all components, this makes each object
        register itself with the JMX agent.

Bu, sunucu uygulaması motorunun (Catalina) Bootstrap sınıf yükleyicisinin oluşturulmasından sonra olur.

Bu bilgilerle, başlangıç ​​işleminde server.xmldosya ayrıştırıldığında artık açıktır , ancak bu dosyaya değişiklikler uygulamak için Tomcat'i neden yeniden başlatmanın gerektiği sorusuna gerçekten cevap vermez.

Cevap, bir kısmının çalışma zamanında JMX kullanılarak dinamik olarak değiştirilebilmesidir . Bunun mümkün olması için, uygun MBean'ın kaydedilmesi (yukarıdaki b6 adımı) ve ayrıca SET işlemlerini kabul etmesi gerekir (bazı MBeans'ların sadece bir GET arayüzü vardır).

Özel durumunuzda, çalışma zamanında yeni bir Ana Bilgisayar oluşturmanın ve kaydetmenin bir yolu yoktur, çünkü bunun için herhangi bir hüküm yoktur ve Bootstrap sınıf yükleyicisinin bu nesneyi örneklendirmesi ve kaydettirmesi için Tomcat işlemini yeniden başlatmanızın nedeni budur. JMX ajanı.

Daha sonra, bu ana makineyi jconsoleherhangi bir JDK ile birlikte gelen gibi bir JMX istemcisinden değiştirmek mümkündür .

Sizi jconsoleJMX özellikli Tomcat'e bağlayın ve mevcut tüm özellikleri kontrol etmek için Ana Makine MBean'a göz atın:

Host MBean özniteliklerini gösteren jconsole

ve mevcut tüm işlemleri kontrol edin (bunlardan biri örnek olarak aşağıda gösterilmiştir):

Host MBean üzerinde örnek bir işlem gösteren jconsole


1
Beni JMX ile tanıştırdığı için +1.
Raja Anbazhagan

7

Hayır. Yeniden Başlatma Gerekli.

Bahsetmek için Tomcat doktor sayfası <Context>:

… Ana conf / server.xml dosyası Tomcat yeniden başlatılmadan yeniden yüklenemez.


1
Bu upvotes @dawud gitmeli ... başka yorum yok. we’re talking about <Host>, not <Context>.-1 üzgünüm dedi biri için kötü cevap , bunu yapmak nadirdir, ama orada zorunda ...
krisFR

@krisFR dawud herhangi bir zamanda, sonra veya şimdi bir cevap yazmakta özgürdü. Herkes bu oyunu yukarı oy için oynamaz.
Basil Bourque

1
@krisFR, Basil Bourque Bunu daha genel bir şekilde ele almak için daha ayrıntılı bir cevap ekledim. Umarım faydalıdır.
dawud
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.