Galera, boa tarde. Preciso de uma ideia de vocês. Não entendo quase nada de tomcat mas estou passando por um problema na aplicação da minha empresa. Iniciando algumas implementações de Job utilizando a biblioteca Quartz, descobri que o tomcat parece estar iniciando a aplicação duas vezes.
Todos os Jobs que faço, executam duas vezes ao mesmo tempo (ou um deles retorna erro se for caso de concorrência). O Quartz já tem um meio para não adicionar um serviço duas vezes, eu adiciono como identificação do Job o nome da classe, o que impediria a mesma de ser adicionada duas vezes pela mesma aplicação. A única hipótese que eu consegui imaginar que isso aconteceria foi o tomcat inicializando duas vezes.
Alguém sabe me dizer algo a respeito? Se precisarem de mais alguma informação para analisar o caso pode me falar.
É dificil o tomcat iniciar duas vezes por conta da porta utilizada. Uma vez a porta ocupada, seria lançada uma exceção caso uma outra instância do tomcat fosse iniciada na mesma porta.
Mais provável que seja um problema no seu job, ou alguma outra configuração no seu projeto.
A
Antoniosfalcini
26-Aug-201910:06:39.513INFO[main]org.apache.catalina.startup.VersionLoggerListener.logServerversionname:ApacheTomcat/9.0.1626-Aug-201910:06:39.518INFO[main]org.apache.catalina.startup.VersionLoggerListener.logServerbuilt:Feb4201916:30:29UTC26-Aug-201910:06:39.518INFO[main]org.apache.catalina.startup.VersionLoggerListener.logServerversionnumber:9.0.16.026-Aug-201910:06:39.519INFO[main]org.apache.catalina.startup.VersionLoggerListener.logOSName:Linux26-Aug-201910:06:39.519INFO[main]org.apache.catalina.startup.VersionLoggerListener.logOSVersion:5.0.7-1.el7.elrepo.x86_6426-Aug-201910:06:39.519INFO[main]org.apache.catalina.startup.VersionLoggerListener.logArchitecture:amd6426-Aug-201910:06:39.519INFO[main]org.apache.catalina.startup.VersionLoggerListener.logJavaHome:/usr/java/jdk-11.0.326-Aug-201910:06:39.519INFO[main]org.apache.catalina.startup.VersionLoggerListener.logJVMVersion:11.0.3+12-LTS26-Aug-201910:06:39.519INFO[main]org.apache.catalina.startup.VersionLoggerListener.logJVMVendor:OracleCorporation26-Aug-201910:06:39.519INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCATALINA_BASE:/opt/tomcat/tomcatC2_9_0_1626-Aug-201910:06:39.519INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCATALINA_HOME:/opt/tomcat/tomcatC2_9_0_1626-Aug-201910:06:39.520INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCommandlineargument:--add-opens=java.base/java.lang=ALL-UNNAMED26-Aug-201910:06:39.520INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCommandlineargument:--add-opens=java.base/java.io=ALL-UNNAMED26-Aug-201910:06:39.520INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCommandlineargument:--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED26-Aug-201910:06:39.520INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCommandlineargument:-Djava.util.logging.config.file=/opt/tomcat/tomcatC2_9_0_16/conf/logging.properties26-Aug-201910:06:39.520INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCommandlineargument:-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager26-Aug-201910:06:39.520INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCommandlineargument:-Djdk.tls.ephemeralDHKeySize=204826-Aug-201910:06:39.520INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCommandlineargument:-Djava.protocol.handler.pkgs=org.apache.catalina.webresources26-Aug-201910:06:39.520INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCommandlineargument:-Dorg.apache.catalina.security.SecurityListener.UMASK=002726-Aug-201910:06:39.521INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCommandlineargument:-Xmx2G26-Aug-201910:06:39.521INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCommandlineargument:-XX:+UseParallelGC26-Aug-201910:06:39.521INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCommandlineargument:-Djava.library.path=/opt/tomcat/tomcatC_9_0_16/native/lib26-Aug-201910:06:39.521INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCommandlineargument:-Dignore.endorsed.dirs=26-Aug-201910:06:39.521INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCommandlineargument:-Dcatalina.base=/opt/tomcat/tomcatC2_9_0_1626-Aug-201910:06:39.521INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCommandlineargument:-Dcatalina.home=/opt/tomcat/tomcatC2_9_0_1626-Aug-201910:06:39.521INFO[main]org.apache.catalina.startup.VersionLoggerListener.logCommandlineargument:-Djava.io.tmpdir=/opt/tomcat/tomcatC2_9_0_16/temp26-Aug-201910:06:39.521INFO[main]org.apache.catalina.core.AprLifecycleListener.lifecycleEventLoadedAPRbasedApacheTomcatNativelibrary[1.2.21]usingAPRversion[1.4.8].26-Aug-201910:06:39.521INFO[main]org.apache.catalina.core.AprLifecycleListener.lifecycleEventAPRcapabilities:IPv6[true],sendfile[true],acceptfilters[false],random[true].26-Aug-201910:06:39.522INFO[main]org.apache.catalina.core.AprLifecycleListener.lifecycleEventAPR/OpenSSLconfiguration:useAprConnector[false],useOpenSSL[true]26-Aug-201910:06:39.525INFO[main]org.apache.catalina.core.AprLifecycleListener.initializeSSLOpenSSLsuccessfullyinitialized[OpenSSL 1.0.2k-fips 26 Jan 2017]26-Aug-201910:06:39.600INFO[main]org.apache.coyote.AbstractProtocol.initInitializingProtocolHandler["http-nio-8082"]26-Aug-201910:06:39.645INFO[main]org.apache.coyote.AbstractProtocol.initInitializingProtocolHandler["https-openssl-nio-8446"]26-Aug-201910:06:40.030INFO[main]org.apache.coyote.AbstractProtocol.initInitializingProtocolHandler["ajp-nio-8011"]26-Aug-201910:06:40.042INFO[main]org.apache.catalina.startup.Catalina.loadServerinitializationin[1.483]milliseconds26-Aug-201910:06:40.283INFO[main]org.apache.catalina.core.StandardService.startInternalStartingservice[Catalina]26-Aug-201910:06:40.283INFO[main]org.apache.catalina.core.StandardEngine.startInternalStartingServletengine:[Apache Tomcat/9.0.16]26-Aug-201910:06:46.016INFO[main]org.apache.jasper.servlet.TldScanner.scanJarsAtleastoneJARwasscannedforTLDsyetcontainednoTLDs.EnabledebugloggingforthisloggerforacompletelistofJARsthatwerescannedbutnoTLDswerefoundinthem.SkippingunneededJARsduringscanningcanimprovestartuptimeandJSPcompilationtime.26-Aug-201910:06:50.261INFO[main]org.apache.catalina.startup.HostConfig.deployDirectoryDiretóriodeinstalaçãodaaplicaçãoweb[/opt/tomcat/tomcat_9_0_16/webapps/credipnet/credipnet]26-Aug-201910:06:53.305INFO[main]org.apache.jasper.servlet.TldScanner.scanJarsAtleastoneJARwasscannedforTLDsyetcontainednoTLDs.EnabledebugloggingforthisloggerforacompletelistofJARsthatwerescannedbutnoTLDswerefoundinthem.SkippingunneededJARsduringscanningcanimprovestartuptimeandJSPcompilationtime.26-Aug-201910:06:57.047INFO[main]org.apache.catalina.startup.HostConfig.deployDirectoryDeploymentofwebapplicationdirectory[/opt/tomcat/tomcat_9_0_16/webapps/credipnet/credipnet]hasfinishedin[6.786]ms26-Aug-201910:06:57.051INFO[main]org.apache.coyote.AbstractProtocol.startStartingProtocolHandler["http-nio-8082"]26-Aug-201910:06:57.099INFO[main]org.apache.coyote.AbstractProtocol.startStartingProtocolHandler["https-openssl-nio-8446"]26-Aug-201910:06:57.111INFO[main]org.apache.coyote.AbstractProtocol.startStartingProtocolHandler["ajp-nio-8011"]26-Aug-201910:06:57.119INFO[main]org.apache.catalina.startup.Catalina.startServerstartupin[17.077]milliseconds
Em conversa com um colega observando o log, estranhamos esses dois trechos do log
O “ouvinte” da biblioteca Quartz está sendo instanciado dentro da classe que implementa o ServletContextListener, e os Jobs estão sendo agendados com a mesma identificação (nome e grupo). Só tem como isso acontecer se houvesse duas instâncias dessa classe. Não encontrei uma forma de “debugar” porque isso não acontece no Tomcat do Eclipse.
L
Lucas_Camara
Esse tomcat roda em cluster?
J
javaflex
Nao precisa depender e se complicar com tomcat (ou qualquer outro web server) pra fazer um job em java.
A
Antoniosfalcini
VM - CentOs se não me engano
A
Antoniosfalcini
Entendo, tem vários outros meios realmente. É que estamos num contexto, no meio de uma aplicação maior, o Job foi apenas onde eu encontrei um indício da possibilidade de um problema no tomcat.
L
Lucas_Camara
Uma forma que vejo que, por acaso, está ocorrendo mais de uma instância no tomcat, fazendo com que esse listener seja executado mais de uma vez e criando o job duplicado, seja um cluster. Assim, mais de uma instância do tomcat seria criada:
A
Antoniosfalcini
opa, agora entendi a pergunta do cluster cara, perdão pela ignorância rsrs
Sim, ele roda em cluster. Porém as duas máquinas têm o arquivo properties e uma delas já sobe com a propriedade “job=false”, e essa propriedade é verificada antes de instanciar o Job.
J
javaflex
Entendi, mas já resolveria esse problema do job e aproveitaria pra arrumar a casa, separando a aplicação pra ser executada direto pelo java. Já pra aplicacao web ter mais de um servidor tomcat rodando não é problema, é até melhor.