Tomcat e JasperReports

Tenho certeza que você também já passou por algum problema com o JasperReports, afinal, ele é em Java e usa o Tomcat…

Recentemente enfrentei um problema curioso, o Tomcat e JasperReports estavam ligados, aparentemente tudo funcionando, mas quando você tenta gerar um PDF dá um erro e nos logs você observa net.sf.jasperreports.engine.util.jrstyledtextparser, inicialmente pensei que poderia ser alguma fonte ausente, depois pensei que fosse algum problema com o jre, depois pensei em chamar um exorcista,  por fim, depois de muita pesquisa, descobri que estavam faltando alguns parâmetros na inicialização do Tomcat:

Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

Ok, mas onde esses parâmetros devem ser passados? Então, aqui vem a pegadinha, se você fez como eu e instalou o Tomcat em  /opt/ deve ter percebido que dentro do diretório /opt/tomcat/bin/ tem um arquivo chamado startup.sh, para inicializar o Tomcat basta executar este script, certo? Não, errado.

Você pode fazer de várias maneiras, a que funcionou pra mim foi a seguinte:

Crie o arquivo /etc/systemd/system//tomcat.service:

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64

Environment=CATALINA_PID=//opt/tomcat/temp//tomcat.pid

Environment=CATALINA_HOME=//opt/tomcat

Environment=CATALINA_BASE=//opt/tomcat

Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=//opt/tomcat/bin/startup.sh

ExecStop=/opt/tomcat/bin/shutdown.sh

User=tomcat
Group=tomcat

UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

E a partir de agora inicie o Tomcat com:

sudo systemctl start tomcat

E pare o Tomcat com:

sudo systemctl stop tomcat

Deixe um comentário

O seu endereço de email não será publicado