Mi piacerebbe sapere che oggetti possono essere riutilizzati (nello stesso o diverso documento) quando si utilizza l'Java API for XML lavorazione, JAXP:Java e XML (JAXP) - Che dire della memorizzazione nella cache e della sicurezza dei thread?
DocumentBuilderFactory
DocumentBuilder
XPath
Node
-
ErrorHandler
è raccomandato per cache di quegli oggetti o fare l'implementazioni JAXP già li cache?
È il (ri) utilizzare di quegli oggetti thread-safe?
risposta
riutilizzo
Nello stesso filo tali oggetti può e deve essere riutilizzati. Ad esempio, è possibile utilizzare DocumentBuilder per analizzare più documenti.
Thread Safety
DocumentBuilderFactory utilizzato per dichiarare esplicitamente che non era thread-safe, credo che questo sia ancora vero:
Un'implementazione della classe DocumentBuilderFactory NON è garantita discussione sicuro. È attivo per l'applicazione utente per verificare che DocumentBuilderFactory sia utilizzato da da più di un thread.
Da Stack Overflow, DocumentBuilder non sembra essere thread-safe neanche. Tuttavia in Java SE 5 è stato aggiunto un metodo di ripristino per consentire di riutilizzare DocumentBuilders:
- Is DocumentBuilder.parse() thread safe?
- http://download-llnw.oracle.com/javase/6/docs/api/javax/xml/parsers/DocumentBuilder.html#reset()
- http://www.junlu.com/msg/289939.html (su DocumentBuilder.resettato())
XPath non è thread-safe, dal Javadoc
Un oggetto XPath non è thread-safe e non rientrante. In altre parole, è responsabilità dell'applicazione per assicurarsi che un oggetto XPath non è utilizzata da più di un filo in qualsiasi dato momento, e mentre il valutare metodo viene richiamato, applicazioni può non ricorsivamente chiamare l'valutare Metodo .
Nodo non è thread-safe, dal sito Xerces
è l'implementazione Xerces DOM thread-safe? No. Il DOM non richiede che le implementazioni siano thread sicure. Se è necessario accedere al DOM da più thread, è necessario aggiungere al codice dell'applicazione.
ErrorHandler è un'interfaccia, cui spetta all'implementazione di tale interfaccia per garantire thread-sicurezza. Per informazioni sulle modalità thread-sicurezza si potrebbe cominciare da qui:
Che dire di caching/riuso/thread-sicurezza degli oggetti Nodo? – MRalwasser
I nodi DOM non sono garantiti per essere thread-safe. –
Dove è specificato? – MRalwasser