关于java:ALPN回调已删除:SPDY和HTTP / 2被禁用。 alpn-boot是否在引导类路径上?

ALPN callback dropped: SPDY and HTTP/2 are disabled. Is alpn-boot on the boot class path?

尝试获取Apple推送通知以与我的Spring Boot项目一起使用。

我正在使用此apns-http2发送推送通知。 在他们的GitGub页面上:

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。