какой xml блок проверки допустимости будет работать отлично на проект многопоточности

Я использовал jdom для xml проверки против схемы. Основная проблема там состоит в том, что это дает ошибку

Синтаксический анализ FWK005 нельзя назвать при парсинге

Главная причина состояла в том что несколько потоки, работающие на xerces проверку одновременно. ТАКИМ ОБРАЗОМ, я получил решение, что я должен заблокировать ту проверку. который не хорош

Таким образом, я хочу знать, какой xml блок проверки допустимости работает отлично на проект многопоточности

public static HashMap<String, String> validate(String xmlString, Validator validator) {

    HashMap<String, String> map = new HashMap<String, String>();
    long t1 = System.currentTimeMillis();
    DocumentBuilder builder = null;
    try {
        //obtain lock to proceed
//         lock.lock();

        try {
            builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
//                Source source = new DOMSource(builder.parse(new ByteArrayInputStream(xmlString.getBytes())));

            validator.validate(new StreamSource(new StringReader(xmlString)));
            map.put("ISVALID", "TRUE");
            logger.info("We have successfuly validated the schema");
        } catch (Exception ioe) {
            ioe.printStackTrace();
            logger.error("NOT2 VALID STRING IS :" + xmlString);
            map.put("MSG", ioe.getMessage());
            //         logger.error("IOException while validating the input XML", ioe);
        }
        logger.info(map);
        long t2 = System.currentTimeMillis();
        logger.info("XML VALIDATION TOOK:::" + (t2 - t1));

    } catch (Exception e) {
        logger.error(e);
    } finally {
        //release lock
//         lock.unlock();
        builder = null;
    }

    return map;
}

Спасибо Sunil Kumar Sahoo

7
задан Aaron Digulla 19 April 2010 в 07:21
поделиться

1 ответ

Я не думаю, что какие-либо валидаторы java xml являются потокобезопасными. Возможны следующие варианты:

  1. Создавать новый экземпляр каждый раз, когда вам нужно проверить
  2. Создать пул валидаторов, которые вы извлекаете из
  3. Использовать ThreadLocal для кеширования валидаторов
5
ответ дан 7 December 2019 в 12:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: