У меня есть веб-приложение, которое не запускается в Tomcat при установке Linux. Приложение работает на другом Tomcat, установленном на разных машинах и на одном компьютере при использовании автономного Tomcat.
Проблема, похоже, связана с тем, как запускается Tomcat.
service tomcat8 start
не работает при установке Tomcat через диспетчер пакетов;/etc/init.d/tomcat8 start
не работает при установке Tomcat через диспетчер пакетов;service tomcat8 start
(изменив /etc/init.d/tomcat8
) не работает;./startup.sh
работает.Я использую 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