Home

Frameworkjoi

Page tree
Skip to end of metadata
Go to start of metadata

Timeout Progress e DATASUL simultâneos é um complemento do Timeout Progress, possibilitando o uso do timeout DATASUL (menu Flex e HTML) de forma simultânea em conjunto com o timeout Progress. O foco da solução é exclusivamente para os usuários 'presos' no banco de dados Progress, quando ocorre a perda da comunicação com a parte cliente (por fatores externos, como: energia ou rede). A seguir são apresentados alguns pré-requisitos, configurações e informações da funcionalidade. 

 

Importante!

  • As licenças presas no License Server (LS) devem ser desconectadas pelo timeout padrão do próprio LS.
  • Funcionalidade homologada apenas para ambientes que fazem o uso de banco de dados Progress.

Matriz de Evolução

Versão / ReleaseFuncionalidade
12.1.17Timeout Progress e DATASUL simultâneos.

Configurações

EtapaDescrição
1Configurar Timeout Progress, http://tdn.totvs.com/display/FRAMJOI/Timeout+Progress
2

Configurar Timeout DATASUL, http://tdn.totvs.com/display/FRAMJOI/Timeout+DATASUL

3

Criar arquivo de configuração de servidores web servidor-web.xml.

  1. O arquivo servidor-web.xml, deve ser criado na pasta conf do PROPATH utilizado pelo servidor RPW.
  2. Por padrão, não existe uma pasta conf no PROPATH, a mesma deve ser criada em uma estrutura do PROPATH válida para que o arquivo servidor-web.xml seja localizado.
4Executar o Programa btb934aa, verificar a documentação do programa btb/btb934aa
  • Os registros das sessões Progress dos usuários conectados no banco de dados Progress, são armazenados no mapa de sessões no servidor de aplicação Java. Esses registros das sessões só serão removidos nos cenários abaixo:
    • Quando ocorrer o Timeout DATASUL(menu html ou menu Flex);
    • Fechar o Datasul Interactive;
    • Logout do Produto;
    • Quando ocorrer o Timeout de sessão do servidor de aplicação Java 'JBOSS' (30 minutos - valor padrão).
  • A desconexão no banco de dados não ocorre imediatamente após a perda da comunicação na parte cliente, para que ocorra são considerados dois fatores:
    • A sessão do servidor de aplicação Java (JBOSS), deve ser desconectada nos cenários informados anteriormente.
    • A desconexão ocorre via servidor RPW, que deve estar continuamente em execução, no qual o mesmo verificará se há alguma sessão ativa.

 

Exemplo de configuração do arquivo servidor-web.xml para um ou mais servidores web

O arquivo servidor-web.xml contém informações dos servidores web, que serão requisitados por meio do programa btb/btb934rp, para validações de sessões web.

 

Aviso!

O arquivo servidor-web.xml deve ser criado no formato UTF-8

 

Exemplo 1: servidor-web.xml

<servidorWeb>
  <servidorWebRow>
    <host>cordas</host>
	<port>8080</port>
	<context>menu-html</context>
	<state>1</state>
  </servidorWebRow>    
</servidorWeb>


Exemplo 2: servidor-web.xml

<servidorWeb>
  <servidorWebRow>
    <host>10.80.80.70</host>
	<port>8280</port>
	<context>menu-html</context>
	<state>0</state>
  </servidorWebRow>    
  <servidorWebRow>
    <host>cordas</host>
	<port>8080</port>
	<context>menu-html</context>
	<state>1</state>
  </servidorWebRow>  
</servidorWeb>


Descrição dos elementos do arquivo servidor-web.xml

ElementosDescrição
hostNome ou IP do servidor JBOSS
portPorta do servidor JBOSS
contextContexto utilizado para acesso do produto (datasul ou menu-html)
stateIndica se o servidor será requisitado ou não pelo programa BTB934rp (Valor zero “0” representa o estado desativado e Valor um “1” representa o estado ativado).

 

Arquitetura da solução


 

EtapaDescrição
1

O usuário acessa o produto, nesse momento é criada uma sessão web,  essa sessão fica armazenada no mapa de sessões do servidor Java "JBOSS".

  • Exemplo de log no servidor de aplicação Java: 
    • Menu HTML: EIPFlexServerSessionManagerHTML sessao 'DD8B9E2EEE092D10CA59DCF26B1A2926' criada com sucesso.
    • Menu FLEX: EIPFlexServerSessionManager sessao 'DD8B9E2EEE092D10CA59DCF26B1A2926' criada com sucesso
2O Navegador faz uma requisição para o servidor de aplicação Java, solicitando a abertura do Datasul Interactive.
3A sessão Progress (Datasul Interactive) abre conexão remota com o banco de dados.
4

O Datasul Interactive realiza uma requisição no servidor  de aplicação Java, informando sobre a abertura do DI, fazendo o uso dos servlets abaixo:

  • EIPFlexSessionSendToFlex para menu FLEX
  • EIPFlexSessionSendToHTML para menu HTML
5

O Servlet recebe a requisição do Datasul Interactive e adiciona registro no mapa de sessões progress, fazendo o uso da sessionID como chave do mapa e nome do usuário no valor do mapa.

  • Exemplo de log no servidor de aplicação Java: ProgressSessionManager addSession - DD8B9E2EEE092D10CA59DCF26B1A2926 - super
6O Datasul Interactive registra o nome do usuário da sessão progress no banco de dados (men/men906za - piSetUserDB).
7Servidor RPW executando o programa BTB934rp, responsável por realizar o proshut dos usuários do banco de dados progress.
8

O programa BTB934rp, realiza a leitura do arquivo servidor-web.xml e mantém na memória até a finalização da sua execução.

9O programa BTB934rp, percorre os registros dos usuários que entram nas regras de timeout Progress para desconexão.
10

Etapa de validação de sessão web por usuário conectado no banco de dados Progress, Para cada usuário é realizada uma requisição no servidor de aplicação Java.

Tabela com descrições das etapas para validação da sessão web
1

Verificar se existe o arquivo servidor-web.xml, o arquivo é utilizado para criar requisição na validação de sessão web.

  1. Retorno OK - READ-XML - conf/servidor-web.xml - OK
  2. Retorno NOK - READ-XML - conf/servidor-web.xml - NOK
2Se não existir o arquivo servidor-web.xml, é ignorada a validação de sessão web e segue o fluxo normal do Timeout Progress para desconexão de usuário do banco de dados.
3

Se existir o arquivo servidor-web.xml, é realizada requisição nos servidores de aplicação Java, para validação de sessão web.

  • O programa BTB934, faz o uso da procedure verificarSessaoWebUsuario, tendo como retorno os valores true ou false.
    • Retorno TRUE / YES – indica que existe uma sessão web utilizando uma sessão progress, e não deve desconectar o usuário do banco de dados.
    • Retorno FALSE / NO – indica que não existe uma sessão web utilizando uma sessão progress, e pode realizar o desconectar o usuário do banco de dados.
  • Exemplo de Log Progress:
  • Exemplo de log no servidor de aplicação Java:
    • ProgressSessionManager existsProgressSession - super - true
    • Menu HTML - EIPFlexSessionSendToHTML existsProgressSession codUsuario:super true
    • Menu Flex - EIPFlexSessionSendToFlex existsProgressSession codUsuario:super true
11 A procedure pi-proshut do programa BTB934rp, cria o arquivo .bat com o comando de proshut.
12 A procedure pi-proshut do programa BTB934rp, executa o arquivo .bat com o comando de proshut.