br.gov.ans.tiss.nucleo
Class Servidor

java.lang.Object
  extended by java.lang.Thread
      extended by br.gov.ans.tiss.nucleo.Servidor
All Implemented Interfaces:
java.lang.Runnable

public class Servidor
extends java.lang.Thread

Um agente capaz de responder pela recepção de mensagens TISS, enviadas por um cliente remoto.


Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
private  boolean bidirecional
          Flag que indica se o servidor deve ou não atuar de forma bidirecional.
private  java.lang.String chaveSecundaria
          A raíz da chave secundária RIJNDAEL usada nas transmissões.
private  Conexao conexao
          A conexão que o servidor opera.
private  Despachante despachante
          O despachante associado ao servidor.
private  boolean handshakeOk
          Flag que indica se o handshake foi bem sucedido.
private  java.beans.PropertyChangeSupport propertyChangeSupport
          Suporte à adição de listeners para mudanças em propriedades.
private static java.lang.String THREAD_NAME
          O nome convencionado para a thread que roda o servidor.
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
Servidor(Conexao pConn)
          Constrói um servidor a partir de uma conexão pronta, que se supõe aberta.
Servidor(java.net.Socket sck)
          Constrói um servidor para um soquete comum.
Servidor(javax.net.ssl.SSLSocket sck)
          Constrói um servidor a partir de um SSLSocket.
 
Method Summary
 void addPropertyChangeListener(java.beans.PropertyChangeListener l)
          Adiciona um listener para mudanças em propriedades do servidor.
 java.lang.String despachaMensagem(java.lang.String pMensagem)
          Repassa a mensagem recebida ao despachante, para tratamento.
 java.lang.String getChaveSecundaria()
          Getter para chaveSecundaria.
 Conexao getConexao()
          Getter para conexao.
 Despachante getDespachante()
          Getter para despachante.
 boolean isBidirecional()
          Getter para bidirecional.
 boolean isHandshakeOk()
          Getter para handshakeOk.
protected  java.lang.String leMensagem()
          Espera e lê uma mensagem vinda pela conexão que o servidor opera.
protected  void preparaAmbiente(java.net.Socket pSock)
          Inicializa a conexão e os parâmetros do servidor, qualquer que seja o construtor usado.
 void removePropertyChangeListener(java.beans.PropertyChangeListener l)
          Remove um listener para mudanças em propriedades do servidor.
 void run()
          Loop principal de execução do servidor.
 void setBidirecional(boolean bidirecional)
          Setter para bidirecional.
 void setConexao(Conexao conexao)
          Setter para conexao.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

THREAD_NAME

private static final java.lang.String THREAD_NAME
O nome convencionado para a thread que roda o servidor.

See Also:
Constant Field Values

despachante

private Despachante despachante
O despachante associado ao servidor.


propertyChangeSupport

private java.beans.PropertyChangeSupport propertyChangeSupport
Suporte à adição de listeners para mudanças em propriedades.


conexao

private Conexao conexao
A conexão que o servidor opera.


chaveSecundaria

private java.lang.String chaveSecundaria
A raíz da chave secundária RIJNDAEL usada nas transmissões.


handshakeOk

private boolean handshakeOk
Flag que indica se o handshake foi bem sucedido.


bidirecional

private boolean bidirecional
Flag que indica se o servidor deve ou não atuar de forma bidirecional. Servidores de operadoras são sempre bidirecionais, enquanto os de prestadores são monodirecionais.

Constructor Detail

Servidor

public Servidor(javax.net.ssl.SSLSocket sck)
         throws java.lang.Exception
Constrói um servidor a partir de um SSLSocket.

Parameters:
sck - O SSLSocket que o servidor operará.
Throws:
java.lang.Exception - ,

Servidor

public Servidor(java.net.Socket sck)
         throws java.lang.Exception
Constrói um servidor para um soquete comum.

Parameters:
sck - O soquete comum.
Throws:
java.lang.Exception - .

Servidor

public Servidor(Conexao pConn)
Constrói um servidor a partir de uma conexão pronta, que se supõe aberta.

Parameters:
pConn - A conexão que o servidor operará.
Method Detail

preparaAmbiente

protected void preparaAmbiente(java.net.Socket pSock)
Inicializa a conexão e os parâmetros do servidor, qualquer que seja o construtor usado. Inclui a formação da chave secundária RIJNDAEL de criptografia.

Parameters:
pSock - O soquete (SSL ou comum) a ser usado na inicialização.

leMensagem

protected java.lang.String leMensagem()
Espera e lê uma mensagem vinda pela conexão que o servidor opera.

Returns:
A mensagem lida, ou null, se nada tiver sido lido.

run

public void run()
Loop principal de execução do servidor. É isto que acaba sendo rodado pelo Ouvinte, quando o servidor é iniciado após o atendimento da conexão.

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread

despachaMensagem

public java.lang.String despachaMensagem(java.lang.String pMensagem)
Repassa a mensagem recebida ao despachante, para tratamento.

Parameters:
pMensagem - O texto da mensagem, já decriptado.
Returns:
A mensagem de erro, ou null, se tudo tiver ido bem.

getDespachante

public Despachante getDespachante()
Getter para despachante.

Returns:
O despachante.

addPropertyChangeListener

public void addPropertyChangeListener(java.beans.PropertyChangeListener l)
Adiciona um listener para mudanças em propriedades do servidor.

Parameters:
l - O listener a adicionar.

removePropertyChangeListener

public void removePropertyChangeListener(java.beans.PropertyChangeListener l)
Remove um listener para mudanças em propriedades do servidor.

Parameters:
l - O listener a remover.

getConexao

public Conexao getConexao()
Getter para conexao.

Returns:
Valor de conexao.

setConexao

public void setConexao(Conexao conexao)
Setter para conexao.

Parameters:
conexao - Valor de conexao.

getChaveSecundaria

public java.lang.String getChaveSecundaria()
Getter para chaveSecundaria.

Returns:
Valor de chaveSecundaria.

isHandshakeOk

public boolean isHandshakeOk()
Getter para handshakeOk.

Returns:
TRUE ou FALSE.

isBidirecional

public boolean isBidirecional()
Getter para bidirecional.

Returns:
TRUE ou FALSE.

setBidirecional

public void setBidirecional(boolean bidirecional)
Setter para bidirecional.

Parameters:
bidirecional - Novo valor para este flag.