代码之家  ›  专栏  ›  技术社区  ›  Drunken Daddy

已丢弃ALPN回调:禁用SPDY和HTTP/2。alpn引导是否在引导类路径上?

  •  0
  • Drunken Daddy  · 技术社区  · 6 年前

    尝试让Apple推送通知与我的Spring引导项目一起工作。

    我用这个 apns-http2 用于发送推送通知。从他们的GitGub页面:

    注意:确保您在 你的引导类路径。有关详细信息,请参阅此处。这是必需的 直到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引导。我试图执行

    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插件,就像上面说的那样 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 回复  |  直到 6 年前
        1
  •  2
  •   Drunken Daddy    6 年前

    正如Alexanderpavlov在评论中指出的那样。

    如果它必须在引导路径上,那么您必须将它放在某个地方并添加 Xbootclasspath选项在Calalina .BAT/.SH中的Java命令行参数

    我在tomcat_home/bin中创建了一个名为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(如果存在)。