jmeter HTTP2请求示例在Jmeter4、Java 10没有客户端处理器的情况下崩溃
我无法使用Jmeter 4.0创建HTTP2请求。 我已经安装了最新的JDK和HTTP/2协议采样器插件
我还注意到:penJDK8ClientALPNProcessor@e23ec5a不适用于java 10.0.2“ 尝试使用Java9,但我得到了同样的结果
PS:我已经尝试添加JVM_ARGS=强>
完整的堆栈跟踪是:
java.util.concurrent.ExecutionException: java.lang.IllegalStateException: No Client ALPNProcessors!
at org.eclipse.jetty.util.FuturePromise.get(FuturePromise.java:138)
at com.blazemeter.jmeter.http2.sampler.HTTP2Connection.connect(HTTP2Connection.java:65)
at com.blazemeter.jmeter.http2.sampler.HTTP2Request.setConnection(HTTP2Request.java:247)
at com.blazemeter.jmeter.http2.sampler.HTTP2Request.sample(HTTP2Request.java:121)
at com.blazemeter.jmeter.http2.sampler.HTTP2Request.sample(HTTP2Request.java:107)
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:490)
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:416)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:250)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: No Client ALPNProcessors!
at org.eclipse.jetty.alpn.client.ALPNClientConnectionFactory.<init>(ALPNClientConnectionFactory.java:57)
at org.eclipse.jetty.http2.client.HTTP2Client.lambda$doStart$1(HTTP2Client.java:155)
at org.eclipse.jetty.http2.client.HTTP2Client$ClientSelectorManager.newConnection(HTTP2Client.java:438)
at org.eclipse.jetty.io.ManagedSelector.createEndPoint(ManagedSelector.java:222)
at org.eclipse.jetty.io.ManagedSelector.access$1500(ManagedSelector.java:60)
at org.eclipse.jetty.io.ManagedSelector$CreateEndPoint.run(ManagedSelector.java:825)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:754)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:672)
... 1 more
Suppressed: java.lang.IllegalStateException: org.eclipse.jetty.alpn.java.client.OpenJDK8ClientALPNProcessor@e23ec5a not applicable for java 10.0.2
at org.eclipse.jetty.alpn.java.client.OpenJDK8ClientALPNProcessor.init(OpenJDK8ClientALPNProcessor.java:41)
at org.eclipse.jetty.alpn.client.ALPNClientConnectionFactory.<init>(ALPNClientConnectionFactory.java:77)
... 8 more
# 1 楼答案
调查
我的期望是,你必须使用Java 8 SE才能让插件工作
参考资料:
# 2 楼答案
使用码头9.4.19。v20190610:
# 3 楼答案
默认的HTTP/2 Sampler安装使用依赖项
此依赖项列表对于Java 9+无效
特别是,
jetty-alpn-openjdk8-client
依赖项无效,不适合Java 9+。 对于Java 9+,应该使用jetty-alpn-java-client
历史:
早在Java8时代,就需要支持HTTP/2,这需要TLS的ALPN层
Java 8没有对ALPN的正式支持,因此Jetty项目维护了JVM中核心SSL层的JVM
-Xbootclasspath/p:<path-to-alpn-boot.jar>
替换,以允许使用ALPN这是JVM本身没有提供的自定义API
https://www.eclipse.org/jetty/documentation/current/alpn-chapter.html
Jetty之外的其他项目也开始使用该API
当Java9网络讨论开始时,有人要求将ALPN支持烘焙到JVM中
openjdk的这一努力成为了ALPN的官方API
这个新的官方API与Java8API不同
简而言之,您必须为正在使用的JVM使用适当的API层
如果您希望获得支持,请在jmeter-plugins forum上打开一个新主题(请随时参考此答案)