Apache Mina Tutorial: Esempio Client Server di base

1.591 visite

Apache Mina

Apache Mina Tutorial: Esempio Client/Server

Introduzione

Mina sta per ‘Multipurpose Infrastructure for Network Applications’ ed è un Java Framework utile per creare Applicazioni Network altamente scalabili e potenti, con semplicità. In questo articolo cercheremo di scrivere un Apache Mina Tutorial dimostrando come è semplice creare un Server che riceve messaggi da un Client.

Le librerie necessarie sono le seguenti:

  1. Apache Mina 2.0.x jars
  2. slf4j-api.jar
  3. slf4k-jdk14.jar

Il primo Jar è la libreria di Apache Mina che è attualmente arrivata alla versione 2.0.7. Le altre due librerie serviranno per scrivere i log della nostra applicazione.

Server

Creiamo un server composto da due Classi: MyMinaServer e MyMinaServerHandler.

Il MyMinaServer instanzia il IoAcceptor, indica l’ Handler nella Classe MyMinaServerHandler e il tipo di ProtocolCodecFilter da usare, per esempio in caso di scambio messaggi di testo useremo il TextLineCodecFactory.

Se possono creare ProtocolCodecFilter di propria mano a seconda delle proprie esigenze per esempio in caso il protocollo di scambio preveda XML si creerà un filtro che legge direttamente XML e restituisce le informazioni atomiche direttamente all’ Handler.

In altre parole il “ProtocolCodecFilter” è usato per convertire in ricezione un ByteBuffer in un messaggio POJO.

Di seguito il codice della classe MyMinaServer:

Il MyMinaServerHandler sarà una classe che estenderà la Classe di Mina IoHandlerAcceptor. In Questo modo erediterà alcuni metodi in @Override che sono i seguenti:

  1. sessionOpened
  2. messageReceived
  3. sessionIdle
  4. exceptionCaught

Ci sono altri metodi di cui potremmo fare l’@Override ma i 4 indicati sono quelli che serviranno al nostro esempio.

Il metodo SessionOpened verrà chiamato alla creazione del Socket con il Client.

Il metodo MessageReceived verrà chiamato quando viene ricevuto un messaggio.

sessionIdle sarà chiamato quando il canale di comunicazione Socket entra in uno stato Idle di inutilizzo.

exceptionCaught infine entrerà in gioco in caso di una eccezione Client o Server.

Quindi la classe MyMinaServerHandler sarà:

Client

Il Client sarà altresì composto da due classi: MyMinaClient e MyMinaClientHandler.

La classe MyMinaClient instanzia un IoConnector e come il server indica il TextLineCodecFactory nel ProtocolCodecFilter, il logger e la classe Handler.

Infine anche la classe MyMinaClientHandler IoHandlerAdapter e eredita 4 metodi che hanno lo stesso comportamento descritto nel MyMinaServerHandler. Di seguito la classe:

Eseguendo i main delle rispettive classi e attivando il server e poi il client avremo il seguente output:

MyMinaServer output:

 MyMinaClient output:

Iscriviti alla newsletter e rimani sempre aggiornato

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *