如何通过配置在Jetty中设置自定义的WebAppClassLoader?

问题描述:

我正在尝试使用WebAppClassLoader的自定义子类来配置Jetty(6.x)WebAppContext。在代码(斯卡拉),它只是这样的:如何通过配置在Jetty中设置自定义的WebAppClassLoader?

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

这工作正常,当嵌入码头。然而,在生产环境中,我只是将一个war文件部署到一个独立的jetty实例中,所以没有机会像这样配置代码。

我不知道如何通过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 Syntax configuration reference。)

+0

谢谢,布鲁诺!这似乎是一个窍门。 – overthink 2010-09-15 15:08:49

作为替代使用上下文配置文件,您可以设置的类加载器的属性pom.xml文件,用于jetty> = 8.x例如不扫描WEB-INF中的任何类来快速启动:

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

参考:Jetty plugin webapp configuration