使用Jmeter4,Java 10 No Client ALPNProcessors导致HTTP2请求样本崩溃

时间:2018-07-19 14:34:00

标签: java jmeter jetty http2

我无法使用Jmeter 4.0创建HTTP2请求。 我已经安装了最新的JDK和HTTP / 2协议采样器插件。

我还观察到:“ penJDK8ClientALPNProcessor @ e23ec5a不适用于Java 10.0.2” 使用Java 9进行了尝试,但我得到了同样的东西。

PS:我已经尝试添加JVM_ARGS = ...

完整的堆栈跟踪为:

GetDescription()

3 个答案:

答案 0 :(得分:3)

HTTP/2 Sampler的默认安装使用依赖项...

Install library: http2-client
Install library: jetty-alpn-openjdk8-client
Install library: jetty-alpn-client
Install library: http2-common
Install library: http2-hpack
Install library: jetty-io
Install library: jetty-http
Install library: jetty-util
Install plugin: bzm-http2 1.2

此依赖性列表对于Java 9+无效。

尤其是,jetty-alpn-openjdk8-client依赖项无效,不适用于Java 9+。 对于Java 9+,应改为使用jetty-alpn-java-client

历史:

在Java 8时代,需要支持HTTP / 2,这需要TLS的ALPN层。

Java 8没有对ALPN的官方支持,因此Jetty项目维护了JVM -Xbootclasspath/p:<path-to-alpn-boot.jar>替代JVM中的核心SSL层,以允许使用ALPN。

这是JVM本身未提供的自定义API。

https://www.eclipse.org/jetty/documentation/current/alpn-chapter.html

Jetty之外的其他项目也开始使用此API。

当Java 9网络讨论开始时,需要将ALPN支持引入到JVM本身。

openjdk的这项工作成为ALPN的官方API。

此新的官方API与Jav​​a 8 API不同。

简而言之,您必须为正在使用的JVM使用适当的API层。

如果要对此提供支持,请在jmeter-plugins forum上打开一个新主题(可参考此stackoverflow答案)

答案 1 :(得分:0)

关注

  

pen JDK8 ClientALPNProcessor

我的期望是您必须使用Java 8 SE才能使插件正常工作。

参考文献:

答案 2 :(得分:0)

使用码头9.4.19.v20190610:

    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-alpn-java-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-alpn-conscrypt-client</artifactId>
    </dependency>