كيف يمكن للمرء تعيين مخصص WebAppClassLoader في رصيف من خلال Config؟
-
02-10-2019 - |
سؤال
أحاول تكوين مجموعة WebAppContext Jetty (6.x) مع فئة فرعية مخصصة من WebAppClassloader. في الكود (Scala) ، إنه ببساطة:
val context = new WebAppContext()
val cwacl = new CustomWebAppClassLoader(context)
context.setClassLoader(cwacl)
...
هذا يعمل بشكل جيد عند تضمين رصيف. ومع ذلك ، في الإنتاج ، أقوم فقط بنشر ملف حرب على مثيل رصيف مستقل ، لذلك لا توجد فرصة لتكوين أشياء في كود مثل هذا.
لا يمكنني معرفة كيفية القيام بنفس الشيء عبر ملفات تكوين Jetty. أي مساعدة موضع تقدير.
المكافأة: كيف يمكنك تكوين Maven-Jetty-Plugin لاستخدام CustomWebAppClassloader :)
المحلول
يمكنك استخدام ملفات تكوين السياق. هناك أمثلة في contexts/
الدليل.
سيكون هذا شيئًا على هذا المنوال:
<Configure id="mycontext1" class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="classLoader">
<New class="f.q.n.CustomWebAppClassLoader">
<Arg><Ref id="mycontext1"/></Arg></New>
</Set>
</Configure>
(انظر مرجع تكوين بناء جملة Jetty XML لمزيد من التفاصيل.)
نصائح أخرى
كبديل لاستخدام ملف تكوين السياق ، يمكنك تعيين سمات classloader في ملف pom.xml ، من أجل jetty> = 8.x على سبيل المثال لا تفحص أي فئة داخل ويب-إنف
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty.version}</version>
<configuration>
<webApp>
<webInfIncludeJarPattern>^$</webInfIncludeJarPattern>
</webApp>
<stopKey>foo</stopKey>
<stopPort>9999</stopPort>
</configuration>
</plugin>
</plugins>
المرجعي: تكوين WebApp المكون الإضافي Jetty