<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    編程生活

       :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      113 隨筆 :: 0 文章 :: 18 評論 :: 0 Trackbacks

     

    最近在使用javax.xml.parsers.DocumentBuilder解析xml文件的時候偶爾會出錯:

     

    org.xml.sax.SAXException: FWK005 parse may not be called while parsing.
            at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:
    263)
            at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:
    284)
            at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:
    208)

     

    跟蹤了一下代碼,發(fā)現(xiàn)這個異常是在com.sun.org.apache.xerces.internal.parsers.DTDConfiguration.parse(DTDConfiguration.java:546)拋出來的。該段代碼結(jié)構(gòu)如下:

     

    if(fParseInProgress) {
        
    throw new XNIException("FWK005 parse may not be called while parsing.");
    }


    fParseInProgress 
    = true;

    // 解析xml文件

    finally {
        fParseInProgress 
    = false;
    }

     

    從程序邏輯來看,如果當(dāng)前DocumentBuilder對象正在轉(zhuǎn)換文檔,此時再次請求轉(zhuǎn)換文檔,那么直接拋出XNIException(“FWK005 parse may not be called while parsing.”);異常。

    這個問題也比較好解決,一種是對轉(zhuǎn)換xml文檔的方法,增加synchronized關(guān)鍵字,這樣子不會有兩個線程同時訪問方法。

    還有一種方法是創(chuàng)建一個DocumentBuilder類型的ThreadLocal變量,這樣子每個線程都擁有自己的DocumentBuilder對象,能夠同時轉(zhuǎn)換多個xml文件。代碼如下:

     

    private static ThreadLocal docBuildeIns = new ThreadLocal() {
        
    protected DocumentBuilder initialValue() {
            
    try {
                
    return DocumentBuilderFactory.newInstance().newDocumentBuilder();
            }
     catch (ParserConfigurationException e) {
                String msg 
    = "DocumentBuilder 對象初始化失敗!";
                log.error(msg, e);
                
    throw new IllegalStateException(msg, e);
            }

        }

    }
    ;

     

    posted on 2012-05-09 17:18 wilesun 閱讀(6515) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲国产精品无码久久一区二区| 亚洲一卡2卡三卡4卡有限公司| 亚洲人和日本人jizz| 久久免费观看国产精品| 国产亚洲精品观看91在线| a级毛片视频免费观看| 亚洲熟妇中文字幕五十中出| 中文字幕版免费电影网站| 国产亚洲福利精品一区| 国内少妇偷人精品视频免费| 久久久无码精品亚洲日韩蜜臀浪潮| 99久热只有精品视频免费看| 亚洲欧洲日产专区| 最近免费中文字幕视频高清在线看 | 亚洲欧洲精品在线| a拍拍男女免费看全片| 亚洲中文字幕日本无线码| 日本免费电影一区| 污污的视频在线免费观看| 亚洲小说区图片区另类春色| 无码免费一区二区三区免费播放| 亚洲视频在线观看视频| 免费a级毛片高清视频不卡| 国产大陆亚洲精品国产| 亚洲真人无码永久在线| 57pao一国产成永久免费| 亚洲中文字幕无码久久| 亚洲精品偷拍视频免费观看 | 国产午夜无码精品免费看动漫| 亚洲欧洲第一a在线观看| 成人无遮挡裸免费视频在线观看| 激情无码亚洲一区二区三区 | 亚洲成人午夜在线| 毛片免费观看的视频在线| 特a级免费高清黄色片| 亚洲视频中文字幕在线| 国产自产拍精品视频免费看| 七色永久性tv网站免费看| 亚洲性无码AV中文字幕| 中文字幕亚洲乱码熟女一区二区| 又粗又大又黑又长的免费视频|