Não é possível configurar o tomcat 7 para usar o próprio JDK

2

Eu tenho o seguinte problema ao configurar tomcat 7 para executar como um serviço no Windows.

Mais especificamente, o tomcat faz parte de uma aplicação web que é instalada nos servidores de nossos clientes, e deve ter todas as suas dependências internas.

Neste caso, o tomcat depende do Java JDK / JRE, então eu baixei um jdk autônomo (versão 1.7u21) com seu jre e o coloquei dentro da pasta tomcat.

Agora, minha árvore de diretórios é assim:

tomcat7
  - bin
  - conf
  - jdk
    - jre
  - logs
  - temp
  - webapps
  - work

Eu então continuei instalando-o como um serviço usando o comando

tomcat\bin\service.bat install

E ele é instalado sem nenhum problema, no modo jvm .

Por favor note que eu modifiquei o arquivo service.bat para que todas as variáveis necessárias estejam corretamente definidas, isto é, CATALINA_HOME, CATALINA_BASE, JAVA_HOME e JRE_HOME, e os dois últimos apontem para o jdk / jre interno.

No entanto, se eu tentar iniciar o serviço, recebo um erro que diz que não é possível iniciar o serviço e se refere ao código de erro 1.

Olhando nos registros do tomcat, ele diz:

[2013-05-22 12:22:09] [info]  [ 5392] Commons Daemon procrun (1.0.15.0 32-bit) started
[2013-05-22 12:22:10] [info]  [ 5392] Running 'AGEws2Tomcat7' Service...
[2013-05-22 12:22:10] [info]  [ 2764] Starting service...
[2013-05-22 12:22:10] [error] [ 2764] %1 is not a valid Win32 application.
[2013-05-22 12:22:10] [error] [ 2764] Failed creating java C:\AGEws\tomcat7\jdk\jre\bin\server\jvm.dll
[2013-05-22 12:22:10] [error] [ 2764] %1 is not a valid Win32 application.
[2013-05-22 12:22:10] [error] [ 2764] ServiceStart returned 1
[2013-05-22 12:22:11] [error] [ 2764] %1 is not a valid Win32 application.
[2013-05-22 12:22:11] [info]  [ 5392] Run service finished.
[2013-05-22 12:22:11] [info]  [ 5392] Commons Daemon procrun finished

Eu tentei pesquisar um pouco sobre a parte Failed creating java e descobri algumas informações sobre uma possível dependência em um arquivo .dll , que eu encontrei, mas eu não entendo onde devo colocá-lo, se isso é realmente o problema.

Eu também tentei instalar o serviço no modo java , e ele funciona mas usa a JVM do meu computador em vez do interno, enquanto eu preciso usar o interno.

O que posso / devo fazer para que o tomcat funcione corretamente como um serviço no modo jvm , usando seu próprio jdk / jre?

Por favor, note que a nossa aplicação web costumava enviar com o tomcat 5, que funcionou perfeitamente no modo jvm .

    
por Matteo Tassinari 22.05.2013 / 12:27

2 respostas

2

No final, descobri que as soluções eram definir o modo de início e parada como java e, ao mesmo tempo, fornecer um JAVA_HOME explícito com a opção

--JavaHome /path/to/internal/jdk

Depois de fazer a modificação, o serviço funciona bem, mesmo que no modo java em vez do modo jvm como o serviço antigo usava.

    
por 22.05.2013 / 14:10
0

Para esclarecer a resposta de Matteo (e ajudar os usuários do Windows que não são excessivamente familiarizados com o mundo Java), tivemos exatamente o mesmo problema usando o Tomcat 8 no Windows Server 2012 de 64 bits (não-R2). Estávamos usando / configurando o IBM Rational DOORS Help 9.6.1 - embora tenhamos visto isso com a maioria dos produtos no estilo IBM Java / Tomcat ao tentar configurar em versões de 64 bits relativamente modernas do Windows.

Tivemos que atualizar o arquivo service.bat localizado no diretório de instalação do Tomcat com o seguinte:

--StartMode java ^
--StopMode java ^
--JavaHome "C:\Program Files (x86)\Java\jre7" ^

As opções start / stop foram alteradas de 'jvm' e a opção JavaHome é uma nova adição ao arquivo de configuração. Então você realiza a instalação do serviço via:

service.bat install <service name>

No nosso caso, o nome do serviço era DOORS_Help. Tivemos uma instalação do Tomcat de 64 bits e uma instalação do JRE de 32 bits que, obviamente, trabalharam juntas - é o que foi fornecido pelo fornecedor.

Editar: Outra opção parece ser definir manualmente as variáveis de ambiente JRE_HOME e JAVA_HOME antes de instalar o Tomcat. Caso contrário, você precisará reinstalar o serviço do Windows. Eu sei que isso contradiz a postagem original, mas parece que nem todas as instalações do Tomcat são iguais!

    
por 06.10.2015 / 01:49