के लिए पूरी तरह से काम करेगा, मैंने स्कीमा के खिलाफ एक्सएमएल सत्यापन के लिए जेडोम का उपयोग किया है। मुख्य समस्या यह है कि यह एक त्रुटि है, जबकिजो एक्सएमएल वैलिडेटर मल्टीथ्रेडिंग प्रोजेक्ट
पार्स करने का मुख्य कारण एक ही समय में xerces सत्यापन के लिए काम कर रहे धागे की जिसमें एक से अधिक था
FWK005 पार्स नहीं कहा जा सकता है देता है। इसलिए मुझे समाधान मिला कि मुझे उस सत्यापन को लॉक करना है। जो अच्छा नहीं है
तो मुझे पता है कि जो सत्यापनकर्ता पूरी तरह से परियोजना
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;
}
धन्यवाद सुनील कुमार साहू multithreading के लिए काम करता
+1 - लेकिन पहला विकल्प आपको हर बार एक नया सत्यापनकर्ता बनाने के लिए होना चाहिए। (मौजूदा विकल्प प्रदर्शन अनुकूलन हैं, और केवल तभी विचार किया जाना चाहिए यदि आप * निश्चित रूप से जानते हैं * कि सत्यापनकर्ता उदाहरणों का निर्माण एक प्रदर्शन बाधा होगी।) –
स्टीफन सी से ऊपर बहुत अच्छा बिंदु। – Dave