Groovy XmlSlurper 的線程安全問題

項目裏用 Groovy 做 XML 解析。在做併發測試的時候發現 Groovy XmlSlurper 存在一個線程安全的問題。(一段時間前解決的問題,日誌被刪,不能貼出具體異常了)。

 

存在問題的寫法是

XmlSlurper xmlSlurper = new XmlSlurper()

 

很簡單,就是 new 一個就行了。但是在併發環境下會存在問題,原因是 XmlSlurper 獲取 SaxParser 的問題。異常信息是這麼寫的,具體的原因由於沒有細看 XmlSlurper 的源碼,所以也就沒有資格說了。

 

解決方法是:

def factory = SAXParserFactory.newInstance()
factory.setNamespaceAware(true);
factory.setValidating(false);
SAXParser parser = factory.newSAXParser()
XmlSlurper xmlSlurper = new XmlSlurper(parser)
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章