Dans ce chapitre, nous parlons du IoService de MINA - une classe de base qui fournit tous les services d'E/S sur le serveur et le client. Elle est utilisée pour envoyer et recevoir des messages avec le homologue, gérer les sessions, les connexions, etc.
C'est une interface, implémentée par IoAcceptor côté serveur et IoConnector côté client.
Nous présenterons cette interface dans les parties suivantes :
Introduction à IoService
Détails d'IoService
IoAcceptor
IoConnector
Introduction à IoService
IoService fournit des services d'E/S de base dans le framework Mina et gère les sessions d'E/S. C'est une partie très critique de Mina.
Comme mentionné dans l'image ci-dessus, IoService a de nombreuses responsabilités :
Gestion de session
Gestion de la chaîne de filtres
Appel du gestionnaire
Statistiques
Gestion de l'écoute
Gestion de la communication
Méthodes de cette interface :
getTransportMetadata();
Lorsque IoAcceptor ou IoConnector est en cours d'exécution, cette méthode renvoie les métadonnées transmises , incluant généralement le nom (nio, apr, txtx), le type de connexion (orientée connexion ou sans connexion).
addListener
Permet d'ajouter un IoServiceListener pour écouter les événements spécifiés
removeListener
Supprime un IoserviceListener spécifié
isDisposing
Si le service est supprimé, renvoyez le statut du service
isDisposed
Si le service a été supprimé, renvoyez le statut du service
dispose
Utilisé pour libérer toutes les ressources demandées par le service. Les utilisateurs doivent d'abord utiliser les deux méthodes ci-dessus pour vérifier si le service a été complètement supprimé. Lorsque vous souhaitez arrêter le service, veillez à appeler cette méthode
getHandler
Renvoyer la méthode associée au service
setHandler
Définir le IoHandler pour résoudre le problème que le serveur reçoit la demande, le gestionnaire contient la logique de votre programme
getSessionConfig
renvoie la configuration de la session
getFilterChainBuilder
renvoie le filtre générateur de chaîne lorsque le filtrage doit être ajouté. Quand, cette méthode doit être appelée.
IoService Détails
Ioservice Cette interface est implémentée par deux classes importantes dans MINA : IoAcceptor et IoConnector. Côté serveur, vous devez choisir IoAcceptor, et côté client, vous devez choisir IoConnector.
IoAcceptor
Dans MINA, il existe quelques classes déjà implémentées :
NioSocketAcceptor : le transport Socket non bloquant IoAcceptor
NioDatagramAcceptor : le transport UDP non bloquant IoAcceptor
AprSocketAcceptor : le IoAcceptor de transport Socket bloquant, basé sur APR
VmPipeSocketAcceptor : le IoAcceptor in-VM
Choisissez le IoAcceptor dont vous avez besoin.
L'image ci-dessous est la classe et l'interface IoAcceptor
IoConnector
NioSocketConnector : le transport Socket non bloquant IoConnector
NioDatagramConnector : le transport UDP non bloquant IoConnector
AprSocketConnector : le transport Socket bloquant IoConnector, basé sur APR
ProxyConnector : un IoConnector fournissant un support proxy
SerialConnector : un IoConnector pour un transport série
VmPipeConnector : le in -VM IoConnector
Ce qui suit est un exemple en guise de résumé :
Par exemple, lorsque vous souhaitez créer un serveur TCP, vous pouvez écrire du code similaire à celui-ci
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..."); }
De cette façon, un serveur Tcp est créé. Si vous souhaitez créer un serveur UDP, vous pouvez le changer en IoAcceptor acceptor = new. NioDatagramAcceptor();
Pour libérer la connexion, vous pouvez appeler
acceptor.dispose(true)
pour ajouter une chaîne de filtres et l'ajouter au service
// 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);
Ce qui précède est le contenu des notes d'étude d'Apache Mina (3) - IoService , pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !