Google-Cloud:Jetty ALPN/NPN 未正确配置 [英] Google-Cloud: Jetty ALPN/NPN has not been properly configured

查看:45
本文介绍了Google-Cloud:Jetty ALPN/NPN 未正确配置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在使用 Google Pubsub 列出主题时出现异常,我的网络应用程序在 tomcat 上运行.

Getting exception whilst using Google Pubsub to list topics, my web application is running on tomcat.

public static List<String> listTopics(GcpCredentials gcCredentials, String project) throws GCPException, IOException
{
    List<String> topics = new ArrayList<>();
    TopicAdminClient client = getTopicClient(gcCredentials);
    ProjectName projectName = ProjectName.create(project);
    ListTopicsPagedResponse response = client.listTopics(projectName);
    for (Topic topic :response.iterateAll())
    {
        topics.add(topic.getNameAsTopicName().getTopic());
    }
    return topics;
}`

异常:

java.lang.IllegalArgumentException: Jetty ALPN/NPN 未正确配置.
在 io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:174)在 io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:151)在 io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:139)在 io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:109)在 io.grpc.netty.NettyChannelBuilder.createProtocolNegotiatorByType(NettyChannelBuilder.java:335)在 io.grpc.netty.NettyChannelBuilder.createProtocolNegotiator(NettyChannelBuilder.java:308)在 io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DynamicNettyTransportParams.getProtocolNegotiator(NettyChannelBuilder.java:499)在 io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.newClientTransport(NettyChannelBuilder.java:448)在 io.grpc.internal.CallCredentialsApplyingTransportFactory.newClientTransport(CallCredentialsApplyingTransportFactory.java:61)在 io.grpc.internal.InternalSubchannel.startNewTransport(InternalSubchannel.java:209)在 io.grpc.internal.InternalSubchannel.obtainActiveTransport(InternalSubchannel.java:186)在 io.grpc.internal.ManagedChannelImpl$SubchannelImplImpl.obtainActiveTransport(ManagedChannelImpl.java:806)在 io.grpc.internal.GrpcUtil.getTransportFromPickResult(GrpcUtil.java:568)在 io.grpc.internal.DelayedClientTransport.reprocess(DelayedClientTransport.java:296)在 io.grpc.internal.ManagedChannelImpl$LbHelperImpl$5.run(ManagedChannelImpl.java:724)在 io.grpc.internal.ChannelExecutor.drain(ChannelExecutor.java:87)在 io.grpc.internal.ManagedChannelImpl$LbHelperImpl.runSerialized(ManagedChannelImpl.java:715)在 io.grpc.internal.ManagedChannelImpl$NameResolverListenerImpl.onUpdate(ManagedChannelImpl.java:752)在 io.grpc.internal.DnsNameResolver$1.run(DnsNameResolver.java:174)在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)在 java.lang.Thread.run(Thread.java:745)

java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured.
at io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:174) at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:151) at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:139) at io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:109) at io.grpc.netty.NettyChannelBuilder.createProtocolNegotiatorByType(NettyChannelBuilder.java:335) at io.grpc.netty.NettyChannelBuilder.createProtocolNegotiator(NettyChannelBuilder.java:308) at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DynamicNettyTransportParams.getProtocolNegotiator(NettyChannelBuilder.java:499) at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.newClientTransport(NettyChannelBuilder.java:448) at io.grpc.internal.CallCredentialsApplyingTransportFactory.newClientTransport(CallCredentialsApplyingTransportFactory.java:61) at io.grpc.internal.InternalSubchannel.startNewTransport(InternalSubchannel.java:209) at io.grpc.internal.InternalSubchannel.obtainActiveTransport(InternalSubchannel.java:186) at io.grpc.internal.ManagedChannelImpl$SubchannelImplImpl.obtainActiveTransport(ManagedChannelImpl.java:806) at io.grpc.internal.GrpcUtil.getTransportFromPickResult(GrpcUtil.java:568) at io.grpc.internal.DelayedClientTransport.reprocess(DelayedClientTransport.java:296) at io.grpc.internal.ManagedChannelImpl$LbHelperImpl$5.run(ManagedChannelImpl.java:724) at io.grpc.internal.ChannelExecutor.drain(ChannelExecutor.java:87) at io.grpc.internal.ManagedChannelImpl$LbHelperImpl.runSerialized(ManagedChannelImpl.java:715) at io.grpc.internal.ManagedChannelImpl$NameResolverListenerImpl.onUpdate(ManagedChannelImpl.java:752) at io.grpc.internal.DnsNameResolver$1.run(DnsNameResolver.java:174) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

推荐答案

我在 Netty 4.1.15.Final 版本中发现了这个问题,但在 4.1.13.Final 中没有.检查您的传递依赖项.即 Spring Boot 引用了 Netty.

I have observed this problem with Netty version 4.1.15.Final but not with 4.1.13.Final. Check your transitive dependencies. I.e Spring Boot references Netty.

我添加到 POM 以使其与 Spanner API 版本 0.22.0-beta 一起使用的内容:

What I added to POM to make it work with Spanner API version 0.22.0-beta:

<代码><属性><v.netty>4.1.13.Final</v.netty></属性>...<依赖管理><依赖项><依赖><groupId>io.netty</groupId><artifactId>netty-codec</artifactId><version>${v.netty}</version></依赖><依赖><groupId>io.netty</groupId><artifactId>netty-codec-http</artifactId><version>${v.netty}</version></依赖><依赖><groupId>io.netty</groupId><artifactId>netty-codec-http2</artifactId><version>${v.netty}</version></依赖><依赖><groupId>io.netty</groupId><artifactId>netty-handler</artifactId><version>${v.netty}</version></依赖><依赖><groupId>io.netty</groupId><artifactId>netty-common</artifactId><version>${v.netty}</version></依赖><依赖><groupId>io.netty</groupId><artifactId>netty-handler-proxy</artifactId><version>${v.netty}</version></依赖><依赖><groupId>io.netty</groupId><artifactId>netty-transport</artifactId><version>${v.netty}</version></依赖><依赖><groupId>io.netty</groupId><artifactId>netty-resolver</artifactId><version>${v.netty}</version></依赖><依赖><groupId>io.netty</groupId><artifactId>netty-codec-socks</artifactId><version>${v.netty}</version></依赖><依赖><groupId>io.netty</groupId><artifactId>netty-buffer</artifactId><version>${v.netty}</version></依赖></依赖项></dependencyManagement>

如果问题仍然存在,或者它不是一个选项,请使用适当的引导类路径条目运行您的 JVM,例如:

If the problem persists, or if it is not an option, plase run your JVM with appropriate bootclasspath entry, like:

java -Xbootclasspath/p:/tmp/alpn-boot-8.1.11.v20170118.jar -cp ...

确保将 /tmp/alpn-boot-8.1.11.v20170118.jar 替换为 匹配您的 JVM 版本 的 alpn jar 位置,如本页所列: https://www.eclipse.org/jetty/documentation/9.4.x/alpn-chapter.html

Make sure to replace /tmp/alpn-boot-8.1.11.v20170118.jar with location of alpn jar that matches your JVM version as listed on this page: https://www.eclipse.org/jetty/documentation/9.4.x/alpn-chapter.html

这篇关于Google-Cloud:Jetty ALPN/NPN 未正确配置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