ERROR errors.GrailsExceptionResolver - 处理请求时发生 ConcurrentModificationException:

Posted

技术标签:

【中文标题】ERROR errors.GrailsExceptionResolver - 处理请求时发生 ConcurrentModificationException:【英文标题】:ERROR errors.GrailsExceptionResolver - ConcurrentModificationException occurred when processing request: 【发布时间】:2015-10-24 06:37:42 【问题描述】:

我有一个 Grails 2.4.5 GSP 页面,它加载了两个 iFrame:

<iframe scrolling="no"
            src="$createLink(controller:'admin', action:'page1', id: serviceCard.id)"></iframe>
<iframe scrolling="no"
            src="$createLink(controller:'admin', action:'page2', id: serviceCard.id)"></iframe>

每隔一秒重新加载一次左右,我就会遇到以下问题。请注意,这并不总是发生。

在我的 GSP 上,我看到错误 500。控制台显示以下错误:

2015-08-01 21:41:11,530 [http-nio-8080-exec-3] ERROR errors.GrailsExceptionResolver  - ConcurrentModificationException occurred when processing request: [GET] /test/adminServiceCard/previewCard/4b6dc4730fd3acd80a
Stacktrace follows:
Message: Error processing GroovyPageView: Error executing tag <asset:stylesheet>: null
    Line | Method
->>  527 | doFilter         in /grails-app/views/adminServiceCard/previewCard.gsp
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Caused by GrailsTagException: Error executing tag <asset:stylesheet>: null
->>    6 | doCall           in /grails-app/views/adminServiceCard/previewCard.gsp
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Caused by ConcurrentModificationException: null
->> 1456 | sort             in java.util.ArrayList
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    175 | sort             in java.util.Collections
|    145 | fileNameWithoutExtensionFromArtefact in asset.pipeline.AssetHelper
|     99 | loadRequiresForTree in asset.pipeline.DirectiveProcessor
|     76 | getFlattenedRequireList in     ''
|     83 | getDependencyList in asset.pipeline.AssetPipeline
|     79 | doCall . . . . . in asset.pipeline.grails.AssetsTagLib$_closure2
|      6 | doCall           in Users_mg_Documents_Grails_GGTS3_6_3_test_grails_app_views_adminServiceCard_previewCard_gsp$_run_closure1
|     10 | run . . . . . .  in Users_mg_Documents_Grails_GGTS3_6_3_test_grails_app_views_adminServiceCard_previewCard_gsp
|    198 | doFilter         in grails.plugin.cache.web.filter.PageFragmentCachingFilter
|     63 | doFilter . . . . in grails.plugin.cache.web.filter.AbstractFilter
|     53 | doFilter         in grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter
|     62 | doFilter . . . . in grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter
|     46 | doFilterInternal in org.grails.jaxrs.web.JaxrsFilter
|   1142 | runWorker . . .  in java.util.concurrent.ThreadPoolExecutor
|    617 | run              in java.util.concurrent.ThreadPoolExecutor$Worker
^    745 | run . . . . . .  in java.lang.Thread

编辑:这里是adminServiceCardpreview_gsp.groovy.gsp的内容:

import org.codehaus.groovy.grails.plugins.metadata.GrailsPlugin
import org.codehaus.groovy.grails.web.pages.GroovyPage
import org.codehaus.groovy.grails.web.taglib.*
import org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException
import org.springframework.web.util.*
import grails.util.GrailsUtil

