Configurando o Tomcat para não carregar o aplicativo da web automaticamente na inicialização [duplicado]

2

Eu tenho um aplicativo da web em Java que estou implantando usando o Tomcat, mas estou tendo alguns problemas com isso.

O problema é que meu aplicativo da web tem que conversar com algumas bibliotecas nativas (via JNI) e essas bibliotecas não lidam com erros graciosamente, então se eu tentar iniciar o Tomcat e as chamadas nativas falharem, a inicialização do Tomcat será interrompida e não começar.

O que eu gostaria de fazer é que o Tomcat não inicie este aplicativo da web quando ele for iniciado, pois eu usarei outros meios para iniciar o aplicativo da web, o que garantirá que as chamadas nativas funcionem. Especificamente, as chamadas nativas são para falar com outro sistema que já deve estar em execução para que as chamadas nativas sejam bem-sucedidas.

Uma coisa interessante que descobri é que, se eu recarregar o aplicativo depois que o Tomcat estiver executando com êxito, as falhas nas bibliotecas nativas somente farão com que o contexto falhe e o Tomcat continue funcionando bem.

Eu pesquisei ao redor e vi ponteiros para o arquivo context.xml, mas não está claro se eu posso usar isso para alcançar meu objetivo, já que a referência ao Tomcat não parece listar nenhuma propriedade que pare um contexto sendo automaticamente carregado na inicialização.

    
por RobV 06.04.2012 / 21:40

1 resposta

4

O comportamento do

tomcat 6 para implantar aplicativos na inicialização é controlado pelo deployOnStartup parâmetro para um elemento Host no arquivo server.xml;

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" deployOnStartup="false" xmlValidation="false" xmlNamespaceAware="false" deployIgnore=".svn"> </Host>

No entanto, com o autoDeploy definido como "true", o tomcat também oferece suporte à implantação de arquivos de contexto e de guerra localizados no appBase ou na pasta conf / localhost / Catalina, portanto não fica claro se o tomcat veria esses arquivos de guerra existentes e implantaria eles também. Por isso, pode ser necessário definir também autoDeploy="false". Nesse cenário, você precisaria usar a ferramenta do gerenciador do tomcat para implementar suas aplicações web no servidor do tomcat em execução

    
por 07.04.2012 / 02:21