1
resposta

Erro Deploy Aula 2 - Tomcat

Ao tentar executar o deploy da aula 2, ocorre a seguinte mensagem já reportada por alguns colegas: The Tomcat Manager responded "FAIL - Deployed application at context path [/alura-aws] but context failed to start

Ao realizar algumas pesquisas no Google, parece que essa mensagem apresentada pelo console do Jenkins é uma mensagem genérica, que o correto é verificar o log do Tomcat, fazendo isso, identifiquei o seguinte erro:

03-May-2020 20:50:17.178 SEVERE [http-nio-8080-exec-6] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org$
 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'criadorDeProdutos': Invocation of init method failed; nested exception is org.springframework.trans$
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
        at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4768)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5236)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:754)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:730)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:980)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
        at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1645)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
        at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1553)
        at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:813)

Alguém poderia dar um help por favor?

Obrigado.

1 resposta

Olá Tsuyoshi Masuno, tudo bem? Peço desculpas pela demora no retorno! Mas para resolver o problema vou indicar o mesmo passo a passo que indiquei para o Natan nesse outro tópico.

O que acontece é que depois de colocar o seguinte conteúdo:

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>

<user username="jenkins" password="jenkins" roles="manager-gui,manager-script,manager-jmx,manager-status"/>

Dentro do arquivo /var/lib/tomcat8/conf/tomcat-users.xml e logo em seguida reiniciar o Tomcat com o comando sudo service tomcat8 restart como o instrutor apresentou, faltou fazer o seguinte processo:

  • Ir novamente em "Ações de pós-build" (Post-build Actions) , na parte de Credentials clique em Add e depois em Jenkins, como na imagem abaixo: Add Credentials

  • Coloque os campos da seguinte forma:

    • Username: jenkins
    • Password: jenkins
    • ID: jenkins
    • Description: jenkins
  • Por fim, clique no botão Add, como na imagem abaixo: Save Credential

  • E novamente no campo de Credentials selecione a nova crendencial que acabamos de criar jenkins e salve o Job novamente, como na imagem: Select Credential
  • Agora tente executar o Job novamente.

Acho que talvez você tenha o seguinte ERROR:

ERROR: Build step failed with exception
org.codehaus.cargo.container.ContainerException: Failed to deploy [/var/lib/jenkins/workspace/catalogo/target/alura-aws.war]

<outra parte do log>
Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The Tomcat Manager responded "FAIL - Deployed application at context path [/alura-aws] but context failed to start
" instead of the expected "OK" message

Já vou me antecipar e indicar os passos para você resolver esse outro problema:

1) Conecte-se a máquina EC2 via SSH, entre no banco de dados com o comando (instale o mysql-client antes e também o RDS e o EC2 precisam estar no mesmo VPC):

mysql -u root -h endpoint_do_banco_de_dados -p

E agora informe a senha.

2) E depois crie o banco de dados "alura_aws", para isso você precisa executar o comando para criar o banco de dados:

CREATE DATABASE alura_aws;

3) Agora crie saia do MySQL e entre no arquivo setenv.sh com o comando:

sudo nano /usr/share/tomcat8/bin/setenv.sh

4) Altere o arquivo colocando a porta do MySQL (3306) e também coloque a palavra reservada export antes de todas as variaveis, então o arquivo deve ficar da seguinte forma:

export url=endpoint_do_banco_de_dados:3306
export usuario=root
export senha=12345678

E deve funcionar corretamente seu build, caso ainda persista o erro, então entre na pasta /var/lib/tomcat8/webapps com o comando:

cd /var/lib/tomcat8/webapps

E exclua o arquivo "alura-aws.war" e a pasta "alura-aws/" com os comandos:

sudo rm  alura-aws.war

E depois:

sudo rm -r  alura-aws

E tente fazer o build novamente.

Espero ter ajudado!