Case Wildfly

Fonte: Touch ERP
Saltar para a navegação Saltar para a pesquisa

Manual_Instalacao_ERP

O Wildfly é um servidor WEB utilizado para instalar como serviços aplicativos da Touch Comp. Nele são instalados aplicativos como:

  • Mentor WEB e webservices: Aplicativo WEB mais antigo, que atualmente possui o Touch Comp Access WEB e webservices. Está sendo migrado para o Touch Comp WEB abaixo.
  • Touch Comp WEB e webservices: Aplicativo WEB relativo ao produto Touch Comp ERP, que está em desenvolvimento. Nele são disponibilizados também todos os serviços, integrações e webservices.

O Wildfly é instalado como serviço, e automaticamente é iniciado toda vez que o próprio computador é reiniciado. Tente instalar o Wildfly sempre no servidor para melhor proteção dos dados.

Para acesso externo, você deve configurar seu roteador para tal, consulte Manual_Instalacao_ERP seção Acesso Externo - WEB.


Requisitos e Questões - Antes de Continuar

  • As portas 8181, 8009, 8443, 4712, 4713 estão em uso por outra aplicação? Se sim, verifique a seção "Configurar porta Wildfly" para mais detalhes.
  • As portas 8181 e 8443 estão liberadas no firewall, antivírus no servidor? Se não, as mesmas devem ser liberadas. Cada programa de antivírus e firewall possuem particularidades diferentes. Consulte na WEB/Google como proceder de acordo com o programa que você utiliza. Se utiliza por exemplo o Firewall do windows consulte: https://www.gestortecnico.net/2018/06/como-abrir-porta-no-firewall-do-windows10.html
  • Verifique também qual o banco de dados irá configurar a aplicação WEB. Para tal, verifique na instalação do Firebird, no arquivo aliases.conf(Firebird 2.5) ou databases.conf (Firebird 3.0) o aliases do banco. Caso possua apenas um banco de dados instalado, não será necessário realizar nenhuma configuração adicional. Caso possua mais de Banco de dados instalado, ou o aliases do banco seja diferente do padrão, será necessário configurar no wildfly qual o banco o mesmo deverá conectar. Consulte a seção "Configuração de Banco de Dados Wildfly".
  • Por último, após instalar e configurar corretamente o wildfly, consulte a seção "Instalação dos sistemas - Arquivos WAR" para instalar um dos aplicativos WEB da Touch Comp.
  • Verifique o Java Instalado. Atualmente os softwares da Touch Comp são compatíveis com o Java 8. Verifique a versão:
java -version

Instalação Windows

Baixe o Instalador mais recente no link:

http://touchcomp.ddns.me:81/arquivos/programas/wildfly/

Após execute o mesmo. O próprio instalador deverá tanto instalar como propriamente realizar as configurações padrões utilizadas pela Touch Comp. Porém, poderá ser necessário alterar algumas, conforme cada cliente. Questione ao TI sobre as seguintes questões, conforme seção de Requisitos e Questões.

Java 21

Caso tenha dois JDK instalado no servidor, para apontar para o java 21, deverá ser alterado as variaveis de ambiente, apontado para a pasta java da versao 21. Veja o exemplo abaixo:

JAVA_HOME: C:\Program Files\Java\jdk-21

Path: C:\Program Files\Java\jdk-21\bin

Instalação Linux

A instalação em sistemas Linux requer conhecimentos básicos em comandos e em terminais, por serem instalações por terminal e não automatizadas por Instaladores como no Windows. Os comandos aqui citados são comandos de exemplo para Ubuntu e Sistemas derivados. Caso a empresa opte por outras versões, estes comandos devem ser traduzidos/relacionados conforme a distribuição Linux utilizada. Neste caso, o processo deve ser realizado diretamente pelo TI da empresa, por assim optar por outra distribuição.


  1. Crie o usuário Wildfly
sudo groupadd -r wildfly
sudo useradd -r -g wildfly -d /opt/wildfly -s /sbin/nologin wildfly
  1. Verifique a versão mais recente do Wildfy no site https://www.wildfly.org/downloads/. Verifique o link de download do arquivo zip. Baixe o arquivo manualmente, ou utilize o comando abaixo. Os Exemplos aqui citados, são relacionados a versão 26 do Wilfly.
wget http://touchcomp.ddns.me:81/arquivos/programas/wildfly/wildfly-26.tar.gz
tar -xvzf wildfly-26.tar.gz
  1. Copie os dados descompactados para a pasta opt/wildfly e dê as permissões
sudo mv wildfly-26 /opt/wildfly
sudo chown -RH wildfly: /opt/wildfly


  1. Configure o serviço:
sudo mkdir -p /etc/wildfly
sudo cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf /etc/wildfly/
sudo cp /opt/wildfly/docs/contrib/scripts/systemd/launch.sh /opt/wildfly/bin/
sudo sh -c 'chmod +x /opt/wildfly/bin/*.sh'
sudo cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/
sudo systemctl daemon-reload
  1. Configure a memória Wildfly. Acesse a pasta /opt/wildfly/bin e abra o arquivo standalone.conf. Dentro, modifique as questões de memória:
JBOSS_JAVA_SIZING="-Xms64m -Xmx8g -XX:MetaspaceSize=2g -XX:MaxMetaspaceSize=2g"
  1. Inicie manualmente o Wildfly, para avaliar possíveis erros
cd /opt/wildfly/bin
sudo sh standalone.sh
  1. Caso tudo certo, inicie o serviço:
sudo systemctl start wildfly

Configurar Portas Wildfly

Alterar as portas de comunicação do Wildfly é muito simples. Para isso acesse a pasta de instalação do Wildfly\standalone\configuration\, e edite o arquivo com o bloco de notas standalone.xml. Sugerimos utilizar um outro editor, como por exemplo Notepad++ ao invés do editor padrão do Windows, uma vez que o notepad em algumas situações abre o arquivo sem formatação.

Dentro do arquivo, altere no final as propriedades:

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
       <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9991}"/>
       <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9994}"/>
       <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
       <socket-binding name="http" port="${jboss.http.port:8181}"/>
       <socket-binding name="https" port="${jboss.https.port:8443}"/>
       <socket-binding name="txn-recovery-environment" port="4712"/>
       <socket-binding name="txn-status-manager" port="4713"/>
       <outbound-socket-binding name="mail-smtp">
           <remote-destination host="localhost" port="25"/>
       </outbound-socket-binding>
   </socket-binding-group>

As portas de comunicação principais são as ${jboss.http.port:8181} e ${jboss.https.port:8443}. Caso deseje por exemplo, alterar a porta padrão para 8080, basta alterar esta propriedade para ${jboss.http.port:8080}.

Importante: É necessário informar neste arquivo, quais endereços o Wildfly poderá ouvir as requisições: management e public. Normalmente, na instalação é informado em ambas interfaces localhost, o que impede acesso externo a máquina onde está hospedado. Portanto altere ao menos a interface public.

<interfaces>
       <interface name="management">
           <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
       </interface>
       <interface name="public">
           <any-address/>
       </interface>
   </interfaces>

Em management, é o endereço que poderá realizar alterações pela interface de configuração do Wildfly. No caso acima, somente seria possível realizar mudanças na própria máquina. Em public, é o acesso as aplicações hospedadas no wildfly. No caso acima, qualquer endereço poderá acessar as aplicações.

Após alterar as configurações, salve o arquivo e acesse os serviços do Windows ou Linux e reinicie o serviço Wildfly.

Configuração de Banco de Dados Wildfly

A instalação dos aplicativos dentro do Wildfly, utiliza os mapeamentos padrões de banco de dados utilizados pelos aplicativos WEB. Mas caso a empresa possua mais de um banco de dados, ou o mesmo está utilizando mapeamentos diferentes é necessário ajustar as configurações de propriedades de conexão com o banco de dados.

Acesse a pasta de configuração da api em "C:\touchcomp\config\api" no Windows ou "opt/touchcomp/config/touch-api" no Linux e procure o arquivo database_touchcomp_erp.properties. Caso esteja utilizando as configurações padrões, as propriedades estarão vazias. Caso deseje alterar, informe estas propriedades:


