2011/01/07

Study Notes of Java SSL NIO through O'Reilly on Java.com


Using SSL with Non-Blocking IO, O'Reilly on Java.com



ClientServerSelectorThread註冊,由SelectorThread統一派送事件。
當事件發生時,SelectorThread會呼叫ClientServer提供的Listener

Connector使用一般的SocketChannel連線。

PacketChannel透過Channel類別,
SSL演算法加密或解密從SocketChannel寫入或讀出的資料。
可以將SocketChannel想成網路層,PacketChannel則介於應用程式與SocketChannel之間。

SSLChannel Channel的子類別,可以餵給PacketChannel

PacketChannel實做了ChannelListener
socketChannel寫出或讀入資料時,
PacketChannel中的SSLChannel會自動以SSL加密或解密。

PacketChannel的建構子需要一個PacketChannelListener參數。
PacketChannel會於事件發生時,自動呼叫Listener


Acceptor也使用一般的ServerSocketChannel接收連線。

Acceptor的建構子需要一個AcceptorListener作為參數。
當事件發生時,自動呼叫Listener


截至目前為止,已經理解的類別如下列表:
  • client/MultipleClient
  • handlers/Acceptor
  • handlers/AcceptorListener
  • handlers/Channel
  • handlers/ChannelFactory
  • handlers/ChannelListener
  • handlers/Connector
  • handlers/ConnectorListener
  • handlers/PacketChannel
  • handlers/PacketChannelListener
  • io/AcceptSelectorHandler
  • io/CallbackErrorHandler
  • io/ConnectorSelectorHandler
  • io/ReadWriteSelectorHandler
  • io/SelectorHandler
  • io/SelectorThread
  • server/Server
  • ssl/SSLChannelFactory
  • ssl/SSLChannel
  • ssl/SSLChannelManager

截至目前為止,尚未觸碰到的類別如下列表:
  • handlers/PlainChannelFactory
  • handlers/PlainChannel
  • handlers/SimpleProtocolDecoder
  • io/ProtocolDecoder

上列四個類別,跟SSL無關。主要是用來提供對照組 (無加密的連線)