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.xml
Tomcat'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.xml
dosya 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 jconsole
herhangi bir JDK ile birlikte gelen gibi bir JMX istemcisinden değiştirmek mümkündür .
Sizi jconsole
JMX özellikli Tomcat'e bağlayın ve mevcut tüm özellikleri kontrol etmek için Ana Makine MBean'a göz atın:
ve mevcut tüm işlemleri kontrol edin (bunlardan biri örnek olarak aşağıda gösterilmiştir):