java.lang.IllegalArgumentException:Jetty ALPN/NPN 未正确配置
Posted
技术标签:
【中文标题】java.lang.IllegalArgumentException:Jetty ALPN/NPN 未正确配置【英文标题】:java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured 【发布时间】:2017-08-19 06:29:46 【问题描述】:获取java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured
,同时使用gRPC(google pub/sub)
发布/使用来自Kafka的消息。
【问题讨论】:
请提供minimal reproducible example。 格式化和新标签 你使用的是带有嵌入式 tomcat 的 spring boot 吗? 是的,我们使用带有嵌入式tomcat的spring boot 【参考方案1】:-
按照 google 的建议,使用 jetty 容器代替 tomcat,此解决方案有效,但在我们的生产中,应用程序部署在 tomcat 容器上,但我当然需要它在生产中的 tomcat 上工作。
在调试 gRPC 代码时,发现是 guava 版本导致问题,更新了 guava 版本 18.0,(以前版本中缺少某些类),解决了问题,但在 CF 中部署时失败
自定义的 emebed-tomcat-core,它始终可以正常工作,但团队再次拒绝自定义 tomcat 容器。
Java –jar apm-asset-xxxx.jar
- 在本地运行良好,但需要提供自定义命令来启动 CF,没有权限更改 CF 启动过程。
最后,通过在 pom.xml 中提供以下依赖项,让类加载器在运行时使用 tcnative-boring-ssl 库而不是 tomcat-core 库。在过去的 3 天里,这个解决方案正在运行 CF。
org.springframework.boot spring-boot-starter-web org.hibernate * org.apache.tomcat.embed tomcat-embed-core org.apache.tomcat.embed tomcat-embed-core 假如
用于将 tc-native 库提升到类加载器顶部的 Maven 清单插件。
【讨论】:
老兄,将此添加到问题中。这不是论坛【参考方案2】:添加与我的 JDK 版本匹配的 ALPN 客户端 JAR 为我解决了这个问题。在 Eclipse 中,您需要将 jar 设置为 tomcat 服务器的引导入口。
你可以在这里找到更多信息:https://medium.com/@Parithi/jetty-alpn-npn-has-not-been-properly-configured-solution-418417ee6502
【讨论】:
【参考方案3】:最后,回到引导类类路径的方法。将 jetty-alpn.jar 前缀为引导类路径,它现在开始在 Cloud Foundry 中正常工作。
【讨论】:
【参考方案4】:在 POM 中,尽量将 gRPC 依赖放在 spring boot 依赖之前(依赖的顺序很重要)。我这样做了,问题就解决了。例如:
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-language</artifactId>
<version>0.13.0-beta</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
【讨论】:
依赖顺序无关紧要,它在本地工作,gRPC/tc-native 在 spring-boot 之前。在 Cloud Foundry 中部署时,依赖的 jar 按字母数字顺序提取到 app 文件夹中。 我明白了,那么问题可能与我的不同。我在 Google Cloud 上尝试...【参考方案5】:尝试在 netty-tcnative-boringssl-static 上添加运行时依赖项。请参阅 gRPC 的 SECURITY.md。请注意,netty-tcnative 的版本会随着时间而变化;您应该查看特定版本的文档版本(例如,this is for 1.2.0)。
【讨论】:
很久以前就尝试过这个选项。以上是关于java.lang.IllegalArgumentException:Jetty ALPN/NPN 未正确配置的主要内容,如果未能解决你的问题,请参考以下文章