如何通过配置在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>
答
作为替代使用上下文配置文件,您可以设置的类加载器的属性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>
谢谢,布鲁诺!这似乎是一个窍门。 – overthink 2010-09-15 15:08:49