我正在尝试使用自定义子类WebAppClassLoader配置Jetty(6.x)WebAppContext。在代码(Scala)中,它就是这样:
val context = new WebAppContext()
val cwacl = new CustomWebAppClassLoader(context)
context.setClassLoader(cwacl)
...
嵌入Jetty时工作正常。但是,在生产中,我只是将一个war文件部署到一个独立的jetty实例,因此没有机会在这样的代码中配置。
我无法弄清楚如何通过Jetty的配置文件做同样的事情。任何帮助表示赞赏。
奖励:您如何配置maven-jetty-plugin以使用CustomWebAppClassLoader:)
答案 0 :(得分:1)
您可以使用上下文配置文件。 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。)
答案 1 :(得分:0)
作为使用上下文配置文件的替代方法,您可以在pom.xml文件中设置classloader属性,对于jetty&gt; = 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>