class gsp_majestella_adminServiceCardpreview_gsp extends GroovyPage 
public String getGroovyPageFileName()  "/WEB-INF/grails-app/views/adminServiceCard/preview.gsp" 
public Object run() 
Writer out = getOut()
Writer expressionOut = getExpressionOut()
registerSitemeshPreprocessMode()
printhtmlPart(0)
createTagBody(1, ->
printHtmlPart(1)
invokeTag('javascript','g',5,['library':("jquery"),'plugin':("jquery")],-1)
printHtmlPart(1)
invokeTag('stylesheet','asset',7,['src':("perfect-scrollbar/perfect-scrollbar.min.css")],-1)
printHtmlPart(2)
invokeTag('javascript','asset',8,['src':("perfect-scrollbar/perfect-scrollbar.jquery.min.js")],-1)
printHtmlPart(2)
invokeTag('javascript','asset',9,['src':("jquery.cycle.all.js")],-1)
printHtmlPart(1)
invokeTag('stylesheet','asset',11,['src':("preview.css")],-1)
printHtmlPart(3)
)
invokeTag('captureHead','sitemesh',13,[:],1)
printHtmlPart(4)
createTagBody(1, ->
printHtmlPart(5)
if(true && (showCard == true)) 
printHtmlPart(6)
if(true && (serviceCard.imageItems)) 
printHtmlPart(7)
expressionOut.print(createLink(controller:'image', action:'getImage', id:serviceCard.imageItems[0].id, absolute:true))
printHtmlPart(8)

printHtmlPart(9)
expressionOut.print(serviceCard?.title)
printHtmlPart(10)
expressionOut.print(serviceCard?.company?.name)
printHtmlPart(11)

printHtmlPart(12)
if(true && (showDetail == true)) 
printHtmlPart(13)
loop:
int i = 0
for( imageItem in (serviceCard.imageItems) ) 
printHtmlPart(14)
expressionOut.print(createLink(controller:'image', action:'getImage', id:imageItem.id, absolute:true))
printHtmlPart(15)
i++


printHtmlPart(16)
expressionOut.print(raw(serviceCard.description))
printHtmlPart(17)

printHtmlPart(18)
)
invokeTag('captureBody','sitemesh',116,[:],1)
printHtmlPart(19)

public static final Map JSP_TAGS = new HashMap()
protected void init() 
    this.jspTags = JSP_TAGS

public static final String CONTENT_TYPE = 'text/html;charset=UTF-8'
public static final long LAST_MODIFIED = 1438521220000L
public static final String EXPRESSION_CODEC = 'html'
public static final String STATIC_CODEC = 'none'
public static final String OUT_CODEC = 'none'
public static final String TAGLIB_CODEC = 'none'

我该如何解决这个问题?

【问题讨论】:

堆栈跟踪指向视图 adminServiceCard/previewCard.gsp。那个文件里有什么? @EmmanuelRosa 我用文件更新了我的帖子。 糟糕,虽然这可能会有所帮助,但我请求的文件有误。 GSP 页面被反编译成 Groovy 代码。那就是要与堆栈跟踪行号匹配的文件。该文件应该类似于 target/work/gspcompile/gsp_SOMETHING_adminServiceCardpreviewCard_gsp.groovy。如果文件不存在,请尝试运行 grails compile ---gsp 是的,文件不存在。 gspcompile 文件夹不存在。 @EmmanuelRosa 我发布了编译后的文件。希望对您有所帮助。 【参考方案1】:

这个错误看起来很像资产管道中的this one。

您应该删除previewCard.gsp 中的所有//=require,然后解决导致错误的问题。

【讨论】:

删除所有需要是什么意思? 在你的 CSS 和 js 文件中你是否使用了assetpipeline? 尝试从 css 中删除这些错误,看看错误是否被隔离到单个错误。 好吧,但我需要它们。 是的,只是尝试缩小导致问题的原因,您在 CSS 文件中没有对 JS 的引用吗?

以上是关于ERROR errors.GrailsExceptionResolver - 处理请求时发生 ConcurrentModificationException:的主要内容,如果未能解决你的问题,请参考以下文章

Error 500

新浪微博Error_code: 400; Error: 40022:Error: source paramter(appkey) is missing的解决方法

C++ error c2248

Error 500--Internal Server Error如何解决

在 MySQL 中出现 ERROR 1701、ERROR 1452 和 ERROR 1305 错误 - 需要一些专业知识

Error code: 205 System Error(-1)