jdbc.url.nfe=

jdbc.url=

jdbc.url.logacoes=

jdbc.url.enderecos=

jdbc.url.binarydata=

hibernate.show_sql=

hibernate.format_sql=

jdbc.url.versao=


No caso, suponha que o banco de dados esteja mapeado no Firebird com aliases diferente para o banco principal Mentor: mentor_matriz = C:\TouchComp\database\Mentor.FDB. Geralmente as demais bases seguem a mesma regra. Assim o arquivo deveria ser alterado para:


jdbc.url.nfe=jdbc:firebirdsql://localhost:3051/nfe_matriz

jdbc.url=jdbc:firebirdsql://localhost:3051/mentor_matriz

jdbc.url.logacoes=jdbc:firebirdsql://localhost:3051/log_matriz

jdbc.url.enderecos=jdbc:firebirdsql://localhost:3051/endereco_matriz

jdbc.url.binarydata=jdbc:firebirdsql://localhost:3051/binary_data_matriz

hibernate.show_sql=

hibernate.format_sql=

jdbc.url.versao=jdbc:firebirdsql://localhost:3051/versao_matriz


Confirme também a porta em que o Firebird foi instalado. Caso tenha sido instalado em uma porta diferente da 3051, será necessário também alterar as configurações, como por exemplo:


jdbc.url.nfe=jdbc:firebirdsql://localhost:3052/nfe_matriz

jdbc.url=jdbc:firebirdsql://localhost:3052/mentor_matriz

jdbc.url.logacoes=jdbc:firebirdsql://localhost:3052/log_matriz

jdbc.url.enderecos=jdbc:firebirdsql://localhost:3052/endereco_matriz

jdbc.url.binarydata=jdbc:firebirdsql://localhost:3052/binary_data_matriz

hibernate.show_sql=

hibernate.format_sql=

jdbc.url.versao=jdbc:firebirdsql://localhost:3052/versao_matriz

Para confirmar a porta, abra o arquivo firebird.conf dentro da instalação do Firebird. Procure por uma propriedade, RemoteServicePort=3051. Caso esteja outra porta, diferente de 3051, como citado anteriormente, deve ser alterado as propriedades acima. Após alterar e salvar, reinicie o serviço do Wildfly.

Instalação dos sistemas - Arquivos WAR

Atualmente, a Touch disponibiliza dois produtos WEB: Mentor WEB, que possui webservices de integração, Tarefas de segundo Plano e o módulo Touch Comp Access e o Touch Comp ERP Web, com o ERP WEB, NFCe, serviços de integração, dentre outros.

Em tempo, o Touch Comp ERP irá centralizar todos os serviços que estão dentro do Mentor WEB e assim o mesmo será substituído integralmente. Até lá, deve ser verificado junto ao cliente e corpo técnico da Touch Comp, qual o mesmo deverá utilizar.

Para instalar estes aplicativos no Wildfly, é uma tarefa simples, que não requer cuidados especiais ou inclusive conhecimentos específicos.

  • Caso o Wildfly já esteja em execução, finalize-o, fechando a aplicação ou paralisando o serviço.
  • Acesse a pasta Wildfly\standalone\deployments e cole um dos arquivos war citados.
  • Inicie novamente o Wildfly. Ao iniciar, dentro da pasta deployments irá aparecer um arquivo com extensão .isDeploying. Isso significa que o Wildfly está instalando o aplicativo. Esta operação leva alguns minutos, a depender do computador. Quando finalizar em caso de sucesso, este mesmo arquivo, será alterado .deployed e o aplicativo está instalado corretamente. Caso isso não ocorra, e o arquivo fique com a extensão .failed. Se isso ocorrer, verifique a seção "Problemas e Soluções" .

Instalação Múltiplos Wildfly

É possível a instalação de múltiplos servidores WEB Wildfly em um mesmo computador. O tutorial sobre a instalação e configuração está disponível no Página_principal#Touch_Comp_School_e_Touch_Comp_Blog, no módulo de Configurações.

Problemas e Soluções

