Отменен обратный вызов ALPN: SPDY и HTTP / 2 отключены.Находится ли alpn-boot на пути к классу загрузки? - PullRequest
3 голосов
/ 20 апреля 2019

Попытка заставить Apple push-уведомления работать с моим проектом Spring Boot.

Я использую apns-http2 для отправки push-уведомлений.С их страницы GitGub:

Примечание. Убедитесь, что в пути к загрузочному классу у вас есть ALPN JAR от Jetty (это требуется для 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и все работает.Я получаю push-уведомление.

Но когда я разверну войну на tomcat и попытаюсь отправить push-уведомления, я получаю сообщение об ошибке:

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, как написано здесь .Но все равно получаю ту же ошибку.

Вот мой 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>

Я пробовал много других вещей, но ничего не работает.

1 Ответ

2 голосов
/ 30 апреля 2019

Как отметил Александр Павлов в комментариях.

Если это должно быть в пути к загрузке, то вы должны положить его куда-нибудь и добавить Опция -Xbootclasspath для аргументов командной строки java в catalina.bat / .sh

Я создал файл с именем setenv.sh внутри 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, если он присутствует.

...