Tomcat’ın “onaylanan” dizinini JDBC uygulama kavanozunda mı kullanıyorsunuz?


1

Satıcımız, MySQL JDBC kavanozunu Tomcat 6 "$ CATALINA_HOME / endorsed" dizinine yerleştirmeyi önerir.

Bu tavsiyenin amacının ne olduğu net değil.

ClassLoader Pratik Bilgiler Tomcat 6 devletler için "kabul" mekanizması hakkında şu:

Java, JCP dışında yaratılan API'lerin değiştirilmesine izin vermek için "Onaylanmış Standartlar Geçersiz Kılma Mekanizması" adlı bir mekanizmayı destekler (örneğin, W3C'den DOM ve SAX). XML ayrıştırıcı uygulamasını güncellemek için de kullanılabilir. Daha fazla bilgi için, bkz . Http://docs.oracle.com/javase/1.5.0/docs/guide/standards/index.html .

Tomcat, bu mekanizmayı, kabı başlatan komut satırına -Djava.endorsed.dirs = $ JAVA_ENDORSED_DIRS sistem özelliğini dahil ederek kullanır. Bu seçeneğin varsayılan değeri $ CATALINA_HOME / onaylanmıştır. Bu onaylanan dizin varsayılan olarak oluşturulmaz.

Bu nedenle, "$ CATALINA_HOME / endorsed" dizini oluşturulur ve komut satırında etkinleştirilirse, JDK ile birlikte gelen API'lerin uygulamalarını geçersiz kılmak için kullanılabilir. Ancak JDK, JDBC için varsayılan bir uygulama ile gelmiyor.

Eğer biri MySQL JDBC uygulamasını “webapp classloader'dan daha yüksek” bir sınıf yükleyiciye yüklemek isterse, bu durumda “common” classloader:

Tomcat 6 classloader hiyerarşisi

... biri, Classloader Howto'da açıklandığı gibi "$ CATALINA_HOME / lib" veya "$ CATALINA_BASE / lib" içine girer.

Satıcım Kötü Uygulamalar öneriyor mu?

Kendime not

Tomcat 5'te, Classloader hiyerarşisi aşağıdaki gibidir:

Tomcat 5 classloader hiyerarşisi

Sadeleştirmeler için Tanrıya şükür!

Yanıtlar:


1

Evet o öyle.

Bu tavsiyenin amacı JAR sunucusunu geniş bir alana yaymak ve belki de ortak dizindeki her şeyden önce yüklenmesini sağlamaktır, çünkü sunulan hiyerarşi de ilk olarak ne yüklendiğini belirler.

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.