ALPN callback dropped: SPDY and HTTP/2 are disabled. Is alpn-boot on the boot class path?
尝试获取Apple推送通知以与我的Spring Boot项目一起使用。
我正在使用此
Note: Ensure that you have Jetty's ALPN JAR (OkHttp requires it) in
your boot classpath. See here for more information. This is required
until Java 9 is released, as Java 8 does not have native support for
HTTP/2.
所以我添加了vm选项
1 | Xbootclasspath/p:/Users/sarath/.m2/repository/org/mortbay/jetty/alpn/alpn-boot/8.1.9.v20160720//alpn-boot-8.1.9.v20160720.jar |
在Intellij中运行配置,一切正常。 我收到推送通知。
但是,当我将战争部署到tomcat并尝试发送推送通知时,出现了错误:
1 2 3 4 5 | 20-Apr-2019 13:08:33.400 INFO [OkHttp https://api.development.push.apple.com/3/device/A704797F6E1E284FB081630184A26755B59593715E1CD543483C2136CE24D4FD] okhttp3.internal.Platform$JdkWithJettyBootPlatform.getSelectedProtocol ALPN callback dropped: SPDY and HTTP/2 are disabled. Is alpn-boot on the boot class path? 20-Apr-2019 13:08:34.935 INFO [OkHttp https://api.development.push.apple.com/3/device/A704797F6E1E284FB081630184A26755B59593715E1CD543483C2136CE24D4FD] okhttp3.internal.Platform$JdkWithJettyBootPlatform.getSelectedProtocol ALPN callback dropped: SPDY and HTTP/2 are disabled. Is alpn-boot on the boot class path? 20-Apr-2019 13:08:36.588 INFO [OkHttp https://api.development.push.apple.com/3/device/A704797F6E1E284FB081630184A26755B59593715E1CD543483C2136CE24D4FD] okhttp3.internal.Platform$JdkWithJettyBootPlatform.getSelectedProtocol ALPN callback dropped: SPDY and HTTP/2 are disabled. Is alpn-boot on the boot class path? 20-Apr-2019 13:08:38.109 INFO [OkHttp https://api.development.push.apple.com/3/device/A704797F6E1E284FB081630184A26755B59593715E1CD543483C2136CE24D4FD] okhttp3.internal.Platform$JdkWithJettyBootPlatform.getSelectedProtocol ALPN callback dropped: SPDY and HTTP/2 are disabled. Is alpn-boot on the boot class path? failure: NotificationResponse{error=null, httpStatusCode=-1, responseBody='null', cause=java.io.IOException: unexpected end of stream on okhttp3.Address@d60ab6f0} |
我不确定如何在启动类路径上设置alpn-boot。 我尝试执行
1 | java -Xbootclasspath/p:/Users/sarath/.m2/repository/org/mortbay/jetty/alpn/alpn-boot/8.1.9.v20160720/alpn-boot-8.1.9.v20160720.jar |
从命令提示符。 但这仅显示了一些Java帮助命令。 我不知道jar是否实际上已添加到引导类路径。
我也尝试过使用maven-surefire-plugin,就像这里所说的。 但是仍然出现相同的错误。
这是我的pom.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.cinch</groupId> gch</artifactId> <version>2.0.0</version> <relativePath>../pom.xml</relativePath> </parent> <groupId>com.cinch.gch</groupId> apn</artifactId> <version>1.0.0</version> <packaging>war</packaging> <name>apn</name> <description>Contains push notification services</description> <properties> <java.version>1.8</java.version> 8.1.9.v20160720</alpn-boot-version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> spring-boot-starter-tomcat</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> spring-boot-starter-activemq</artifactId> </dependency> <dependency> <groupId>com.cinch.gch</groupId> core</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.cinch</groupId> gch-cache</artifactId> </dependency> <dependency> <groupId>org.mortbay.jetty.alpn</groupId> alpn-boot</artifactId> <version>${alpn-boot-version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>com.clevertap.apns</groupId> apns-http2</artifactId> <version>1.0.3</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> maven-war-plugin</artifactId> <version>2.6</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> <plugin> maven-surefire-plugin</artifactId> <configuration> -Xbootclasspath/p:/Users/sarath/.m2/repository/org/mortbay/jetty/alpn/alpn-boot/${alpn-boot-version}/alpn-boot-${alpn-boot-version}.jar </argLine> </configuration> </plugin> </plugins> <finalName>gch-apn</finalName> </build> </project> |
我尝试了许多其他操作,但似乎没有任何效果。
正如亚历山大·帕夫洛夫(AlexanderPavlov)在评论中指出的那样。
If it must be on bootpath then you have to put it somewhere and add
-Xbootclasspath option to java command-line arguments in catalina.bat/.sh
我在Tomcat_Home / bin /中创建了一个名为setenv.sh的文件
setenv.sh
1 | export CATALINA_OPTS="-Xbootclasspath/p:/Users/sarath/.m2/repository/org/mortbay/jetty/alpn/alpn-boot/8.1.9.v20160720//alpn-boot-8.1.9.v20160720.jar" |
如果存在,catalina.bat / .sh将自动读取setenv.sh。