> For the complete documentation index, see [llms.txt](https://software-telematica-com.gitbook.io/suricato-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://software-telematica-com.gitbook.io/suricato-docs/central-tecnica/instalacao-e-configuracao-de-servicos/instalacao-e-configuracao-do-suricato-rep/suricato-repacesso.md).

# Suricato RepAcesso

## Visão Geral

O **Suricato RepAcesso** é composto por uma aplicação principal responsável pela coleta e conversão das marcações dos equipamentos de acesso para o padrão **REP 671-A** e por um serviço de monitoramento que garante sua disponibilidade.&#x20;

## Regras de Negócio

* Instale o **Suricato-RepAcesso-Mgr** como serviço do Windows para garantir o monitoramento automático da aplicação principal.
* Caso o arquivo **PID** não exista ou esteja expirado (mais de 10 minutos sem atualização), o serviço **Suricato-RepAcesso-Mgr** inicia automaticamente uma nova instância do **Suricato-RepAcesso**.

### Pré Requisitos de Instalação

Antes de instalar o sistema, verifique se o ambiente atende aos seguintes requisitos:

* Suricato **3.0** ou superior
* Java **17** ou superior
* Sistema Operacional **Windows 64 bits**

## Componentes do Suricato RepAcesso

### Suricato-RepAcesso-Mgr

O **Suricato-RepAcesso-Mgr** é uma aplicação Java responsável por monitorar a execução do **Suricato-RepAcesso**.

Após ser instalado como serviço do Windows, o monitor executa continuamente as seguintes atividades:

1. Verifica a existência do arquivo **Suricato-RepAcesso.PID**.
2. Caso o arquivo não exista, inicia automaticamente uma nova instância do **Suricato-RepAcesso**.
3. Após a criação do arquivo PID pela aplicação principal, monitora continuamente sua validade.
4. Considera o arquivo inválido quando permanecer sem atualização por mais de **10 minutos**.
5. Reinicia automaticamente o **Suricato-RepAcesso** caso o arquivo esteja ausente ou expirado.

O arquivo **Suricato-RepAcesso.PID** é criado e atualizado exclusivamente pela aplicação principal.

<figure><img src="/files/sAirGWYxk37iV4H96bjb" alt=""><figcaption></figcaption></figure>

### Suricato-RepAcesso

O **Suricato-RepAcesso** é a aplicação principal da solução.

Sua função é coletar as marcações dos equipamentos de acesso, processá-las e convertê-las para o padrão **REP 671-A**. Além disso, a aplicação mantém atualizado o arquivo **Suricato-RepAcesso.PID**, utilizado pelo serviço de monitoramento para validar sua execução.

<figure><img src="/files/Xq4sy1Mwp5MPOgXx6Fo7" alt=""><figcaption></figcaption></figure>

## Como instalar o Suricato RepAcesso como Serviço

{% stepper %}
{% step %}
Extraia o conteúdo do arquivo **Suricato-RepAcesso.zip** para:

```
C:\Program Files\Telematica
```

<figure><img src="/files/ZV2V0Zo8my1drB9bS33v" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Abra o **Prompt de Comando** como administrador, e acesse a pasta onde os arquivos foram extraídos.

<figure><img src="/files/rq4PUhmVnqMMqrHqdvuC" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Execute o arquivo:  `install.bat`

<figure><img src="/files/k3PDim87Z3vRzfN6kSw1" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Verifique se o serviço **suricato\_repacesso** foi criado.

<figure><img src="/files/9XxRK7ewIVDOAzX11rLT" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Configure o serviço para utilizar a conta, ajustando a permissão de logon para:&#x20;

`Conta do Sistema Local`

<figure><img src="/files/Fjtuafcn5UFczaCFX993" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

## Configuração do Java

Quando o ambiente possuir mais de uma versão do Java instalada, poderá ocorrer incompatibilidade durante a inicialização do serviço.

O erro será registrado no arquivo:   `suricato_repacesso-stderr.*.log`

Exemplo:

```
Bootstrap has been compiled by a more recent version of the Java Runtime 
(class file version 61.0), this version of the Java Runtime only recognizes 
class file versions up to 52.0
```

Nesse caso:

{% stepper %}
{% step %}
Execute o comando:  `prunmgr.exe //MS//suricato_repacesso`

<figure><img src="/files/GDAatLfMTdv9vmmGsl54" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Será criado um trayicon ao lado do ícone do relógio no menu iniciar, clique com o botão direito no ícone do serviço e selecione **Configure**.
{% endstep %}

{% step %}
Na aba **Java**, configure o campo **Java Virtual Machine** apontando para a instalação do **Java 17 ou superior**.

<figure><img src="/files/QaRKVmXVGVZt36I6XQY2" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Salve as alterações e reinicie o serviço.
{% endstep %}
{% endstepper %}

## Como configurar o Suricato RepAcesso

### Configuração de Log da Aplicação

O comportamento dos logs é definido no arquivo:  **`log4j2.xml`**

{% stepper %}
{% step %}

#### Appender Console

Utilize este appender apenas para debug e análise. Nesse modo, os logs são exibidos diretamente no console.

```
java -cp Suricato-RepAcesso.jar -Dloader.main=br.com.telematica.suricato.repacesso.
Main org.springframework.boot.loader.PropertiesLauncher
```

{% endstep %}

{% step %}

#### Appender RollingFile

Registra mensagens do nível **INFO** no arquivo:   `suricato-vv.info.log`

O sistema mantém até **11 arquivos**, com tamanho máximo de **10 MB** cada.
{% endstep %}

{% step %}

#### Appender RollingFile – ErrorLogFile

Registra mensagens do nível **ERROR** no arquivo:   `suricato-vv.error.log`

O sistema mantém até **11 arquivos**, com tamanho máximo de **10 MB** cada.
{% endstep %}
{% endstepper %}

## Parametrização da Aplicação

A aplicação utiliza o arquivo:   `application.properties` para definir seus parâmetros de funcionamento.

{% stepper %}
{% step %}

#### Modo de Debug no Log

Ativa ou desativa o modo de depuração dos logs.&#x20;

**Exemplo:** *Ativar Debug:* `debug=true`  /  *Desativar Debug:* `debug=false`
{% endstep %}

{% step %}

#### Intervalo de Sincronização

Define, em milissegundos, o intervalo entre os ciclos de sincronização.

```
refresh.timeout=5000
```

{% endstep %}

{% step %}

#### Intervalo de Monitoramento

Define o tempo, em milissegundos, entre as verificações das threads da aplicação.

```
monitor.timeout=5000
```

{% endstep %}

{% step %}

#### Tamanho máximo de Equipamentos em Memória

Define o limite de equipamentos mantidos simultaneamente em memória.

```
max.device=100
```

{% endstep %}

{% step %}

#### Pool de Threads

Define a quantidade máxima de threads utilizadas para processamento paralelo.

```
max.worker.thread=3
```

{% endstep %}

{% step %}

#### Dados da Configuração do Banco de Dados Microsoft SQL Server

```
spring.profiles.active=MSSQL
spring.datasource.driverclassname=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://127.0.0.1;databaseName=suricato;encrypt=false
spring.datasource.username=suricato
spring.datasource.password=559c77858b83858d95
```

{% endstep %}

{% step %}

#### Configuração do Banco de Dados Oracle

```
#spring.profiles.active=ORACLE
#spring.datasource.driverclassname=oracle.jdbc.OracleDriver
#spring.datasource.url=jdbc:oracle:thin:@( DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE) ) )
#spring.datasource.username=suricato
#spring.datasource.password=559c77858b83858d95
```

{% endstep %}

{% step %}

#### Configuração do Pool de Conexões

```
#maximum number of milliseconds that a client will wait for a connection
spring.datasource.hikari.connection-timeout=60000 
spring.datasource.hikari.connection-test-query=SELECT 1 FROM SURICATO.SURI
#minimum number of idle connections maintained by HikariCP in a connection pool
spring.datasource.hikari.minimum-idle=100          
#maximum pool size
spring.datasource.hikari.maximum-pool-size=3000
#maximum idle time for connection
spring.datasource.hikari.idle-timeout=10000
#maximum lifetime in milliseconds of a connection in the pool after it is closed.
spring.datasource.hikari.max-lifetime=600000
#default auto-commit behavior.
spring.datasource.hikari.auto-commit=true
```

{% endstep %}
{% endstepper %}

## FAQ - Perguntas Frequentes

<details>

<summary>O que acontece se o Suricato-RepAcesso parar de funcionar inesperadamente?</summary>

O serviço **Suricato-RepAcesso-Mgr** monitora continuamente a aplicação principal por meio do arquivo **Suricato-RepAcesso.PID**. Caso esse arquivo deixe de existir ou permaneça sem atualização por mais de 10 minutos, o serviço iniciará automaticamente uma nova instância do **Suricato-RepAcesso**.

</details>

<details>

<summary>Posso alterar o intervalo de sincronização e monitoramento da aplicação?</summary>

Sim. Os parâmetros **refresh.timeout** e **monitor.timeout**, disponíveis no arquivo **application.properties**, podem ser ajustados conforme a necessidade do ambiente. Esses valores são definidos em milissegundos e influenciam a frequência de sincronização e de monitoramento das threads da aplicação.

</details>

<details>

<summary>Como identificar se a aplicação está apresentando erros?</summary>

A aplicação grava os eventos em arquivos de log. As mensagens de funcionamento normal são registradas em **suricato-vv.info.log**, enquanto os erros são registrados em **suricato-vv.error.log**. Esses arquivos são a principal fonte de diagnóstico para identificar falhas na execução da aplicação.

</details>

<details>

<summary>É possível utilizar o Microsoft SQL Server e o Oracle no mesmo ambiente?</summary>

Não. A aplicação deve utilizar apenas um banco de dados por vez. Para isso, configure o perfil correspondente (**MSSQL** ou **ORACLE**) no arquivo **application.properties**, mantendo habilitada apenas a configuração do banco que será utilizado.

</details>

<details>

<summary>Preciso reinstalar o serviço após alterar o arquivo application.properties?</summary>

Não. As alterações realizadas no arquivo **application.properties** não exigem uma nova instalação do serviço. Após salvar as modificações, basta reiniciar o serviço **suricato\_repacesso** para que as novas configurações sejam carregadas.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://software-telematica-com.gitbook.io/suricato-docs/central-tecnica/instalacao-e-configuracao-de-servicos/instalacao-e-configuracao-do-suricato-rep/suricato-repacesso.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
