Назад | Перейти на главную страницу

Tomcat webapp не запускается при запуске Tomcat как службы

У меня есть веб-приложение, которое не запускается в Tomcat при установке Linux. Приложение работает на другом Tomcat, установленном на разных машинах и на одном компьютере при использовании автономного Tomcat.

Проблема, похоже, связана с тем, как запускается Tomcat.

Я использую Debian 8, Tomcat 8.0.11 (но пробовал 8.0.9 и 8.0.11) и различные версии Java. Приложение не работает из-за диспетчера транзакций Java, называемого Атомикос. Ошибка:

SEVERE: исключение, отправляющее инициализированное событие контекста экземпляру слушателя класса uk.co.prodia.talkingcouch.ApplicationContextListener org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'transactionManager', определенным в ресурсе пути к классу [config / applicationContext-db -sessionfactory.xml]: невозможно разрешить ссылку на bean-компонент "atomikosTransactionManager" при установке свойства bean-компонента "transactionManager"; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания bean-компонента с именем 'atomikosTransactionManager', определенным в ресурсе пути к классу [config / applicationContext-db-sessionfactory.xml]: не удалось вызвать метод инициализации; вложенное исключение - это javax.transaction.SystemException: служба транзакций не запущена в org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference (BeanDefinitionValueResolver.java:359) в org.spritionalueResolver.java:359. .java: 108) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues ​​(AbstractAutowireCapableBeanFactory.java:1481)

У кого-нибудь есть предложения?

TheCodeKiller заставил меня думать в правильном направлении. В конечном итоге это была проблема с разрешением, и мой собственный экземпляр работал только с ним, он работал как root. Это было очевидно при сравнении ps вывод каждого запущенного процесса.

Атомикос записывал свой лог-файл в $CATALINA_BASE который был в /var/lib/tomcat8 который доступен для записи только root.

Оказывается, Атомикос изменил способ ведения журнала, и мне пришлось:

  • Удалено свойство com.atomikos.icatch.output_dir;
  • Удалено свойство com.atomikos.icatch.log_base_dir.

а затем добавьте следующее в log4j.xml:

<appender name="tc-core-atomikos" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="/stroage/www/tc/data/atomikos/tmout"/>
    <param name="MaxFileSize" value="1MB"/>
    <param name="MaxBackupIndex" value="5"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="tc-core-atomikos => [log level: %-5p] [thread: %t] [%d{dd MMM yyyy HH:mm:ss}]%n    %c %M%n        %m%n%n"/>
    </layout>
</appender>

<logger name="com.atomikos">
    <level value="ERROR"/>
    <appender-ref ref="tc-core-atomikos"/>
</logger>

Обычно сценарий управления считывает дополнительные свойства из самого сценария, из файлов в / etc / tomcat8 и даже из / etc / default / tomcat (8)

Убедитесь, что команда с аргументами из файла startup.sh и из сценариев управления приводит к одному и тому же вызову.

Можно попробовать получить параметры ps -fp cat / proc // cmdline