"Jacob Kjome" <h...@visi.com> wrote on 15/10/2012 12:12:25 PM:

> John,
> 
> Aren't those distinct issues?  You're referring to thread safety of the 
DOM 
> itself.  Karthik's question is about a DOM Parser.  I can understand why 
one 
> might want to use the DOM across threads (though I also understand 
> the reasons 
> for the lack of thread safety), but I can't understand why one 
wouldexpect a 
> DOM Parser to be thread safe?
> 
> BTW, can you be more specific about where exactly you synchronized 
around the 
> DOM API to make it thread safe?  This information could be very useful 
for 
> others.
> 
> Anyway, it seems to me that Karthik might be sharing a DocumentBuilder 
across 
> threads.  The code he provides calls a method 
> "getDocumentBuilder(isValidating)", but he doesn't provide the 
implementation 
> of that method.  I suggest he ensures that the DOM builder object he 
returns 
> from that method isn't shared across threads.
> 
> BTW, Michael, regarding DOM thread safety, maybe you can clarify 
> something for 
> me?
> 
> In response [1] to my question about whether a cloning a shared master 
DOM 
> would be thread-safe, you said...
> 
> "A cloned node has the same owner Document. Still not 
thread-safe.  Importing 
> the Node into another DOM instance (i.e. different owner Document) 
> should work 
> though."

You were talking about cloning elements in that e-mail and my statement 
was probably directly in response to that, taking what you said literally 
and not an intention to clone the entire DOM instance as a whole.

> But in a later response [2], you referenced your own responses [3][4] in 
an 
> older thread where you appear to state that cloning should work fine, as 
long 
> as Xerces is the DOM implementation.  And, for my purposes, I can 
guarantee 
> that Xerces is the ONLY DOM implementation I will use.
> 
> So, once and for all, is a cloned document, per servlet request, 
> thread-safe?

It is with Xerces if the node you cloned was the Document node.
  
> Or do I need to import the whole document rather than clone to 
completely 
> "disconnect" it from the cached master DOM?  If so, how much more 
> overhead, if 
> any, does importing entail than cloning?

Cloning a Document node is the same as creating a new document and (deep) 
importing all the immediate child of the other document. Whether you're 
cloning or importing it's going to create new objects.

> [1] 
> http://mail-archives.apache.org/mod_mbox/xerces-j-users/
> 201106.mbox/%3COF4131DFD0.6AD897A4-ON852578A9.005D5922-852578A9.
> 005E65AA%40ca.ibm.com%3E
> [2] 
> http://mail-archives.apache.org/mod_mbox/xerces-j-users/
> 201106.mbox/%3COFA17E2F96.2D497417-ON852578A9.003594B3-852578A9.
> 0036902E%40ca.ibm.com%3E
> [3] 
> http://markmail.org/message/s7aniecyk4kwckdg#query:+page:1+mid:
> 7fl65aw5rryyljtv+state:results
> [4] http://markmail.org/message/jserv2iaeivutuuk
> 
> 
> Jake
> 
> On Mon, 15 Oct 2012 13:49:24 +0000
>  "Newman, John W" <john.new...@viaoncology.com> wrote:
> > I ran into the same issue last year, we had a pretty healthy 
discussion 
> >about it here 
> > 
http://mail-archives.apache.org/mod_mbox/xerces-j-users/201106.mbox/browser

> > 
> > Just a few synchronized(){} blocks around the DOM API and everything 
is 
> >fine.  No easily noticeable drop in performance, though I haven't yet 
> >measured, and if I did it would probably be noticeable.
> > 
> > I think most people still agree there should be a thread safe 
> implementation 
> >of the parser, but the authors of xerces were pretty clear that it 
isn't 
> >going to happen...
> > 
> > -----Original Message-----
> >From: karthikeyan...@polarisft.com [mailto:karthikeyan...@polarisft.com
] 
> > Sent: Friday, October 12, 2012 07:51
> > To: j-users@xerces.apache.org; j-users-i...@xerces.apache.org; 
> >j-...@xerces.apache.org
> > Subject: Why DOM Parser is not thread safe? Please explain
> > 
> > 
> > 
> > Apache Team,
> > 
> > Major concern for us with DOM parser in multi thread environment. Can 
you 
> >please review this and provide your inputs? Thanks.
> > 
> > OS: Sun Solaris 10
> > Server: Websphere 6
> > JDK: 1.4
> > Xerces version: Xerces_Version_1_2_0
> > Number of Daemon threads per JVM: 3
> > 
> > Scenario:
> > 
> > In our Production environment when 3 daemon threads run under a JVM.
> > 
> > When 3 similar type of XML messages gets parsed at same second
> > (concurrently) under a JVM, we notice some attribute gets missed. We 
went 
> >through net and found that DOM implementation is not guaranteed to be 
thread 
> >safe. But question is why it is not thread safe? Which part can go 
wrong? 
> >Please provide details.
> > 
> > 
> > Below is the piece of code:
> > 
> > public Document parse(InputSource inputSource, boolean isValidating) 
throws 
> >SAXException,IOException {
> > 
> >             if ( getEntityResolver() == null )
> >                   throw new IllegalStateException("EnitityResolver is 
not 
> >set");
> > 
> >             DocumentBuilder docBuilder = 
getDocumentBuilder(isValidating);
> > 
> >                   // parsing from input source
> >             docBuilder.setEntityResolver(getEntityResolver());
> >             docBuilder.setErrorHandler    (getErrorHandler());
> > 
> >             return docBuilder.parse(inputSource);
> > 
> >       }
> > 
> > Sample xml passed to this code is attached: sample_message.xml
> > 
> > (See attached file: sample_message.xml)
> > 
> > 
> > 
> > Thanks,
> > karthik
> > 
> > 
> > 
> > This e-Mail may contain proprietary and confidential information 
> and is sent 
> >for the intended recipient(s) only.  If by an addressing or 
transmission 
> >error this mail has been misdirected to you, you are requested to 
> delete this 
> >mail immediately. You are also hereby notified that any use, any form 
of 
> >reproduction, dissemination, copying, disclosure, modification, 
distribution 
> >and/or publication of this e-mail message, contents or its attachment 
other 
> >than by its intended recipient/s is strictly prohibited.
> > 
> > Visit us at http://www.polarisFT.com
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: j-users-unsubscr...@xerces.apache.org
> >For additional commands, e-mail: j-users-h...@xerces.apache.org
> > 
> > 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: j-users-unsubscr...@xerces.apache.org
> For additional commands, e-mail: j-users-h...@xerces.apache.org

Michael Glavassevich
XML Technologies and WAS Development
IBM Toronto Lab
E-mail: mrgla...@ca.ibm.com
E-mail: mrgla...@apache.org

Reply via email to