尝试获取Apple Push通知以与我的Spring Boot项目一起使用。
我正在使用此apns-http2
发送推送通知。在他们的github页面上:
注意:确保在其中具有Jetty的ALPN JAR(OkHttp要求) 您的启动类路径。浏览此处获取更多信息。这是必需的 直到Java 9发布为止,因为Java 8不支持 HTTP / 2。
所以我添加了vm选项
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并尝试发送推送通知时,出现了错误:
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。我尝试执行
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,就像它说的here。但是仍然出现相同的错误。
这是我的pom.xml
<?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>
<artifactId>gch</artifactId>
<version>2.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<groupId>com.cinch.gch</groupId>
<artifactId>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>
<alpn-boot-version>8.1.9.v20160720</alpn-boot-version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>com.cinch.gch</groupId>
<artifactId>core</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.cinch</groupId>
<artifactId>gch-cache</artifactId>
</dependency>
<dependency>
<groupId>org.mortbay.jetty.alpn</groupId>
<artifactId>alpn-boot</artifactId>
<version>${alpn-boot-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.clevertap.apns</groupId>
<artifactId>apns-http2</artifactId>
<version>1.0.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>
-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>
我尝试了许多其他操作,但似乎没有任何效果。任何帮助表示赞赏。
答案 0 :(得分:2)
AlexanderPavlov在评论中指出。
如果必须在引导路径上,则必须将其放在某个地方并添加 catalina.bat / .sh中Java命令行参数的-Xbootclasspath选项
我在Tomcat_Home / bin /
中创建了一个名为setenv.sh的文件setenv.sh
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(如果存在)。