Hi Marc,
Marc Speck schrieb:
> Ok, everybody seems to silently agree that there is no threading issue with
> this servlet method:
>
> public DavLocatorFactory getLocatorFactory() {
> if (locatorFactory == null) {
> locatorFactory = new LocatorFactoryImplEx(resourcePathPrefix);
> }
> return locatorFactory;
> }
>
>
> I just ask why this is thread safe. It is not called in servlet.init() or
> the like, isn't it?
I assume the default implementation has no thread issues actually
because the LocatorFactoryImplEx is a very simple class with a single
internal field set by the constructor.
In case of multi-threaded call to the getLocatorFactory method, multiple
instances of the LocatorFactoryImplEx class may be created of which only
a single one will ultimately remain assigned to the locatorFactory field.
If you overwrite this method and have a more complicated implementation
of the DavLocatorFactory interface, which you want to ensure, that only
a single instance is created, I suggest you implement synchronization in
your overwritten method.
Regards
Felix