在我的ServletFilter中,我想使用HttpServletRequest实现中公开的特定jetty API。
我是这样推出的:
final Request jettyRequest = Request.getBaseRequest(request)
如果我想避免ClassNotFoundException,我必须将jetty-server工件添加到我的maven依赖项中。但是,如果我这样做,getBaseRequest返回null,因为'request instanceof Request'返回false而不是true。
这肯定是由于jetty和应用程序类加载器之间的冲突,因为它们都加载了'org.eclipse.jetty.server.Request'类。我尝试了几种配置,但是如果没有在WEB-INF / lib中添加依赖项,我就无法将Request类暴露给我的webapp,这会导致类路径问题。
我的应用程序是使用“mvn jetty:run-forked”启动的,并且配置如下:
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty-version}</version>
<configuration>
<webAppSourceDirectory>${project.build.directory}/${project.name}</webAppSourceDirectory>
<systemProperties>
<force>true</force>
</systemProperties>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webAppConfig>
<contextPath>/</contextPath>
</webAppConfig>
<jettyXml>../jetty.xml,../jetty-ssl.xml,../jetty-https.xml</jettyXml>
<jvmArgs>-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Xbootclasspath/p:${settings.localRepository}/org/mortbay/jetty/alpn/alpn-boot/${alpn-version}/alpn-boot-${alpn-version}.jar</jvmArgs>
</configuration>
</plugin>
任何帮助将不胜感激!
答案 0 :(得分:0)
我通过添加包含以下内容的WebAppContext配置文件来修复此问题:
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="parentLoaderPriority">true</Set>
</Configure>
该文件必须在jetty-maven-plugin中引用,如:
<contextXml>../jetty-context.xml</contextXml>