هل من الممكن إيقاف تشغيل المسح في Taglib في Tomcat؟

StackOverflow https://stackoverflow.com/questions/1489665

  •  18-09-2019
  •  | 
  •  

سؤال

عند بدء التشغيل، يقوم Tomcat بشكل متكرر بمسح الدلائل INF-INF لملفات TLD (Tag Library Descriptor). نتيجة لذلك، إذا كان لدى WebApp الكثير من الملفات ضمن هذا الدليل، فهذا يبطئ عملية بدء التشغيل. هل يعرف أحد إذا كانت هناك طريقة في هذا الوضع لإيقاف المسح الضوئي بالكامل، أو على الأقل توفير مرشح لتضييق البحث؟

هل كانت مفيدة؟

المحلول

يمكنك إضافة سمات ProcessDLDS في السياق،

  <Context processTlds="false" ... />

ومع ذلك، لن يعمل TLDs المحددة في ملف جرة دون مسح الجرار. عليك تحديد جميع TLDs في Web-INF.

نصائح أخرى

كنت في حيرة من نفس المشكلة. بالنظر إلى شفرة المصدر في Tomcat 7.0.40، فمن غير الممكن تجنب المسح الضوئي عن طريق إعداد "processdlds = false"، فسيظل ممسوحة ضوئيا لشظايا الويب (contextconfig.processjarsforwebragments ()).

هناك 2 خيارات المتبقية:

تعيين الخاصية في Tomcat_home / Conf / Catalina.properties

org.apache.catalina.startup.ContextConfig.jarsToSkip=*.jar

استبدل StandardJarscanner من خلال التنفيذ الخاص بك، على سبيل المثال One فارغة وأحرف عليه من My.war / Meta-INF / Context.xml:

<Context processTlds="false">
    <JarScanner className="org.my.tomcat.NullJarScanner"/>
</Context>

في الحالة الأخيرة، ستحتاج إلى التأكد من أن فئة Nulljarscanner متوفرة في دليل Tomcat Lib، وليس لديك .war

على Tomcat 8، يمكن حلها عن طريق إضافة META-INF\context.xml مع ينظر إلى التكوين أدناه إلى ملف حربك. لا حاجة لتغيير تكوين Tomcat العالمي.

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <JarScanner>
        <JarScanFilter tldSkip="*.*"/>
    </JarScanner>
</Context>

الوثائق ذات الصلة متاحة هنا: http://tomcat.apache.org/tomcat-8.0-doc/config/jar-scan-filter.html.

كبديل (إذا كنت لا تزال تفضل مسح بعض الجرار)، يمكنك إلحاق بقيم جديدة إلى "tomcat.util.scan.defaultjarscanner.jarstoskip" الخاصية في "{tomcat_home} /conf/catalina.properties".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top