Artigo Java Magazine 52 - Conectividade com MINA
Neste artigo veremos como desenvolver aplicações de rede em Java com alto nível de abstração, fazendo uso do Apache MINA (Multipurpose Infrastructure for Network Applications).
Clique aqui para ler esse artigo em PDF.
Conectividade com MINA
Tire proveito do desempenho do New I/O sem escovar bits
Neste artigo veremos como desenvolver aplicações de rede em Java com alto nível de abstração, fazendo uso do Apache MINA (Multipurpose Infrastructure for Network Applications). O MINA é um framework que facilita a codificação de aplicações que requerem conectividade, com foco na flexibilidade, escalabilidade e facilidade de manutenção. Ele faz pelo desenvolvimento de aplicações de rede o que, por exemplo, o framework de coleções do Java SE faz pela programação com conjuntos de objetos. O MINA é baseado nas APIs New I/O (NIO), que foram lançadas com o J2SE 1.4.
O MINA é muito usado para criar servidores e clientes suportando protocolos arbitrários. Neste ponto, o leitor pode perguntar por que desenvolver um servidor desde o início, ao invés de utilizar soluções prontas como o JBoss ou o Tomcat? Temos que ter em mente que esses servidores utio lizam principalmente o protocolo HTTP/ HTTPS para a troca de mensagens, mas que, às vezes, temos que utilizar aplicativos que trabalham com protocolos customizados, que não são suportados por padrão em servidores ou em soluções de integração. Como exemplo, podemos citar um servidor que os autores desenvolveram recentemente para realizar a troca de mensagens entre companhias aéreas, no qual um dos requisitos básicos era a utilização de protocolos como o GIOP (General Inter
Nota 1: O GIOP é o protocolo abstrato, independente de transporte, do middleware CORBA. Sendo que o mais conhecido IIOP é um mapeamento deste protocolo para redes TCP/IP, usado por ORBs CORBA e pelo EJB. |
Arquitetura e conceitos
O MINA suporta a manipulação de bytes e de outros recursos de baixo nível, e também permite adicionar um nível de abstração no recebimento e envio dos dados pela rede. Veremos a seguir como trabalhar nesses dois níveis de abstração.
Camada de I/O: desenvolvendo em baixo nível
Quem necessita realizar operações de entrada e saída (I/O) de baixo nível para serviços simples pode se beneficiar dos recursos do MINA. A arquitetura do framework é dividida
Figura 1. Arquitetura do MINA para I/O de baixo nível
IoSession
Um elemento essencial do MINA (não mostrado na figura) é a interface org.apache. mina.common.IoSession, que representa umaconexão entre o cliente e o servidor. Através de implementações desta interface, é possível obter informações sobre a conexão e acerca da comunicação entre o cliente e o servidor. A Figura 2 destaca essa interface com todos os métodos disponíveis.
Figura 2. Interface IoSession
IoHandler: I/O através de eventos
A interface org.apache.mina.common.IoHandler recebe notificações do MINA sobre os eventos ocorridos e permite que a aplicação responda a esses eventos através de uma instância de IoSession, que encapsula a conexão de rede.
Para facilitar, o MINA provê um classe adaptadora (org.apache.mina.common. IoHandlerAdapter), que já implementa todos os métodos da interface IoHandler. Com isso, é possível redefinir (override) apenas os métodos que serão realmente utilizados. Os métodos da interface IoHandler são os seguintes:
- sessionCreated(): Invocado quando uma conexão é criada, permite configurar parâmetros do socket utilizado para a comunicação, através da propriedade IoSession.config. Nesse método não devem ser realizadas operações de I/O, mas sim apenas configurações.
- sessionOpened(): Chamado após o sessionCreated(), permite a realização de I/O.
- sessionClosed()" [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo