Frage

Ich versuche, eine Anlegestelle (6.x) WebAppContext mit einer benutzerdefinierten Unterklasse von WebAppClassLoader . In Code (Scala), es ist einfach so:

  val context = new WebAppContext()
  val cwacl = new CustomWebAppClassLoader(context)
  context.setClassLoader(cwacl)
  ...

Das funktioniert gut, wenn Jetty einzubetten. In der Produktion aber ich implementieren nur eine WAR-Datei zu einem eigenständigen Anlegestelle Beispiel, so gibt es keine Möglichkeit, zu konfigurieren Dinge in Code wie folgt.

Ich kann nicht herausfinden, wie die gleiche Sache über Jetty Konfigurationsdateien zu tun. Jede Hilfe ist willkommen.

Bonus: Wie würden Sie configure Maven-Anlegestelle-Plugin die CustomWebAppClassLoader zu verwenden:)

War es hilfreich?

Lösung

Sie können die Kontextkonfigurationsdateien verwenden. Es gibt Beispiele in dem contexts/ Verzeichnis.

Dies würde etwas in diese Richtung sein:

<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>

(Siehe Jetty XML Syntax Konfiguration Referenz für weitere Details.)

Andere Tipps

Als Alternative einer Kontextkonfigurationsdatei zu verwenden, können Sie die Klassenlader Attribute in der pom.xml-Datei festgelegt, für Anlegesteg> = 8.x z.B. jede Klasse innerhalb WEB-INF wenn nicht nach schneller starten:

<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>

Referenz: Jetty Plugin Webapp Konfiguration

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top