Hi Vincent,
On Tue, Oct 20, 2009 at 6:18 PM, Vincent Massol <[email protected]> wrote:
> IMO the problem is the design of XWikiDavServlet.
> It shouldn't contain any field.
>
> For example why not use the component manager to load a component to
> perform the handling of DAV requests?
>
jackrabbit DavServlet has following abstract methods:
<code>
/**
* Checks if the precondition for this request and resource is valid.
*
* @param request
* @param resource
* @return
*/
abstract protected boolean isPreconditionValid(WebdavRequest request,
DavResource resource);
/**
* Returns the <code>DavSessionProvider</code>.
*
* @return the session provider
*/
abstract public DavSessionProvider getDavSessionProvider();
/**
* Returns the <code>DavSessionProvider</code>.
*
* @param davSessionProvider
*/
abstract public void setDavSessionProvider(DavSessionProvider
davSessionProvider);
/**
* Returns the <code>DavLocatorFactory</code>.
*
* @return the locator factory
*/
abstract public DavLocatorFactory getLocatorFactory();
/**
* Sets the <code>DavLocatorFactory</code>.
*
* @param locatorFactory
*/
abstract public void setLocatorFactory(DavLocatorFactory
locatorFactory);
/**
* Returns the <code>DavResourceFactory</code>.
*
* @return the resource factory
*/
abstract public DavResourceFactory getResourceFactory();
/**
* Sets the <code>DavResourceFactory</code>.
*
* @param resourceFactory
*/
abstract public void setResourceFactory(DavResourceFactory
resourceFactory);
/**
* Returns the value of the 'WWW-Authenticate' header, that is returned
in
* case of 401 error.
*
* @return value of the 'WWW-Authenticate' header
*/
abstract public String getAuthenticateHeaderValue();
</code>
Now I have few doubts about why there are setXXX() methods but the point is
we need those instance variables if we are to implement these methods.
Thanks.
- Asiri
> The CM would be retrieved from the servlet context.
>
> Thanks
> -Vincent
>
> On Oct 20, 2009, at 2:36 PM, Asiri Rathnayake wrote:
>
> > Hi,
> >
> >
> > ok that's better indeed. The reason is that according to the spec a
> >> Servlet can be serialized (saved on disk) if the memory becomes low
> >> and thus must be able to be loaded back into memory at a later point
> >> (the same need for load-balancing).
> >>
> >> However your change has introduced another problem: transient means
> >> the field will not be saved when the servlet is serialized. Thus when
> >> it's deserialized these fields will be null and the code will fail...
> >>
> >> Whereas before the servlet would have failed on serialization, it'll
> >> now fail on deserialization...
> >>
> >> Note: Deserialization will not call the constructor.
> >>
> >
> > I was hoping upon de serialization it will call init() where i
> > initialize
> > these variables. But I can't find a reference that says so (yet).
> >
> >
> >
> >> Solution: either make the field objects serializable or capture
> >> deserialization to set up the transient field values. Note that this
> >> last solution may potentially cause problems with threading so this
> >> might need to be synchronized I think. The best solution is to make
> >> the field Objects Serializable IMO.
> >>
> >
> > One instance variable used is provided by jackrabbit library which
> > is not
> > serializable. I can do a custom serialization or,
> >
> > I can create these instance variable for each request (get***) which
> > is a
> > waste.
> >
> > Looking around to see if there is another way.
> >
> > Thanks.
> >
> > - Asiri
> >
> >
> >>
> >> WDYT?
> >>
> >> Thanks
> >> -Vincent
> >>
> >>
> >> _______________________________________________
> >> devs mailing list
> >> [email protected]
> >> http://lists.xwiki.org/mailman/listinfo/devs
> >>
> > _______________________________________________
> > devs mailing list
> > [email protected]
> > http://lists.xwiki.org/mailman/listinfo/devs
>
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs