java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured

后端 未结 5 1953
鱼传尺愫
鱼传尺愫 2021-01-21 05:05

Getting java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured, while using gRPC(google pub/sub) to publish/consumes messa

相关标签:
5条回答
  • 2021-01-21 05:11

    Finally, went back to boot class class path approach. Prefixed the jetty-alpn.jar to boot class path and it starts working fine in cloud foundry now.

    0 讨论(0)
  • 2021-01-21 05:17

    In POM, try to place the gRPC dependency before the spring boot dependency (the order of dependencies matters). I did that and the issue was solved. For example:

    <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>
    
    0 讨论(0)
  • 2021-01-21 05:20

    Try adding a runtime dependency on netty-tcnative-boringssl-static. See gRPC's SECURITY.md. Note that the version of netty-tcnative necessary changes over time; you should look at the version of the document for a particular release (e.g., this is for 1.2.0).

    0 讨论(0)
  • 2021-01-21 05:25
    1. As suggested by google, use jetty container instead of tomcat, this solution works, but in our production, applications deployed on tomcat container, but of course I need it to work on tomcat in production.
    2. On debugging the gRPC code, found that guava version causing the issue, updated the guava version 18.0, (where in some classes missed in previous versions), solved the problem , but failed while deploying in CF
    3. Customized emebed-tomcat-core, and it works fine consistently, but again, team say no to custom tomcat container.
    4. Java –jar apm-asset-xxxx.jar – works fine locally, but need to provide a custom command to CF start, didn’t have luxury to change the CF start process.
    5. Finally, trick, the class loader to use tcnative-boring-ssl, library instead of tomcat-core library at runtime, by providing the following dependency in pom.xml. For the past 3 days, this solution is working CF.

      org.springframework.boot spring-boot-starter-web org.hibernate * org.apache.tomcat.embed tomcat-embed-core org.apache.tomcat.embed tomcat-embed-core provided

    6. Maven manifest plugin to promote the tc-native library to the top in the classloader.

    0 讨论(0)
  • 2021-01-21 05:35

    Adding the ALPN client JAR which matches my JDK version fixed this issue for me. In eclipse, you need to set up the jar as a bootstrap entry for the tomcat server.

    You can find more info about it here : https://medium.com/@Parithi/jetty-alpn-npn-has-not-been-properly-configured-solution-418417ee6502

    0 讨论(0)
提交回复
热议问题