3

使用Google Pubsub列出主題時發生異常,我的web應用程序正在tomcat上運行。Google-Cloud:Jetty ALPN/NPN尚未正確配置

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異常:碼頭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(NettyCh annelBuilder.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) at io.grpc.internal.ManagedChannelImpl $ LbHelperImpl $ 5.run(ManagedChannelImpl.java:724) at io.grpc.internal.ChannelExecutor.drain(ChannelExe cutor.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) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java :617) 在java.lang.Thread.run(Thread.java:745)

+0

我面對同樣的問題**谷歌雲扳手**,任何人都可以請分享任何可以幫助我的東西。 –

+0

這個問題是未來版本中Tomcat和GRPC之間的不兼容問題,[將被修復](https://github.com/grpc/grpc-java/issues/2996)。在[這個其他問題](https://stackoverflow.com/questions/44921783/tomcat-and-grpc-both-upgrade-to-ssl)中詳細介紹的解決方法是使用與netty兼容的grpc-java 1.4.0 -tcnative v2.0.5。 –

回答

-1

有在github一個可能的解決方案: 「Exception when configuring SSL: "Jetty ALPN/NPN has not been properly configured.

的建議的步驟,從上述文獻引用:

1)編輯catalina.sh /usr/local/Cellar/tomcat/8.5.3/libexec/bin/catalina.sh

2)在管線103中,添加以下 CATALINA_OPTS = 「 - javaagent:/Library/Tomcat/lib/jetty-alpn-agent-2.0.6.jar」

3)重新啓動Tomcat ../bin/shutdown.sh ../bin/startup.sh

+0

我試過這個,不適用於我的。 – user3629214

1

我用Netty 4.1.1版本觀察過這個問題。最後但沒有t與4.1.13.Final。檢查你的傳遞依賴。 I.e Spring Boot引用Netty。

我說什麼POM以使其與扳手API版本0.22.0-β工作:

<properties> <v.netty>4.1.13.Final</v.netty> </properties> ... <dependencyManagement> <dependencies> <dependency> <groupId>io.netty</groupId> <artifactId>netty-codec</artifactId> <version>${v.netty}</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-codec-http</artifactId> <version>${v.netty}</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-codec-http2</artifactId> <version>${v.netty}</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-handler</artifactId> <version>${v.netty}</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-common</artifactId> <version>${v.netty}</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-handler-proxy</artifactId> <version>${v.netty}</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-transport</artifactId> <version>${v.netty}</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-resolver</artifactId> <version>${v.netty}</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-codec-socks</artifactId> <version>${v.netty}</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-buffer</artifactId> <version>${v.netty}</version> </dependency> </dependencies> </dependencyManagement>

如果問題仍然存在,或者如果它是不是一種選擇,plase運行你的JVM適當的引導類路徑條目,如:

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

確保與alpn罐子的位置,以取代/tmp/alpn-boot-8.1.11.v20170118.jar您的JVM版本匹配在本頁列出:https://www.eclipse.org/jetty/documentation/9.4.x/alpn-chapter.html