gpt4 book ai didi

java - 哪个 xml validator 将完美地用于多线程项目

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:29:12 24 4
gpt4 key购买 nike

我已经使用 jdom 对模式进行 xml 验证。那里的主要问题是它给出了一个错误

FWK005 解析时可能不会调用解析

主要原因是多个线程同时进行xerces验证。所以我得到了我必须锁定该验证的解决方案。这不好

所以我想知道哪个 xml validator 最适合多线程项目

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;
}

谢谢苏尼尔·库马尔·萨胡

最佳答案

我认为没有任何 java xml validator 是线程安全的。选项是:

  1. 每次需要验证时创建一个新实例
  2. 创建一个你从中提取的 validator 池
  3. 利用 ThreadLocal 来缓存 validator

关于java - 哪个 xml validator 将完美地用于多线程项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2665748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com