thank you for discovering the bug and reporting it.

peter

On Apr 4, 2005 4:50 PM, KiYun Roe <[EMAIL PROTECTED]> wrote:
> Works great. Thanks!
> 
> -----Original Message-----
> From: Peter Lin [mailto:[EMAIL PROTECTED]
> Sent: Saturday, April 02, 2005 3:14 PM
> To: JMeter Developers List
> Subject: Re: WebSerivceSampler not thread safe
> 
> I've patched the bug my making the document builder non static. please
> give it a try.
> 
> thanks again for reporting it.
> 
> peter lin
> 
> On Mar 31, 2005 9:38 PM, KiYun Roe <[EMAIL PROTECTED]> wrote:
> > Hi,
> >
> > There's a comment at about line 108 of
> org.apache.jmeter.protocol.http.sampler.WebServiceSampler.java expressing
> concern that sharing a single DocumentBuilder might not be thread safe.
> Well, it's not. This explains the intermittent, mysterious failures that
> I've seen testing a web service from multiple JMeter threads.
> >
> > Here's a possible patch using a ThreadLocal to allocate one
> DocumentBuilder per thread. I'm new to Jakarta. How do I get this into the
> source distribution?
> >
> > Thanks.
> >
> > -- KiYun Roe
> >
> > Index:
> src/protocol/http/org/apache/jmeter/protocol/http/sampler/WebServiceSampler.
> java
> > ===================================================================
> > RCS file:
> /home/cvspublic/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/
> http/sampler/WebServiceSampler.java,v
> > retrieving revision 1.17
> > diff -b -u -w -r1.17 WebServiceSampler.java
> > ---
> src/protocol/http/org/apache/jmeter/protocol/http/sampler/WebServiceSampler.
> java    6 Jan 2005 01:11:43 -0000       1.17
> > +++
> src/protocol/http/org/apache/jmeter/protocol/http/sampler/WebServiceSampler.
> java    1 Apr 2005 02:16:39 -0000
> > @@ -112,7 +112,14 @@
> >       * consider using Apache commons pool to create a pool of document
> builders
> >       * or make sure XMLParserUtils creates builders efficiently.
> >       */
> > -    private static DocumentBuilder XDB = null;
> > +    private static ThreadLocal ThreadLocalXDB =
> > +       new ThreadLocal()
> > +       {
> > +          protected Object initialValue()
> > +          {
> > +             return XMLParserUtils.getXMLDocBuilder();
> > +          }
> > +       };
> >
> >         private String FILE_CONTENTS = null;
> >
> > @@ -413,10 +420,7 @@
> >       */
> >      protected Document openDocument(String key)
> >      {
> > -               if (XDB == null)
> > -               {
> > -                       XDB = XMLParserUtils.getXMLDocBuilder();
> > -               }
> > +               DocumentBuilder XDB = (DocumentBuilder)
> ThreadLocalXDB.get();
> >                 Document doc = null;
> >         // if either a file or path location is given,
> >         // get the file object.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to