【发布时间】:2015-06-10 06:55:28
【问题描述】:
在我的 ServletFilter 中,我想使用在 HttpServletRequest 实现中公开的特定码头 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>
任何帮助将不胜感激!
【问题讨论】:
-
为什么需要访问 Jetty 内部的
Request对象? (此对象会随着每次发布的 Jetty 发生变化) -
我正在为需要特定于服务器的 API 的 Web 应用程序提供实验性的服务器推送支持。在 Jetty 上,我想从 Jetty Request 类访问 PushBuilder API。
标签: maven jetty classpath maven-jetty-plugin jetty-9