This works: sslp.setApplicationProtocols(serverAPs); sslSocket.setSSLParameters(sslp); This does not: sslp.setApplicationProtocols(serverAPs); sslServerSocket.setSSLParameters(sslp); When a SSLServerSocketImpl accept()s a connection, it doesn't pass applicationProtocols to the new SSLSocketImpl.