Heim  >  Artikel  >  Backend-Entwicklung  >  Anmerkungen zur Apache Mina-Studie (3) – IoService

Anmerkungen zur Apache Mina-Studie (3) – IoService

黄舟
黄舟Original
2017-01-18 09:51:201327Durchsuche

In diesem Kapitel sprechen wir über MINAs IoService – eine Basisklasse, die alle I/O-Dienste auf dem Server und Client bereitstellt. Sie wird zum Senden und Empfangen von Nachrichten mit dem Peer, zum Verwalten von Sitzungen, Verbindungen usw. verwendet.

Es handelt sich um eine Schnittstelle, die von IoAcceptor auf der Serverseite und IoConnector auf der Clientseite implementiert wird.

Wir werden diese Schnittstelle in den folgenden Teilen vorstellen:

IoService-Einführung
IoService-Details
IoAcceptor
IoConnector

IoService-Einführung

IoService stellt grundlegende I/O-Dienste im Mina-Framework bereit und verwaltet I/O-Sitzungen. Es ist ein sehr kritischer Teil von Mina.

Anmerkungen zur Apache Mina-Studie (3) – IoService

Wie in der obigen Abbildung erwähnt, hat IoService viele Verantwortlichkeiten:

Sitzungsverwaltung
Filterkettenverwaltung
Handler-Aufruf
Statistik Management
Listening-Management
Kommunikationsmanagement

Methoden in dieser Schnittstelle:

getTransportMetadata();

Wenn IoAcceptor oder IoConnector ausgeführt wird, gibt diese Methode übertragene Metadaten zurück , normalerweise einschließlich Name (nio, apr, txtx), Verbindungstyp (verbindungsorientiert oder verbindungslos).

addListener

Ermöglicht das Hinzufügen eines IoServiceListeners, um auf bestimmte Ereignisse zu warten

removeListener

Entfernt einen angegebenen IoserviceListener

isDisposed

Wenn der Dienst entsorgt ist, geben Sie den Status des Dienstes zurück.

isDisposed

Wenn der Dienst entsorgt wurde, geben Sie den Status des Dienstes zurück.

dispose

Wird verwendet, um alle vom Dienst angeforderten Ressourcen freizugeben. Benutzer müssen zunächst die beiden oben genannten Methoden verwenden, um zu überprüfen, ob der Dienst vollständig entsorgt wurde. Wenn Sie den Dienst herunterfahren möchten, rufen Sie unbedingt diese Methode auf

getHandler

Gibt die mit dem Dienst verknüpfte Methode zurück

setHandler

Setzen Sie die IoHandler löst das Problem, dass der Server eine Anfrage erhält. Der Handler enthält Ihre Programmlogik.

getSessionConfig

gibt die Sitzungskonfiguration zurück.

getFilterChainBuilder

gibt den Filter zurück Wenn die Filterung hinzugefügt werden muss, muss der Chain Builder hinzugefügt werden. Wenn diese Methode aufgerufen werden muss.

IoService-Details

Ioservice Diese Schnittstelle wird durch zwei wichtige Klassen in MINA implementiert: IoAcceptor und IoConnector. Auf der Serverseite müssen Sie IoAcceptor und auf der Clientseite IoConnector auswählen.

IoAcceptor

In MINA gibt es einige bereits implementierte Klassen:

NioSocketAcceptor: der nicht-blockierende Socket-Transport-IoAcceptor
NioDatagramAcceptor: der nicht-blockierende UDP-Transport-IoAcceptor
AprSocketAcceptor: der blockierende Socket-Transport-IoAcceptor, basierend auf APR
VmPipeSocketAcceptor: der In-VM-IoAcceptor

Wählen Sie den IoAcceptor, den Sie benötigen.

Das Bild unten zeigt die IoAcceptor-Klasse und -Schnittstelle

Anmerkungen zur Apache Mina-Studie (3) – IoService

IoConnector

NioSocketConnector: der nicht blockierende Socket-Transport IoConnector
NioDatagramConnector : der nicht blockierende UDP-Transport-IoConnector
AprSocketConnector: der blockierende Socket-Transport-IoConnector, basierend auf APR
ProxyConnector: ein IoConnector, der Proxy-Unterstützung bietet
SerialConnector: ein IoConnector für einen seriellen Transport
VmPipeConnector: der in -VM IoConnector

Anmerkungen zur Apache Mina-Studie (3) – IoService


Das Folgende ist ein Beispiel als Zusammenfassung:

Zum Beispiel, wenn Sie erstellen möchten Als TCP-Server können Sie Code ähnlich dem folgenden schreiben:

public TcpServer() throws IOException {  
    // Create a TCP acceptor  
    IoAcceptor acceptor = new NioSocketAcceptor();  
  
    // Associate the acceptor to an IoHandler instance (your application)  
    acceptor.setHandler(this);  
  
    // Bind : this will start the server...  
    acceptor.bind(new InetSocketAddress(PORT));  
  
    System.out.println("Server started...");  
}

Auf diese Weise wird ein TCP-Server erstellt. Wenn Sie einen UDP-Server erstellen möchten, können Sie ihn in IoAcceptor-Akzeptor = neu ändern NioDatagramAcceptor();

Um die Verbindung freizugeben, können Sie

acceptor.dispose(true)

aufrufen, um eine Filterkette hinzuzufügen und sie dem Dienst hinzuzufügen

// Add a logger filter  
DefaultIoFilterChainBuilder chain = new DefaultIoFilterChainBuilder();  
chain.addLast("logger", new LoggingFilter());  
  
// And inject the created chain builder in the service  
acceptor.setFilterChainBuilder(chain);

Das Obige ist Der Inhalt der Apache Mina-Studiennotizen (3) - IoService. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn