【问题标题】:Grails 2.3.8 Stacktrace doesn't show any of my calling codeGrails 2.3.8 Stacktrace 没有显示我的任何调用代码
【发布时间】:2014-10-27 13:43:10
【问题描述】:

我的控制器中有一个从某个地方调用的方法。据我所知,我的代码中没有任何东西在调用它,所以我添加了一个堆栈跟踪输出行,看看我是否能知道它是从哪里调用的。有了这个,方法如下所示:

def remediationSearch() {
        println " "; println ">>>>>> remediationSearch() start at " + System.nanoTime()
        new Exception("why are you calling me?!?!").printStackTrace()
        def resultList
        if (params.rerender) {
            println "<><><> remediationsearch() called with rerender."
            resultList = recordSearchService.individualSearch(session.oldIndRemedParams)
        }
        else {
            params.selectedBatch = selectedBatch
            session.oldIndRemedParams = params
            resultList = recordSearchService.individualSearch(params)
            println "<><><> remediationsearch() called fresh."
        }
        render(template: 'indivSearchResults', model: [resultList: resultList, resultCount: resultList?.size()])
        println "<<<<<< remediationSearch() end at " + System.nanoTime(); println " ";
    }

这是我似乎无法理解的堆栈跟踪的输出(部分是因为我是 Grails 的新手),因为我似乎没有在其中看到我的任何编码函数:

    >>>>>> remediationSearch() start at 67861365037047
Error |
java.lang.Exception: why are you calling me?!?!
Error |
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
Error |
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessor
Impl.java:57)
Error |
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructor
AccessorImpl.java:45)
Error |
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
Error |
        at org.springsource.loaded.ri.ReflectiveInterceptor.jlrConstructorNewInstance(Refl
ectiveInterceptor.java:986)
Error |
        at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:
77)
Error |
        at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoC
oerce.callConstructor(ConstructorSite.java:102)
Error |
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallS
iteArray.java:57)
Error |
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractC
allSite.java:182)
Error |
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractC
allSite.java:190)
Error |
        at com.twc.fatcaone.CustomerController.remediationSearch(CustomerController.groovy
:264)
Error |
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Error |
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
Error |
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja
va:43)
Error |
        at java.lang.reflect.Method.invoke(Method.java:606)
Error |
        at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInte
rceptor.java:1254)
Error |
        at org.codehaus.groovy.grails.web.servlet.mvc.MixedGrailsControllerHelper.invoke(M
ixedGrailsControllerHelper.java:154)
Error |
        at org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerHelper.handl
eAction(AbstractGrailsControllerHelper.java:354)
Error |
        at org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerHelper.execu
teAction(AbstractGrailsControllerHelper.java:231)
Error |
        at org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerHelper.handl
eURI(AbstractGrailsControllerHelper.java:197)
Error |
        at org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerHelper.handl
eURI(AbstractGrailsControllerHelper.java:121)
Error |
        at org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsController.handleRequest
(SimpleGrailsController.java:72)
Error |
        at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(Simpl
eControllerHandlerAdapter.java:48)
Error |
        at org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet.doDispatch(Grail
sDispatcherServlet.java:355)
Error |
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.j
ava:856)
Error |
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServle
t.java:953)
Error |
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:8
55)
Error |
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
Error |
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:
829)
Error |
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
terChain.java:303)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
.java:208)
Error |
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
terChain.java:241)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
.java:208)
Error |
        at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentC
achingFilter.java:198)
Error |
        at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
Error |
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingF
ilterProxy.java:343)
Error |
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterP
roxy.java:260)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
terChain.java:241)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
.java:208)
Error |
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilt
er.java:101)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
terChain.java:241)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
.java:208)
Error |
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilt
er.java:101)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
terChain.java:241)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
.java:208)
Error |
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilt
er.java:101)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
terChain.java:241)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
.java:208)
Error |
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.jav
a:748)
Error |
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispat
cher.java:486)
Error |
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.
java:411)
Error |
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.ja
va:338)
Error |
        at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(We
bUtils.java:332)
Error |
        at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(We
bUtils.java:297)
Error |
        at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(We
bUtils.java:288)
Error |
        at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInterna
l(UrlMappingsFilter.java:217)
Error |
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilt
er.java:107)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
terChain.java:241)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
.java:208)
Error |
        at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.executeFilterChainWith
WrappedResponse(GrailsPageFilter.java:233)
Error |
        at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.obtainContent(GrailsPa
geFilter.java:208)
Error |
        at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFil
ter.java:153)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
terChain.java:241)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
.java:208)
Error |
        at javax.servlet.FilterChain$doFilter.call(Unknown Source)
