The ResultHolder is a semaphore to prevent test result to be read before the
test has finished executing. However, thinking about it, I think it is no
longer needed as we now use a AutoReadHttpURLConnection class on the client
side that will read all the data returned in the output stream from the
test, thus preventing the second connection (to get the results) to happen
before all the test results have been read (and thus before the result has
been committed to the servlet contetext).
I have just removed ResultHolder from the code and committed this to CVS. If
you wait a bit you'll be able to get the nightly zip for today and it should
hopefully work for you. I still don't know why IPlanet was choking on that
semaphore but I am not sure if it allowed to play with synchronisation in
servlet code (I would say no. It seemed to be supported by all the servlet
engines except IPlanet for some reason).
Thanks
-Vincent
----- Original Message -----
From: "Chabbewal, Navjeet" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, August 20, 2001 8:57 PM
Subject: RE: cactus and Iplanet App Server 6.0
> Another success. Got the test working when I moved the line:
> theObjects.m_Config.getServletContext().setAttribute(TEST_RESULTS,
> holder);
>
> after the line:
> holder.setResult(result)
>
> in method doTest() in ServletTestCaller class and it works.
>
> Has it anything to do with the result object being serializable ????
>
> I think we are getting near.
>
>
>
> --Navjeet
>
> > -----Original Message-----
> > From: Vincent Massol [mailto:[EMAIL PROTECTED]]
> > Sent: Friday, August 17, 2001 5:13 PM
> > To: [EMAIL PROTECTED]
> > Subject: Re: cactus and Iplanet App Server 6.0
> >
> >
> >
> > ----- Original Message -----
> > From: "Chabbewal, Navjeet" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Friday, August 17, 2001 9:58 PM
> > Subject: RE: cactus and Iplanet App Server 6.0
> >
> >
> > > Vincent,
> > >
> > > OK I have been able to make some progress. The first
> > problem was that
> > > ResultHolder class must be serializable if you are adding it to
> > > ServletContext for Iplanet web container.
> >
> > Good finding ! I checked the Servlet spec and there is no mention that
> > anything put in the Servlet Context should be serializable.
> > However, I have
> > found this (section 7.7.2 of Servlet 2.2 spec) :
> >
> > "
> > Distributed Environments
> > Within an application that is marked as distributable, all
> > requests that are
> > part of a session can only
> > be handled on a single VM at any one time. In addition all
> > objects placed
> > into instances of the
> > HttpSession class using the setAttribute or putValue methods
> > must implement
> > the
> > Serializable interface. The servlet container may throw an
> > IllegalArgumentException if a non serializable object is
> > placed into the
> > session.
> > "
> >
> > Anyway, the change is little so I'll make it (done !).
> >
> > > After I did that now it is
> > > hanging in getResult() method of ResultHolder class as the result
> > > attribute is always null. I added some debug code at the end of
> > > setResult() method in ResultHolder and it is not null at
> > the exit from
> > > this method. I am wondering what could be nullifying this attribute.
> > > Give me some pointers here.
> >
> > I have discovered a bug in the Jsp Redirector and am
> > correcting it now (it
> > may be linked to your problem). At the same time, I am performing some
> > refactoring of org.apache.commons.cactus.server.* classes. I will have
> > finished tomorrow morning. I'll tell you when I have finished
> > and maybe you
> > can give it a try with the new version.
> >
> > >
> > >
> > > --Navjeet
> > Thanks a lot.
> > -Vincent
> >
>