`
cristal
  • 浏览: 27456 次
  • 性别: 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");
    }
}
分享到:
评论

相关推荐

    stax-api.jar

    在实际开发中,使用STAX时,开发者首先需要通过`XMLInputFactory`获取一个`XMLStreamReader`,然后遍历XML事件并根据需要进行处理。相反,如果要生成XML,可以通过`XMLOutputFactory`获取`XMLStreamWriter`,然后...

    stax-api 1.0.1

    与DOM(Document Object Model)不同,STAX不是加载整个XML文档到内存中形成一个树形结构,而是通过事件(如开始元素、结束元素、文本等)流式地处理XML,这使得STAX在处理大型XML文件时更为高效。 "stax-api 1.0.1...

    stax-api-1.0-2

    **STAX API 1.0-2:XML处理的关键组件** STAX,全称为Streaming API for XML,是一种用于处理XML的Java API。...无论是阅读源码以了解其实现,还是在项目中直接使用API,STAX都是XML处理领域中的重要工具。

    stax-ex-1.8.3.zip

    - **XMLInputFactory/ XMLOutputFactory配置**:STAX EX允许开发者通过XMLInputFactory和XMLOutputFactory进行更细粒度的配置,如设置错误处理策略,选择不同的实现等。 在实际应用中,STAX EX 1.8.3适用于需要高效...

    stax-api-1.0.1、stax2-api-3.1.1、woodstox-core-asl-4.1.1

    在Java世界中,STAX提供了比DOM(Document Object Model)更高效的处理XML的方式,因为它不需要一次性加载整个XML文档到内存中。STAX的主要组件包括XMLStreamReader(用于读取XML)和XMLStreamWriter(用于写入XML)...

    stax-api-1.0.1 java 操作 xml 文件 一个很好用的包

    与DOM(Document Object Model)不同,STAX不需要一次性加载整个XML文档到内存,因此对于大型XML文件,STAX更加节省资源。 `stax-api-1.0.1`是STAX API的一个版本,它提供了用于处理XML流的接口和类。这个版本可能...

    java使用stax技术操作XML文档.doc

    Streaming API for XML (StAX) 是Java中处理XML的一种高效且灵活的标准,相较于DOM和SAX,它在性能和易用性上有显著优势。StAX是JSR-173的一部分,于2004年3月发布,最终被纳入JAXP 1.4,也将在Java 6中得到支持。 ...

    stax+jaxb进行xml解析

    StAX是一种事件驱动的XML解析API,它允许程序逐个处理XML事件,如开始元素、结束元素、文本等,而不是一次性加载整个文档到内存。这种方式降低了内存使用,提高了处理大型XML文档的效率。Woodstax是StAX的一种实现,...

    jaxb+stax+demo

    与DOM(Document Object Model)和SAX(Simple API for XML)不同,STAX允许开发者以推送或拉取的方式处理XML流,既不会像DOM那样一次性加载整个XML文档导致内存消耗大,也不会像SAX那样强制开发者按照固定的事件...

    解决CXF webService 调用报错 Cannot create a secure XMLInputFactory

    带详细解决方案说明文档,提供三种解决方式,另外包含stax2-api.jar,stax2-api-source.jar,woodstox-core-asl-4.4.1.jar,stax-ex.jar,wstx-asl-3.2.9.jar等jar文件,亲测有效。

    stax2-api-3.1.4-API文档-中英对照版.zip

    赠送jar包:stax2-api-3.1.4.jar; 赠送原API文档:stax2-api-3.1.4-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    stax2-api-3.1.1.jar

    5. **兼容性与扩展性**: "stax2-api-3.1.1.jar"遵循Java的版本兼容性,可以与不同的Java运行环境无缝集成。此外,StAX 2 API还提供了额外的功能和改进,如对XML Schema的支持,以及更丰富的错误报告机制。 在实际...

    有用的Java工具—XML解析工具StAx

    本篇文章将聚焦于Java中的一个高效XML解析工具——StAX(Streaming API for XML)。StAX是一种基于事件驱动的解析器,它允许程序员通过逐个处理XML事件(如开始元素、结束元素、文本等)来读取和写入XML文档,这种...

    用Stax组装及解析XML

    StAX的核心优势在于它能够以流式方式处理XML文档,即逐个事件地读取和写入XML元素,而无需一次性加载整个文档到内存中。这种方式极大地减少了内存消耗,并提高了对大型XML文档的处理效率。 #### 三、StAX与DOM、SAX...

    Java6.0新特性之StAX--全面解析Java XML分析技术

    Java 6.0引入了许多新特性,其中...你可以通过查看这些项目中的代码,进一步了解如何在实际开发中应用StAX。学习和掌握StAX不仅可以提高处理XML的效率,还能降低资源消耗,对于Java开发者来说是一项非常有价值的技能。

    staxmate-with-stax2-1.3.0.jar包

    STAX的优势在于它的流式处理,这意味着它不需要一次性加载整个XML文档到内存中,这在处理大型XML文件时尤其有利。 **StaxMate介绍** StaxMate是基于STAX的一个增强工具,它为STAX提供了一些额外的功能和便利。...

    stax 解析xml demo project

    STAX允许开发者以流式方式处理XML,使得处理大型XML文件时能有效地管理内存,避免一次性加载整个文档导致的资源消耗。本项目“stax 解析xml demo project”是一个使用Eclipse开发的实例,旨在演示如何利用STAX API...

    stax-ex-1.8.jar

    stax-ex-1.8.jarstax-ex-1.8.jarstax-ex-1.8.jar

    kettle转换xml(XML Input Stream (StAX))

    在Kettle中,XML Input Stream (StAX) 转换步骤允许我们逐个读取XML文档的事件,而不是一次性加载整个文档到内存中。这尤其适合处理大型XML文件,因为它避免了内存不足的问题。以下是如何在Kettle中设置和使用XML ...

Global site tag (gtag.js) - Google Analytics