2010-08-09 15 views
25
  1. 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 (EDIT: Ho dimenticato che questo deve essere implementato nel mio codice, sorry)
  2. è raccomandato per cache di quegli oggetti o fare l'implementazioni JAXP già li cache?

  3. È il (ri) utilizzare di quegli oggetti thread-safe?

risposta

27

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:

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:

+0

Che dire di caching/riuso/thread-sicurezza degli oggetti Nodo? – MRalwasser

+0

I nodi DOM non sono garantiti per essere thread-safe. –

+0

Dove è specificato? – MRalwasser