كيف يمكن للمرء تعيين مخصص WebAppClassLoader في رصيف من خلال Config؟

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

سؤال

أحاول تكوين مجموعة 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

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