Ambiente Desenvolvimento e Produção

De BIS Wiki
Ir para navegação Ir para pesquisar

Ambiente e Versões Homologados

Registro das versões e sistema utilizados durante o processo de certificação do ambiente:

  • Java
    • jdk-20.0.2 x64bits - Para servidor de aplicações
    • jdk-8u301 - Para alguns módulos e aplicações quando necessário. Deve ser documentado no módulo o uso da versão 32 ou 64 bits.
  • IDEs
    • Eclipse: eclipse-jee-2023-06-R-win32-x86_64.zip
  • Servidor de Aplicações
    • wildfly-29.0.0.Final
  • Versionamento
    • Deixamos de utilizar o SVN próprio e utilizar os repositórios privados do GitHub.
    • O Eclipse já vem com o EGit (plugin da própria eclipse instalado e com suporte)

Instalação do WildFly

  1. Faça o 'download' da versão homologada pelo BIS em https://www.wildfly.org/downloads/
  2. Descompacte o conteúdo em 'C:\'


Definindo o caminho do Java

Para garantir que o WildFly utilizará o Java homologado, e não o java padrão disponível no sistema, é preciso forçar o caminho do JAVA_HOME em suas configurações.

  • No Windows
    • Edite o arquivo 'WILDFLY_HOME\bin\standalone.conf.bat'
    • Procure a linha 'rem set "JAVA_HOME=C:\opt\jdk1.6.0_23"', remova o 'rem' e a corrija para que aponte para o JDK homologado
  • No Linux
    • Edite o arquivo 'WILDFLY_HOME\bin\standalone.conf'
    • Procure a linha '#JAVA_HOME="/opt/java/jdk"', remova o '#' e a corrija para que aponte para o JDK homologado

Adicionando Usuário Administrador

  1. Execute o comando WILDFLY_HOME\bin\add-user'
  2. Escolha a opção 'Management User'
  3. Crie o usuário 'bis'
  4. Senha 'biserp2003'
  5. Deixe em branco os grupos adicionais do usuário (apenas pressione ENTER)
  6. Confirme com 'Yes' as próximas perguntas


Erro de JAVA no add-user
Se tiver problemas relacionado a versão do Java provavelmente é por estar utilizando uma versão do Java não compatível com o WildFly. Para executar o script, ou troque sua versão padrão do java para executar esse script, ou edite o arquivo add-user.bat e inclua a linha:
set "JAVA_HOME=c:\Program Files\Java\jdk-20"

antes do código que testa o Java Home:

if "x%JAVA_HOME%" == "x" (



Incluindo o Driver JDBC do MySQL

  1. Baixe o JDBC homologado pelo BIS
    1. Para a versão 8.0.11: baixe com
      wget https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-8.0.11.tar.gz
    2. Descompacte com
      sudo tar -xvf mysql-connector-java-8.0.11.tar.gz
  2. Cria a pasta 'WILDFLY_HOME\modules\system\layers\base\com\mysql\main'
  3. Copie o JAR do JDBC para esta pasta
  4. Crie um arquivo 'module.xml' dentro da pasta com o seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?>
<module name="com.mysql" xmlns="urn:jboss:module:1.9">
    <resources>
        <resource-root path="mysql-connector-java-8.0.11.jar" />
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>


Iniciando o Servidor

Para iniciar o servidor execute o comando 'WILDFLY_HOME\bin\standalone'.


Standalone Vs. Domain
Diferentemente da definição do Glassfish, o modo Domínio é utilizado para rodar múltiplas instâncias do WildFly distribuído em Cluster, Servidores, Etc.

O BIS por enquanto não tem necessidade de rodar em um ambiente dividido em múltiplos servidores e domínios, por isso é executando no modo standalone tanto no ambiente de Homologação quanto de Produção.


Configuração do Datasource

Configuração do Driver JDBC

  1. Com o servidor já em execução, acesse o 'Painel de Administração'.
  2. Acesse 'Configuratoin -> Subsystem -> Datasources & Drivers -> JDBC Drivers'.
  3. Clique no botão de '+' para adicionar uma nova configuração do Driver do MySQL
  4. Complete os campos com as seguintes informações:
    1. Driver Name - MySQL
    2. Driver Module Name - com.mysql
    3. Driver Class Name - com.mysql.cj.jdbc.Driver
    4. Driver XA Datasource Class - com.mysql.cj.jdbc.MysqlXADataSource


Configuração do DataSource BIS10

  1. Acesse 'Configuratoin -> Subsystem -> Datasources & Drivers -> Datasources'.
  2. Clique no Botão '+' e escolha a opção 'Add Datasoruce para adicionar um novo DataSource. (Não seleciona a opção XA!)
  3. Escolha a opção 'Custom'. Apesar de existir uma opção do MySQL, ela não permite as configurações necessárias.
  4. Em Atributes preencha com:
    1. Name - BISDS
    2. JNDI Name - java:/jdbc/BISDS
  5. Em JDBC Driver apenas escolha o driver que configuramos anteriormente MySQL
  6. Em Connection complete com:
    1. Connectino URL - jdbc:mysql://localhost:3306?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=America%2FSao_Paulo
    2. User Name - Usuário do MySQL
    3. Password - Senha do MySQL
    4. Security Domain - deixar em branco
  7. Teste a conexão e finalize a criação do DS


Falha no Teste da Conexão
Algumas vezes, por algum erro, a conexão com o banco de dados falha. Mesmo voltando, arrumando e tentando realizar um novo teste a conexão com o banco falha. Parece que o WildFly tem algum BUG neste sentido. Pois já tive casos de o teste da conexão falhar, e concluí a configuração - apertando finish - e depois que a conexão foi inserida e o servidor 'reloaded', o teste de conexão resultar em sucesso.

Configurações Adicionais Servidor Linux (Produção)

TimeZone

Embora a partir da versão 10 o BIS utilize o LocalDate, o sistema ainda apresenta alguns "pontos falhos" em que se utilizar do TimeZone do sistema. Por isso é necessário que o servidor esteja configurado para o TimeZone 'America/Sao_Paulo'.

Configurando o TimeSync Service no Amazon Linux

  1. Exclua o NTP atual:
    sudo yum erase 'ntp*'
  2. Instale o Chrony:
    sudo yum install chrony
  3. Configure o NTP da Amazon (Talvez o mais recomendado seja instalar o NTP brasileiro, mas confiando que o da amazon terá os horários de verão configurados corretamente, mantive). Edite o arquivo /etc/chrony.conf. Se a linha não existir crie-a depois das instruções server ou pool. Caso exista, recomendo que passe para baixo de todas.
    sudo nano /etc/chrony.conf
    server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
  4. Reinicie o serviço:
    sudo service chronyd restart
    Para visualizar se o server está sendo utilizado corretamente, utilize o comando:
    chronyc sources -v
    Ou as métricas de sincronização com:
    chronyc tracking


Configurando o TimeZone Para ver os TimeZones disponíveis navegue dentro da pasta /usr/share/zoneinfo. Neste tutorial já vamos configurar para America/Sao_Paulo.

  1. Abra o arquivo /etc/sysconfig/clock
    sudo nano /etc/sysconfig/clock
  2. Altere seu conteúdo conforme abaixo:
    ZONE="America/Sao_Paulo"
    UTC=true
  3. Crie um symLink para o arquivo de TimeZone correspondente, conforme exemplo abaixo:
    sudo ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
  4. Reinicie a instância
    sudo reboot
  5. Verifique a data com
    date

Eclipse

Instalação

  1. Baixe o eclipse diretamente do site Eclipse Fundation.
  2. Instale descompactando o .zip em seu local de preferência.


Definição da VM para Execução do Eclipse

Se precisar definir a VM para execução (inicialização) do Eclipse. Edite o arquivo eclipse.ini na raiz do eclipse, e inclua/modifique os parâmetros como o exemplo abaixo:

-vm
c:/Program Files/Java/jdk-19/bin/javaw.exe


Quebra de Linha
Observe que a quebra de linha é obrigatória, cada parâmetro em uma linha separada. A definição da JVM de execução normalmente só é necessária caso o Eclipse apresente erros durante sua inicialização.


JAutoDoc

Este plugin permite que todo o javaDoc criado para um "field" (atributo da classe) seja replicado automaticamente nos métodos Get e Set ao pressionar a tecla de atalho 'CTRL+ALT+J'.

Instalação pelo MarketPlace

  1. Vá em 'Help -> Eclipse Marketplace' e procure por 'JAutoDoc'.
  2. Clique em Instalar siga os passos e Reinicie quando solicitado


Configuração do Módulo

  1. Após a instalação vá no menu 'Windows > Preferences', no caminho 'Java > JAutoDoc' e clique no botão 'Import All...' para importar as configurações usadas no projeto BIS.
  2. O arquivo com as opções salvas ficam no projeto 'BIS' no arquivo 'etc\Environment Setup\jautodoc-eclipse.xml'.


Configurando o JDK e Bibliotecas no Eclipse

Ao carregar o pom.xml do Maven, o Eclipse configurará o projeto para utilizar o Execution Environment de acordo com a versão do JDK definida no arquivo. Por isso, é importante que o Execution Environment do Eclipse esteja apontando para o JDK homologado. Atualmente o Execution Environment é o JavaSE-1.8.


Versão x64 e x32
Embora o BIS esteja homologado para rodar na versão 64bits, alguns módulos e aplicações externas podem requerer a versão 32bits. Um exemplo é o BISPDV que por questões de compatibilidade com DLLs de SAT, Impressoras, PinPads e etc., precisam rodar em 32Bits.

Para estes casos a cada vez que o Eclipse recarregar o pom.xml do Maven, é necessário configurar manualmente que desejamos que o projeto rode no JDK de 32bits homologado.


  1. Vá em 'Windows -> Preferences -> Java -> Installed JREs'
  2. Adicione a instalação do JDK homologado apontando para a pasta do JDK de 64 bits homologado.
  3. Repita o passo anterior para a versão do JDK de 32 bits homologado.
  4. Vá em 'Windows -> Preferences -> Java -> Installed JREs -> Execution Environment e em JavaSE-1.8 escolha o JDK 64bits homologado.


Maven
Desde a adoção do Maven para controlar as bibliotecas de cada projeto não é mais necessário realizar configurações extras de bibliotecas no Eclipse


Configurando o WildFly

Antes de configurar o Servidor é necessário baixar o plugin do servidor.

  1. Vá na aba 'Servidor e click para criar um novo servidor.
  2. Na tela que se abre, escolha 'JBoss AS, WildFly, & EAP Server Tools' e clique em Next. Este passo pode demorar.
  3. Termine os passos do Wizard até finalizar. Aguarde o fim da instalação e reinicie se for solicitado.
  4. Após o término e reinicio do Eclipse, volte à aba 'Servers' e clique em adicionar um novo servidor novamente.
  5. Desta vez escolha a opção 'WildFly27+', e deixe o Server Name como 'WildFly'.
  6. Clique em 'Next.
  7. Na próxima imagem escolha a opção 'Management Operation' para que o Eclipse controle o WildFly corretamente.
    * Para que o eclipse controle adequadamente o a instalação do WildFly precisa ser realizada como orientado nesta página.}}
  8. Na definição de RunTime, selecione o ambiente conforme homologado.
  9. Clique em Finish


Formatação do Código

É importante que todo desenvolvedor formate o código do mesmo modo para que o versionamento do código não passe a tratar as diferentes formatações de código como alterações no arquivo. Para facilitar as configurações o BIS utiliza as mesmas configurações definidas no RFW, e já tem um arquivo de formatação, para usa-lo basta seguir os seguintes passos:


Incompatibilidade de Versões
Durante o processo de migração da versão 2019 para a 2021, ao importar o arquivo de formatação e outras configurações automaticamente o Eclipse passou a apresentar diversos problemas. Como se tivesse importado alguma configuração incompatível que o fazia travar.

Caso isso ocorra, será necessário refazer as configurações manualmente na nova versão da IDE e gerar um novo arquivo de configurações. Por isso o arquivo passou a ter um sufixo com a versão do Eclipse em que ele foi gerado.


  1. Vá em 'Window -> Preferences'
  2. Depois em 'Java -> Code Style -> Formatter' e 'Import...'
  3. Escolha o arquivo 'Eclipse Code Style Formatter.xml' disponível no caminho RFW.Kernel\etc\Eclipse Setup

Organização dos Imports

Organizar os imports segue a mesma lógica da formatação de código, é obrigatória para evitar que o versionamento identifique a organização de imports como alteração do código.

Há um arquivo modelo disponível em RFW.Kernel\etc\Eclipse Setup que pode ser importado diretamente.

