`
cristal
  • 浏览: 27084 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

STAX中XMLInputFactory的线程安全性

阅读更多
Java1.6中自带了stax的解析器,详细用法可参见sjsxp和jsr173的说明。但是最近发现了一个奇怪问题,就是我的XMLStreamReader总是出现各种奇怪的问题,比如说ArrayIndexOutOfBoundsException, Scanner state 24 not recognized,最终发现原来是因为XMLInputFactory不是线程安全的,如果在一个多线程环境中共用了这个factory,就会导致这样的问题。而woodstox的XMLInputFactory则是线程安全的。所以要解决这样的问题,或者换成woodstox,或者可以这样设置:

private static XMLInputFactory inputFactory;

static {
    try {
        inputFactory = XMLInputFactory.newInstance();
        inputFactory.setProperty("reuse-instance", Boolean.FALSE);
    } catch (IllegalArgumentException e) {
	logger.warn("reuse-instance property not support");
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics