Pushy 0.10 in Tomcat 8 - Native SSL provider not available

902 views
Skip to first unread message

PaulS

unread,
Jun 16, 2017, 11:49:05 AM6/16/17
to pushy
I am trying to upgrade to Pushy 0.10 (from version 0.9.2), and am getting the following error:

2017-06-16 16:32:01 [org.springframework.scheduling.quartz.SchedulerFactoryBean#2_Worker-1] INFO  com.turo.pushy.apns.SslUtil - Native SSL provider not available; will use JDK SSL provider.
2017-06-16 16:32:02 [nioEventLoopGroup-2-1] WARN  io.netty.channel.ChannelInitializer - Failed to initialize a channel. Closing: [id: 0x762013bf]
java
.lang.RuntimeException: ALPN unsupported. Is your classpath configured correctly? For Conscrypt, add the appropriate Conscrypt JAR to classpath and set the security provider. For Jetty-ALPN, see http://www.eclipse.org/jetty/documentation/current/alpn-chapter.html#alpn-starting
        at io
.netty.handler.ssl.JdkAlpnApplicationProtocolNegotiator$FailureWrapper.wrapSslEngine(JdkAlpnApplicationProtocolNegotiator.java:113)
        at io
.netty.handler.ssl.JdkSslContext.configureAndWrapEngine(JdkSslContext.java:249)
        at io
.netty.handler.ssl.JdkSslContext.newEngine(JdkSslContext.java:227)
        at io
.netty.handler.ssl.SslContext.newHandler(SslContext.java:903)
        at com
.turo.pushy.apns.ApnsClient$1.initChannel(ApnsClient.java:186)
        at com
.turo.pushy.apns.ApnsClient$1.initChannel(ApnsClient.java:174)
        at io
.netty.channel.ChannelInitializer.initChannel(ChannelInitializer.java:113)
        at io
.netty.channel.ChannelInitializer.handlerAdded(ChannelInitializer.java:105)
        at io
.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:597)
        at io
.netty.channel.DefaultChannelPipeline.access$000(DefaultChannelPipeline.java:44)
        at io
.netty.channel.DefaultChannelPipeline$PendingHandlerAddedTask.execute(DefaultChannelPipeline.java:1387)
        at io
.netty.channel.DefaultChannelPipeline.callHandlerAddedForAllHandlers(DefaultChannelPipeline.java:1122)
        at io
.netty.channel.DefaultChannelPipeline.invokeHandlerAddedIfNeeded(DefaultChannelPipeline.java:647)
        at io
.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:506)
        at io
.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:419)
        at io
.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:478)
        at io
.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
        at io
.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403)
        at io
.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:462)
        at io
.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
        at io
.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
        at java
.lang.Thread.run(Thread.java:748)
2017-06-16 16:32:02 [nioEventLoopGroup-2-1] INFO  com.turo.pushy.apns.ApnsClient - Failed to connect.
java
.lang.IllegalStateException: Channel closed before HTTP/2 preface completed.
        at com
.turo.pushy.apns.ApnsClient$3.operationComplete(ApnsClient.java:395)
        at com
.turo.pushy.apns.ApnsClient$3.operationComplete(ApnsClient.java:387)
        at io
.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:507)
        at io
.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:481)
        at io
.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:420)
        at io
.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)
        at io
.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:82)
        at io
.netty.channel.AbstractChannel$CloseFuture.setClosed(AbstractChannel.java:1058)
        at io
.netty.channel.AbstractChannel$AbstractUnsafe.doClose0(AbstractChannel.java:686)
        at io
.netty.channel.AbstractChannel$AbstractUnsafe.close(AbstractChannel.java:664)
        at io
.netty.channel.AbstractChannel$AbstractUnsafe.close(AbstractChannel.java:607)
        at io
.netty.channel.DefaultChannelPipeline$HeadContext.close(DefaultChannelPipeline.java:1276)
        at io
.netty.channel.AbstractChannelHandlerContext.invokeClose(AbstractChannelHandlerContext.java:624)
        at io
.netty.channel.AbstractChannelHandlerContext.close(AbstractChannelHandlerContext.java:608)
        at io
.netty.channel.AbstractChannelHandlerContext.close(AbstractChannelHandlerContext.java:465)
        at io
.netty.channel.ChannelInitializer.exceptionCaught(ChannelInitializer.java:92)
        at io
.netty.channel.ChannelInitializer.initChannel(ChannelInitializer.java:117)
        at io
.netty.channel.ChannelInitializer.handlerAdded(ChannelInitializer.java:105)
        at io
.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:597)
        at io
.netty.channel.DefaultChannelPipeline.access$000(DefaultChannelPipeline.java:44)
        at io
.netty.channel.DefaultChannelPipeline$PendingHandlerAddedTask.execute(DefaultChannelPipeline.java:1387)
        at io
.netty.channel.DefaultChannelPipeline.callHandlerAddedForAllHandlers(DefaultChannelPipeline.java:1122)
        at io
.netty.channel.DefaultChannelPipeline.invokeHandlerAddedIfNeeded(DefaultChannelPipeline.java:647)
        at io
.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:506)
        at io
.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:419)
        at io
.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:478)
        at io
.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
        at io
.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403)
        at io
.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:462)
        at io
.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
        at io
.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
        at java
.lang.Thread.run(Thread.java:748)

I am using Tomcat 8 and Java 8 (openjdk version "1.8.0_131").

I have the following in my pom.xml

<dependency>
   
<groupId>com.turo</groupId>
   
<artifactId>pushy</artifactId>
   
<version>0.10</version>
</dependency>

I have also tried with the following netty dependency:

<dependency>
   
<groupId>io.netty</groupId>
   
<artifactId>netty-tcnative-boringssl-static</artifactId>
   
<version>2.0.0.Final</version>
</dependency>

And I have tried with Jetty ALPN (https://github.com/jetty-project/jetty-alpn-agent) including the .jar file - which was working with v 0.9.2 - though I am under the impression this is unnecessary for Pushy 0.10.

Does Pushy 0.10 require Jetty ALPN when running in a Tomcat Container?

What is causing this error? What should I try next?

I found this page, but it only seems relevant for older versions:


j...@turo.com

unread,
Jun 21, 2017, 2:10:40 PM6/21/17
to pushy
It may be worth writing a simple application that checks the value returned by Netty's OpenSssl#unavailabilityCause() method. That might give us some clues. In the meantime, what operating system are you using?

-Jon

Sachin Grover

unread,
Aug 31, 2017, 3:13:04 AM8/31/17
to pushy
Hi ,

I am also getting same error & my OS is windows 8.0 . Please help me to resolve this .
Reply all
Reply to author
Forward
0 new messages