Em caso de falha, configure seu eclipse conforme imagem a seguir:

Organização de Imports no Eclipse
Organização de Imports no Eclipse

Automatizando as Formatações ao Salvar o Código

Algumas ações podem ser definidas no eclipse para que realize automaticamente ao salvar, automatizando algumas funções que acabam sendo esquecidas pelo desenvolvedor. Para isso vá no menu Window -> Preferences, em seguida escolha a configuração em Java -> Editor -> Save Actions e configure como a imagem abaixo:

Configurando o Git para Trabalhar com o GitHub

Falha ao Autenticar com Usuário e Senha
Antes de começar, tive diversos problemas para autenticar com usuário e senha utilizando o GitHub, não sei se é limitação do site ou do Eclipse.


É possível fazer o checkout do código e navegar no repositório, mas no momento de fazer os Pushs o eclipse não autentica e segue perguntando usuário e senha.

Por isso, sempre faça o checkout do código já utilizando chave SSH. No modelo que é sugerido configurar aqui.


Criando a Chave SSH

Se ainda não tiver uma chave SSH que queira utilizar, podemos cria-la utilizando o próprio Eclipse.

  • Navegue em Window > Preferences > General | Network Connections | SSH2, na aba Key Management
Criação/Importação de Chave SSH
Criação/Importação de Chave SSH
  • Clique em Generate RSA Key ou Load Existing Key para criar ou importar suas chaves privadas.
  • Configure o comentário desejado e uma senha para proteger sua chave.
  • Copie todo o conteúdo da chave pública (Provavelmente começando com ssh-rsa
  • Clique em Apply and Close


Configurando a Chave no GitHub

Agora, é preciso configurar o GitHub para aceitar sua chave de autenticação:

  • Abra o site do Git Hub e se autentique.
  • Clique na imagem do seu perfil e depois em Settings.
  • Depois no menu SSH and GPG Keys
  • Clique no botão New SSH key
  • Dê um título para sua chave (só para sua referência), escolha Authentication Key e cole o conteúdo copiado da chave pública no campo Key.
  • Pronto, sua chave será aceita pelo GitHub agora.


Fazendo Checkout do Código Existente

Para realizar o checkout do código:

  • Utilize a função de importar projeto do eclipse, escolha Projects from Git.
  • Escolha Clone URI.
  • No GitHub, copie o link do código utilizando o SSH
Link do Repositório por SSH
Link do Repositório por SSH
  • Cole no campo URI da tela Import Projects from Git
Checkout do Código por SSH no Git Hub
Checkout do Código por SSH no Git Hub
  • Garanta que o protocolo ficou em ssh e deixe o usuário conforme sugerido git
  • Termine a configurações como desejado, escolhendo o diretório de checkout, e no fim permita a importação do projeto no Eclipse.