Error |
        at org.grails.plugin.resource.DevModeSanityFilter.doFilter(DevModeSanityFilter.gro
ovy:45)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
terChain.java:241)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
.java:208)
Error |
        at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInter
nal(GrailsWebRequestFilter.java:69)
Error |
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilt
er.java:107)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
terChain.java:241)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
.java:208)
Error |
        at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(
HiddenHttpMethodFilter.java:67)
Error |
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilt
er.java:107)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
terChain.java:241)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
.java:208)
Error |
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(Charact
erEncodingFilter.java:88)
Error |
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilt
er.java:107)
Error |
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingF
ilterProxy.java:343)
Error |
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterP
roxy.java:260)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
terChain.java:241)
Error |
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
.java:208)
Error |
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
220)
Error |
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
122)
Error |
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
Error |
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
Error |
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:11
6)
Error |
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
Error |
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processo
r.java:1040)
Error |
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractPr
otocol.java:607)
Error |
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315
)
Error |
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

Error |
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

Error |
        at java.lang.Thread.run(Thread.java:745)
<><><> remediationsearch() called fresh.
<<<<<< remediationSearch() end at 67863898745818

`

【问题讨论】:

  • 确实如此:com.twc.fatcaone.CustomerController.remediationSearch(CustomerController.groovy :264)。休息一下,你看到的是层层的 Tomcat 容器调用和 Spring MVC 做的伎俩来达到DispatcherServlet
  • @dmahapatro 您所指的框架是他所询问的方法,而不是调用他所询问的方法的方法。我不知道您所说的“确实如此”是什么意思。
  • 问题:“Grails 2.3.8 Stacktrace 没有显示我的任何代码”答案:确实... @JeffScottBrown
  • 我认为他的意思是调用相关方法(remediationSearch 方法)的不是他的代码。
  • @JeffScottBrown 您的假设是正确的。我仍然不知所措。

标签: grails


【解决方案1】:

如果您将此输出与“真实”请求进行比较,您将看到基本相同的内容。这是我希望看到的——过滤器链中的各种过滤器被调用,然后是 servlet 的服务方法(注意 servlet 是 GrailsDispatcherServlet,它扩展了 Spring 的 DispatcherServlet),然后它转到 doPost,它很奇怪,因为这是一个 POST 请求,但这似乎是一个 GET,然后是 doDispatch(Grails 确定将请求路由到哪里),然后是 SimpleControllerHandlerAdapter.handle

Grails 应用程序中只有 1 个 Spring MVC 控制器,SimpleGrailsController。它充当 Grails 控制器和 Spring MVC 之间的桥梁。 Grails 控制器只是 Groovy 类,因此它们不能注册为 Spring MVC 控制器,而是这个控制器实例处理所有请求并在 MixedGrailsControllerHelper 的帮助下告诉它要使用的控制器和方法(基于反向 URL 映射从请求的 url 到 URLMappings.groovy 中的条目),它使用反射来调用控制器方法。这就是为什么在您的控制器操作之前有一个Method.invoke。 springloaded jlrMethodInvoke 存在是因为 springloaded 在 dev 模式下添加了重新加载支持,否则可以忽略。

最好的办法是在调试模式下运行应用程序并设置一些断点,这样你就可以找出请求的 url。不过在此之前 - 为这些类设置 Log4j 级别以进行调试,也许这会有一些有用的东西。

【讨论】:

  • 感谢您的建议。我会试试看。
  • 很抱歉我是个新手,但我花了几天时间才弄清楚如何做你在最后一段中所说的一切。我现在在调试模式下运行并相应地记录。在我的控制器中最后一个有效调用(来自我的代码)函数完成执行后,我逐步执行程序,然后我被扔进框架代码。在那里,我看到对象的名称与我在堆栈跟踪中看到的非常相似。然后突然之间,我的函数 remediationSearch() 被调用,我仍然不知道从哪里开始,因为(继续下一条评论)
  • 因为这是我从我自己的日志语句中得到的:>>>>>> auth() 开始于 113589243808961 跟踪操作 /customer/remediationSearch >>>>> remediationSearch() 开始于 113589262752241 错误 | java.lang.Exception:你为什么打电话给我?!?! (继续下一条评论)
  • Auth 是从我之前的拦截器调用的,因此这是有效的,但是在此和对 remeciationSearch() 的无效(不是来自我的代码)调用之间没有记录任何内容。你提到了寻找一个 URL,我应该在哪里和什么时候寻找这个?
  • 寻找获得request.forwardURI 值的代码(注意,这不在界面中,它是动态的) - 这是最接近最初请求的代码,但request.getRequestURI() 和@ 987654333@ 也会有所帮助
猜你喜欢
  • 1970-01-01
  • 2012-09-07
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多