Geralmente, os problemas relacionados ao Wildfly são vinculados a instalações incorretas ou falhas nos aplicativos(arquivos WAR) quando principalmente quando instalada uma versão incompatível com a versão do banco de dados. Em outras situações, o serviço pode ser derrubado pelo windows desde falhas de gerenciamento do sistema operacional, bem como falhas de hardware, etc.

O monitoramento deste serviço deve ser feito pelo TI da empresa, pois o mesmo tem acesso irrestrito ao servidor, bem como suas configurações. Recomendamos a instalação de algum programa que realize monitoramento dos serviços e avise por email por exemplo, quando o serviço for derrubado.

Problemas com Memória - OutOfMemory

Caso ocorra algum problema de memória, deve-se verificar qual o tipo de memória e habilitar mais memória para o Wildfly.

Para alterar estas configurações, acesse o arquivo Wildly\bin\standalone.conf e altere as opções de inicialização:

JAVA_OPTS="-Xms64m -Xmx10G -XX:MetaspaceSize=1G -XX:MaxMetaspaceSize=1G

Se algum usuário tiver executado e fixado as opções de execução, pelo arquivo bat Wildly\bin\standalone.conf.bat, será necessário alterar estas configurações dentro do mesmo, salvar e depois executá-lo.

set "JAVA_OPTS=-Xms64M -Xmx10G -XX:MetaspaceSize=1G -XX:MaxMetaspaceSize=1G"

Consulta o link https://docs.oracle.com/en/java/javase/22/troubleshoot/troubleshooting-memory-leaks.html#GUID-19F6D28E-75A1-4480-9879-D0932B2F305B para mais informações sobre estouros de memória.

Porta em Uso

Ao iniciar o Wildfly, pode aparecer um erro no log do mesmo com a mensagem "Binding Address is in use". Isso significa que uma ou mais portas do Wildfly está em uso e os mesmo, logo, não foi iniciado. Verifique se o Wildfly inclusive já está rodando, e se tiver feche-o, e em caso de serviço, pare-o em serviços.

Caso seja outra aplicação que esteja utilizando as portas, será necessário trocar as mesmas no Wildfly ou desta outra aplicação. Se desejar trocar a porta do Wilfly, verifique a seção "Configurar Portas Wildfly".

Lembre-se que o Wildfly possui várias portas, uma para cada tipo de aplicação. Verifique na mensagem de log qual a porta e serviço está realmente sendo usada por outra aplicação. Nem sempre é a porta padrão utilizada pelos aplicativos da Touch Comp(8080,8081), podendo ser por exemplo a porta 8443.

Ao identificar a porta, caso não saiba identificar qual aplicação está utilizando, verifique o Case_Identificacao_Portas_Em_Uso.

Depurar Instalação

Caso ocorra algum problema e queira depurar a instalação, primeiro pare qualquer execução do Wildfly(Lembre-se de paralisar o serviço). Acesse a pasta do Wildfly\bin e execute o arquivo standalone.bat. Aguarde e acompanhe a inicialização do Wildfly.

Falha ao instalar a aplicação

Neste caso, será necessário, em grande parte das vezes consultar o suporte da Touch Comp. Caso deseje realizar uma primeira análise, consulte a pasta de logs do Wildfly\standalone\logs. O arquivo que mostra os últimos logs e informações é o server.log.

Você também pode abrir o arquivo nome_aplicacao.failed em Wildfly\standalone\deployments. Nele é exibido um resumo da falha.

Estes arquivos de log podem ser abertos pelo bloco de notas, onde recomendamos por exemplo notepad++.

TimeOut Exception

Este problema ocorre me máquinas com desempenho ruim, seja por processador ou por memoria, estes as principais causas. Ao iniciar o Wildfly, acompanhe o consumo de memória e processador, para verificar como estão se comportando.

Para esta situação, há três saídas:

  • Aumentar o desempenho do Computador;
  • Aumentar o tempo de inicialização do Wildfly;
  • Utilizar o Tomcat, uma vez que ele não realiza este tipo de validação/tratativa.

O Instalador disponível no servidor da Touch Comp está configurado para aguardar 10 minutos. Instalações padrões do Wildfly, irão aguardar 5 minutos. Para facilitar, caso este erro ocorra, desinstale o Wildfly e instale novamente utilizando o instalador disponível no servidor da Touch Comp.

