Отладка с помощью Tomcat - PullRequest
0 голосов
/ 19 января 2012

Я пытаюсь протестировать (основанную на Spring) WAR, которую я только что написал, и внедряю ее в TOMCAT_HOME/webapps/, а затем запускаю tomcat. Примерно через минуту становится очевидным, что WAR не работает (потому что он должен потреблять сообщения из очереди ActiveMQ ... а это не так). Я смотрю на стандартный вывод из консоли и вижу:

INFO: Deploying web application archive Optimizer.war
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
23 [Thread-2] INFO org.apache.camel.spring.handler.CamelNamespaceHandler - OSGi environment not detected.
Jan 19, 2012 10:54:20 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
Jan 19, 2012 10:54:20 AM org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [184] milliseconds.
Jan 19, 2012 10:54:20 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/Optimizer] startup failed due to previous errors

Вот мой log4j.properties файл:

log4j.rootLogger=INFO
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%c] [%t] (%F:%L) %-5p %c %x - %m%n
log4j.logger.org.milyn=INFO
log4j.logger.org.exolab.castor=INFO
log4j.logger.org.castor.core=INFO
log4j.logger.org.apache.commons.digester=INFO
log4j.logger.org.apache=INFO
log4j.logger.org.springframework=INFO
log4j.logger.com.ibatis=INFO
log4j.logger.java.sql.Connection=INFO
log4j.logger.java.sql.PreparedStatement=INFO
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.java.sql.Statement=INFO

А вот мой web.xml файл:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns    /j2ee/web-app_2_4.xsd"
    version="2.4">

    <!-- The display name of this web application -->
    <display-name>Optimizer</display-name>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/optimizer-config.xml</param-value>
    </context-param>

    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
</web-app>

Для одного я хотел бы знать, как сделать мое приложение / Tomcat более многословным, чтобы я мог видеть, что на самом деле здесь происходит (и, пожалуйста, обратите внимание, что консоль Tomcat и соответствующие catalina.log являются единственными источниками, которые у меня есть для отладки ... не может запустить это из рабочей среды Eclipse, потому что нет точки входа main, просто web.xml).

Я подозреваю, что что-то не так в web.xml или, возможно, в моем конфигурационном файле Spring. И я не возражаю против отладки моего конфигурационного файла, если бы я мог просто получить какие-либо указания в журналах / сообщениях об ошибках относительно того, что мешает запуску моего приложения.

Любые идеи / подсказки / предложения относительно начала процесса выяснения того, что происходит не так, чрезвычайно ценны ! Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 20 января 2012

Вы можете запустить все приложение из среды IDE, если хотите, вместо внешнего запуска Tomcat. Однако затем вы сталкиваетесь с проблемой, с которой вы работаете над своим файлом war, а не с файлами .class (скомпилированными в вашем рабочем пространстве). Кроме того, вы не проверяете, вызывает ли Tomcat какие-либо ошибки развертывания.

Я не помню, что это за файл Tomcat, но есть и другие файлы журналов, которые вы также можете найти в каталоге tomcat / log, которые предоставят немного дополнительной информации.

Чтобы запустить Tomcat в eclispe, вам нужно создать новую конфигурацию времени выполнения Java. Укажите основной класс как org.apache.catalina.startup.Bootstrap Аргументы программы: [-config] start VM Args: как считаете нужным, но, возможно, -Xmx512m и т. Д. Рабочий каталог (обычно я указываю на каталог Tomcat / work, если память служит).

Вам также необходимо добавить jar-файлы Tomcat (находятся в tomcat / lib и tomcat / bin) в путь к классам в разделе Bootstrap).

Как только вы это сделаете, вы сможете запускать tomcat как java-приложение из Eclipse, и тогда вы сможете пошагово отлаживать точный процесс.

ПРИМЕЧАНИЕ. Я предоставляю эту информацию о конфигурации из памяти. Я не помню точный путь для рабочего пространства.

0 голосов
/ 19 января 2012

Определенно добавьте журнал приложений для весны.С помощью appender вы можете указать дополнительные файлы журнала для конкретных слушателей и приложений.Прочтите этот пост на форуме для получения дополнительной помощи: см. Эту ссылку

Редактировать: Примеры Spring appender в другой файл:

<appender name="SpringAppender" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="encoding" value="UTF-8"/>
    <param name="file" value="C:/logs/Spring.log"/>
    <param name="DatePattern" value="'.'yyyy-MM-dd" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{HH:mm:ss} %-5p %l - %m%n" />
    </layout>
</appender>

Вот набор средств записи / прослушивания Springна уровне отладки.

<logger name="org.springframework" additivity="false">
    <level value="debug" />
    <appender-ref ref="SpringAppender" />
</logger>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...