public class SniHandler extends AbstractSniHandler<SslContext>
Enables SNI (Server Name Indication) extension for server side SSL. For clients support SNI, the server could have multiple host name bound on a single IP. The client will send host name in the handshake data so server could decide which certificate to choose for the host name.
| Modifier and Type | Class and Description |
|---|---|
private static class |
SniHandler.AsyncMappingAdapter |
private static class |
SniHandler.Selection |
ByteToMessageDecoder.CumulatorChannelHandler.Sharable| Modifier and Type | Field and Description |
|---|---|
private static SniHandler.Selection |
EMPTY_SELECTION |
protected AsyncMapping<java.lang.String,SslContext> |
mapping |
private SniHandler.Selection |
selection |
COMPOSITE_CUMULATOR, MERGE_CUMULATOR| Constructor and Description |
|---|
SniHandler(AsyncMapping<? super java.lang.String,? extends SslContext> mapping)
Creates a SNI detection handler with configured
SslContext
maintained by AsyncMapping |
SniHandler(DomainNameMapping<? extends SslContext> mapping)
Creates a SNI detection handler with configured
SslContext
maintained by DomainNameMapping |
SniHandler(Mapping<? super java.lang.String,? extends SslContext> mapping)
Creates a SNI detection handler with configured
SslContext
maintained by Mapping |
| Modifier and Type | Method and Description |
|---|---|
java.lang.String |
hostname() |
protected Future<SslContext> |
lookup(ChannelHandlerContext ctx,
java.lang.String hostname)
The default implementation will simply call
AsyncMapping.map(Object, Promise) but
users can override this method to implement custom behavior. |
protected void |
onLookupComplete(ChannelHandlerContext ctx,
java.lang.String hostname,
Future<SslContext> future)
Called upon completion of the
AbstractSniHandler.lookup(ChannelHandlerContext, String) Future. |
protected void |
replaceHandler(ChannelHandlerContext ctx,
java.lang.String hostname,
SslContext sslContext)
The default implementation of this method will simply replace
this SniHandler
instance with a SslHandler. |
SslContext |
sslContext() |
bind, close, connect, decode, deregister, disconnect, flush, read, writeactualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggeredchannelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaughtensureNotSharable, handlerAdded, isSharableclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitexceptionCaught, handlerAdded, handlerRemovedprivate static final SniHandler.Selection EMPTY_SELECTION
protected final AsyncMapping<java.lang.String,SslContext> mapping
private volatile SniHandler.Selection selection
public SniHandler(Mapping<? super java.lang.String,? extends SslContext> mapping)
SslContext
maintained by Mappingmapping - the mapping of domain name to SslContextpublic SniHandler(DomainNameMapping<? extends SslContext> mapping)
SslContext
maintained by DomainNameMappingmapping - the mapping of domain name to SslContextpublic SniHandler(AsyncMapping<? super java.lang.String,? extends SslContext> mapping)
SslContext
maintained by AsyncMappingmapping - the mapping of domain name to SslContextpublic java.lang.String hostname()
public SslContext sslContext()
SslContextprotected Future<SslContext> lookup(ChannelHandlerContext ctx, java.lang.String hostname) throws java.lang.Exception
AsyncMapping.map(Object, Promise) but
users can override this method to implement custom behavior.lookup in class AbstractSniHandler<SslContext>java.lang.ExceptionAsyncMapping.map(Object, Promise)protected final void onLookupComplete(ChannelHandlerContext ctx, java.lang.String hostname, Future<SslContext> future) throws java.lang.Exception
AbstractSniHandlerAbstractSniHandler.lookup(ChannelHandlerContext, String) Future.onLookupComplete in class AbstractSniHandler<SslContext>java.lang.ExceptionAbstractSniHandler.lookup(ChannelHandlerContext, String)protected void replaceHandler(ChannelHandlerContext ctx, java.lang.String hostname, SslContext sslContext) throws java.lang.Exception
this SniHandler
instance with a SslHandler. Users may override this method to implement custom behavior.
Please be aware that this method may get called after a client has already disconnected and
custom implementations must take it into consideration when overriding this method.
It's also possible for the hostname argument to be null.java.lang.Exception