2010-11-04 32 views
0

我想調試爲什麼Spring的AnnotationMethodHandlerAdapter沒有調用我的控制器中的某些處理程序。我在Netbeans中沒有遇到任何錯誤,只是瀏覽器中有404錯誤。我嘗試在我的一個工作控制器/處理程序中放置一個斷點,然後沿着鏈條在調度程序中放置一個斷點。在glassfish下登錄spring 3.0?

Netbeans的顯示了我一些有趣的方法體:

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

我懷疑是由AOP MagiQ公司造成的。 Undeterred,我試着配置log4j來跟蹤調用,並顯示來自org.springframework.web.servlet.mvc.annotation包在調試級別記錄的所有消息,但只需創建一個log4j.properties文件並放入我得到的classpath無非是默認的「INFO:」級別的消息。在web.xml中添加context-param和listener失敗,因爲容器找不到log4j類,即使它們在那裏,即使我可以再次將它們添加到項目中。

所以,問題是 - 我需要做什麼來獲得方法跟蹤(這可以通過AOP完成)和增強的調試(這肯定需要log4j)在Spring 3.0下?

回答

0

如果我沒有弄錯Spring 3.X使用SLF4J進行日誌記錄。通常,您需要爲您的日誌框架添加SLF4J綁定選項 - 例如,對於log4,slf4j-log4j12 jar應該存在於classpath以及log4j.jar中,並且它們最好是適當的版本 - 我發現SLF4J對於挑剔那。查看更多詳情here。另外不要忘記log4j.xml配置。

+0

我看到了那個頁面,但我需要的是一個配方 - 在文件「bar」中輸入「foo」並進行部署。請注意,我嘗試了這裏描述http://forum.springsource.org/archive/index.php/t-17929.html - 但我沒有找到類的例外。 – florin 2010-11-04 03:37:00

+0

嗯,我不能給你確切的,因爲我不知道你的打包/部署過程,但基本上你需要確保你的應用類路徑中沒有jcl-over-slf4j * .jar(WEB-INF/lib ),將slf4j-log4j12 * .jar和log4j * .jar添加到類路徑(WEB-INF/lib)中並使log4j.xml可用(通常在WEB-INF/classes中) – maximdim 2010-11-04 14:39:56

+0

默認情況下,Spring使用Commons Logging。鏈接到的頁面解釋瞭如何使用SLF4J(使用JCL到SLF4J橋)。但OP不必切換到SFL4J來解決他的問題。 – 2010-11-05 07:22:44