【问题标题】:java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configuredjava.lang.IllegalArgumentException:Jetty ALPN/NPN 未正确配置
【发布时间】:2017-08-19 06:29:46
【问题描述】:

获取java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured,同时使用gRPC(google pub/sub) 发布/使用来自Kafka的消息。

【问题讨论】:

  • 格式化和新标签
  • 你使用的是带有嵌入式 tomcat 的 spring boot 吗?
  • 是的,我们使用带有嵌入式tomcat的spring boot

标签: java spring-boot apache-kafka classloader grpc


【解决方案1】:
  1. 按照 google 的建议,使用 jetty 容器代替 tomcat,此解决方案有效,但在我们的生产中,应用程序部署在 tomcat 容器上,但我当然需要它在生产中的 tomcat 上工作。
  2. 在调试 gRPC 代码时,发现是 guava 版本导致问题,更新了 guava 版本 18.0,(以前版本中缺少某些类),解决了问题,但在 CF 中部署时失败
  3. 自定义的 emebed-tomcat-core,它始终可以正常工作,但团队再次拒绝自定义 tomcat 容器。
  4. Java –jar apm-asset-xxxx.jar - 在本地运行良好,但需要提供自定义命令来启动 CF,没有权限更改 CF 启动过程。
  5. 最后,通过在 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 假如

  6. 用于将 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)。

      【讨论】:

      • 很久以前就尝试过这个选项。
      猜你喜欢
      • 2017-11-16
      • 2018-01-23
      • 2018-07-23
      • 2017-10-07
      • 1970-01-01
      • 2017-09-07
      • 1970-01-01
      • 2017-07-03
      • 2016-11-14
      相关资源
      最近更新 更多