2010-11-04 3 views
0

Я пытаюсь отлаживать, почему некоторые обработчики в одном из моих контроллеров не вызываются функцией AnnotationMethodHandlerAdapter от Spring. Я не получаю никаких ошибок в Netbeans, всего 404 в браузере. Я попытался разместить точку останова в одном из моих рабочих контроллеров/обработчиков, а затем подняться по цепочке, чтобы разместить контрольную точку в диспетчере.Вход в весенний 3.0 под стеклянную рыбку?

Netbeans показывает мне некоторые забавные тела методов:

protected ModelAndView invokeHandlerMethod(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception 
{ 
    //compiled code 
    throw new RuntimeException("Compiled Code"); 
} 

, который я подозреваю, что вызвано MAGIQ АОП. Undeterred, я попытался настроить log4j для отслеживания вызовов и отображения любых сообщений, зарегистрированных на уровне отладки, из пакета org.springframework.web.servlet.mvc.annotation, но просто создав файл log4j.properties и добавив путь к классам, который я получаю не более, чем сообщения уровня «INFO:». Добавление контекста-param и прослушивателя в web.xml завершается с ошибкой, потому что контейнер не может найти классы log4j, даже если они есть, и хотя я могу добавить их снова в проект.

Итак, вопрос в том, что мне нужно сделать, чтобы получить трассировку метода (это может быть сделано через AOP) и расширенная отладка (это определенно требует log4j) под Spring 3.0?

ответ

0

Если я не ошибаюсь, Spring 3.X использует SLF4J для регистрации. Обычно вам нужно добавить привязку SLF4J для вашей рамки ведения журнала выбора - например, для log4, slf4j-log4j12 jar должен присутствовать в classpath, а также log4j.jar, и они лучше будут правильными версиями - я обнаружил, что SLF4J придирчив к что. См. Подробности here. Также не забудьте log4j.xml config.

+0

Я видел эту страницу, но мне нужен рецепт - введите «foo» в файл «bar» и разверните. Обратите внимание, что я пробовал вещи, описанные здесь http://forum.springsource.org/archive/index.php/t-17929.html, но я получаю исключения класса, не найденные. – florin

+0

Ну, я не могу дать вам точную информацию, потому что я не знаю вашего процесса упаковки/развертывания, но в основном вам нужно убедиться, что в вашем пути к классу приложений нет jcl-over-slf4j * .jar (WEB-INF/lib), добавьте slf4j-log4j12 * .jar и log4j * .jar в classpath (WEB-INF/lib) и сделайте доступным log4j.xml (обычно в WEB-INF/classes) – maximdim

+0

Spring использует Commons Logging по умолчанию. На странице, на которой вы ссылаетесь, объясняется, как использовать SLF4J (используя JCL для SLF4J-моста). Но OP не должен переключиться на SFL4J, чтобы решить его проблему. –

Смежные вопросы