Caso ainda precise de alteração, altere o arquivo wildfly\bin\standalone.conf.bat e adicione a propriedade Djboss.as.management.blocking.timeout:

Onde set "JAVA_OPTS=-Xms64M -Xmx3g -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=512m"

Será set "JAVA_OPTS=-Xms64M -Xmx3g -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=512m -Djboss.as.management.blocking.timeout=600"

WildFly fica com status "Parando"

Para solucionar esse problema, basta fechar todos os Javas em processo no gerenciador de tarefas do servidor.

Wildfly fica parando o serviço sem nenhum motivo

Alguns dos motivos que podem ocorrer esse problema, que é: inicia o servido do Wildfly e depois de um tempo ele para.

Verifique Case_Lentidao_Sistema, tópico de Memória/CPU, se não há algum comando SQL que esteja sobrecarregando o servidor.


Reinstalação do Wildlfy:


Toda vez for reisntalar Wildfly, tem verificar a porta Wildfly utilizada, dentro do standealone - configuracão - standlone.xml;

Salvar também a pasta config: C:\Touchcomp\config\api com as configurações/mapeamento do banco de dados;

Desinstalar o Wildflye instalar o novo disponivel FTP: http://touchcomp.ddns.me:81/arquivos/programas/wildfly/

Fechar todos os JAVAS e parar serviço Wildfly, posterior deletar o serviço do Wildfly, deve abrir o CMD e executar o comando abaixo.

sc delete ( nome igual do wildfly que esta serviço ) + enter

Colocar o API da versão do sistema, se possível o mais atual, iniciar o Wildfly e acompanhar se vai ficar deployd.

Initialization of VM / JAVA ERROR/NoClassDefFoundError

Este problema pode ser provocado principalmente por versões incompatíveis do Java. Verifique a instalação do Wildly, se este é o Java 8, Java 21 e se a versão Java instalada no computador é exatamente esta.

Você pode verificar a versão default do Java, abrindo o CMD(Prompt Windows)/Terminal(linux) e rodar o comando: java -version.

Experimente desinstalar todos os Java's e o próprio Wildfly, instalando pelo Instalador próprio da Touch Comp, marcando a opção para instalar também o Java.

Erro executar a API/WEB Java 21 (Wildfly)

No Java 9 em diante, é necessário especificar ao aplicativo container da aplicação/servidor WEB (Wildfly, Tomcat, etc), propriedades relationadas ao uso de "API's legadas" ou modulos. A partir da modernização e modularização do Java, versões 9 em diante, é necessário especificar o uso destas API's.

Normalmente são API's internas, cujo uso não é recomendado expressamente, e que devem ser subistituidas no futuro, por outras com tecnologias e conceitos mais atuais.

Voltando ao Touch Comp ERP WEB, é necessário especificar a propriedade:

--add-exports java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED

Este erro ocorre com uma mensagem parecida com:

Handler dispatch failed;nested exception is java.lang.illegalAccessError...cannot access class sun.reflect.generics.reflectiveObjects to unnamed module...

A solução mais simples para o problema, é resintalar o wildfly por um instalador compatível com o Java 21, em que neste instalador já foi especificado esta propriedade. Para Linux, você pode baixar o Wildfly com esta propriedade, em arquivo zip, em nossos servidores.

Se isso não for possível, você pode informar manualmente esta propriedade, alterando o arquivo common.bat(Windows) ou common.sh(Linux). Procure nestes arquivos, o local onde são definidas estas propriedades e adicione uma nova linha.

  • LINUX
DEFAULT_MODULAR_JVM_OPTIONS="$DEFAULT_MODULAR_JVM_OPTIONS --add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED"
  • WINDOWS
set "DEFAULT_MODULAR_JVM_OPTIONS=!DEFAULT_MODULAR_JVM_OPTIONS! --add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED"

Após realizado esta alteração, salve o arquivo e reinicie o wildfly.

  • Execução direta, via jar
java --add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED -jar touch-web.jar
java --add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED -jar touch-erp.jar