【问题标题】:How to use org.eclipse.jetty.server.Request in a webapp?如何在 web 应用程序中使用 org.eclipse.jetty.server.Request?
【发布时间】: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


【解决方案1】:

我通过添加包含以下内容的 WebAppContext 配置文件解决了该问题:

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
    <Set name="parentLoaderPriority">true</Set>
</Configure>

该文件必须像这样在 jetty-maven-plugin 中引用:

<contextXml>../jetty-context.xml</contextXml>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 2021-06-11
    • 2010-11-23
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    相关资源
    最近更新 更多