tomcat8 de wheezy-backports falha com o configtest.sh

7

Eu instalei o pacote tomcat8 de wheezy-backports . Eu uso a instalação padrão / não modificada com as seguintes expectativas:

  • eu uso o Oracle Java 8 JDK
  • em /etc/default/tomcat8 é adicionado: JAVA_HOME=/usr/lib/jvm/java-8-oracle

Eu posso iniciar / parar o tomcat. No entanto, muitos avisos são exibidos. Verificado com /usr/share/tomcat8/bin/configtest.sh , a saída é:

  Using CATALINA_BASE:   /usr/share/tomcat8
  Using CATALINA_HOME:   /usr/share/tomcat8
  Using CATALINA_TMPDIR: /usr/share/tomcat8/temp
  Using JRE_HOME:        /usr
  Using CLASSPATH:       /usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar
  Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
  WARNING: Problem with directory [/usr/share/tomcat8/common/classes], exists: [false], isDirectory: [false], canRead: [false]
  Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
  WARNING: Problem with directory [/usr/share/tomcat8/common], exists: [false], isDirectory: [false], canRead: [false]
  Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
  WARNING: Problem with directory [/usr/share/tomcat8/server/classes], exists: [false], isDirectory: [false], canRead: [false]
  Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
  WARNING: Problem with directory [/usr/share/tomcat8/server], exists: [false], isDirectory: [false], canRead: [false]
  Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
  WARNING: Problem with directory [/usr/share/tomcat8/shared/classes], exists: [false], isDirectory: [false], canRead: [false]
  Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
  WARNING: Problem with directory [/usr/share/tomcat8/shared], exists: [false], isDirectory: [false], canRead: [false]
  Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.Catalina initDirs
  SEVERE: Cannot find specified temporary folder at /usr/share/tomcat8/temp
  Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.Catalina load

Claramente, alguns problemas:)

  • O JRE_HOME deve ser definido como JAVA_HOME, mas não é
  • diretórios ausentes
  • (não está claro neste exemplo) o log não está funcionando corretamente (as alterações em /etc/tomcat8/logging.properties não têm efeito. Mas as configurações estão corretas (consulte ps output) e /var/lib/tomcat8/conf -> /etc/tomcat8

O que está errado aqui?

UPDATE

Saída de ps (editada para legibilidade), que parece boa:

  $ ps aux | grep java
  tomcat8  15654  0.1  3.6 2643416 147024 ?      Sl   Jan10   1:42 /usr/lib/jvm/java-8-oracle/bin/java \
  -Xmx1024m -XX:+UseConcMarkSweepGC \
  -Djava.util.logging.config.file=/var/lib/tomcat8/conf/logging.properties \
  -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
  -Djava.awt.headless=true \
  -Djava.endorsed.dirs=/usr/share/tomcat8/endorsed \
  -classpath /usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar \
  -Dcatalina.base=/var/lib/tomcat8 \
  -Dcatalina.home=/usr/share/tomcat8 \
  -Djava.io.tmpdir=/tmp/tomcat8-tomcat8-tmp 
  org.apache.catalina.startup.Bootstrap start

UPDATE 2

O Tomcat 8 no Ubuntu tem problemas semelhantes, consulte link

    
por rmuller 10.01.2015 / 17:06

3 respostas

1

Ocorreu-me que você vê isso somente quando você executa configtest.sh , e há uma razão óbvia: CATALINA_BASE et al. só é definido em /etc/init.d/tomcat8 . Quando eu executo configtest.sh como você fez, recebo a mesma saída.

Se você quiser executar configtest da mesma maneira que o daemon, provavelmente desejará hackar /etc/init.d/tomcat8 para aceitar esse argumento. Por alguma razão, os mantenedores do pacote não se deram ao trabalho. Também parece que você pode definir as variáveis de ambiente manualmente antes de executar configtest.sh ; Acho que catalina.sh vai buscá-los.

As linhas WARNING: Problem with directory vêm dos caminhos do carregador de classe definidos em /etc/tomcat8/catalina.properties . Este é provavelmente apenas um velho lixo deixado pelo mantenedor Debian ... para não atrapalhar configurações antigas? Não é todos os presentes na corrente a montante e foi discutido antes .

    
por 12.01.2015 / 21:28
4

Esta é uma longa saga. O principal problema é que a comunidade java e a comunidade linux criaram muitos quase-padrões, práticas e convenções, e estes estão de alguma forma contraditórios em todos os pontos de vista.

Você pode integrar java e linux facilmente, mas você deve aprender ambos deles, e você terá que dividir muitos deles em ambos os lados. Se você conhece apenas um (seja o java ou o mundo linux) você se encontrará em um mundo claro onde você deve se fazer sempre sujo.

Seu problema atual não é um problema de variável de ambiente, mas um simples problema de "diretório não existente". A maneira mais simples de evitar este aviso se você simplesmente criar o diretório ausente / usr / share / tomcat8 / shared / classes manualmente (apesar de contradizer um pouco a alfândega do Linux).

Este diretório é um caminho necessário para o carregador de classes padrão jvm do tomcat e, muito provavelmente, não fará mal a nada se permanecer vazio.

Talvez você possa fazer check-in em um conteúdo.-amd64.gz este diretório não é criado por outro pacote. Se sim, instale esse pacote.

    
por 10.01.2015 / 19:15
1

Eu tenho tomcat8 em execução no openjdk-8-jdk em um Jessie LXC e obtenho o mesmo WARNING s sem efeito negativo. Eu não obtenho o SEVERE . Mas minha linha ps lê ... -Dcatalina.base=/var/lib/tomcat8 -Dcatalina.home=/usr/share/tomcat8 -Djava.io.tmpdir=/tmp/tomcat8-tomcat8-tmp ....

    
por 10.01.2015 / 19:52