Thats a good approach too, I might look into creating a utility bean to do that injection that also inject a null when the context is shutting down. Making sure the solution works nicely with spring context and servlet context reloads which cause problems right now. I'm thinking the injecting a null would work with this model to fit the reloads requirement.
-Eric
Drew Wills wrote:
> Eric Dalquist wrote:
>> ...
>>
>> The problem is in some places that the PortalApplicationContextFacade
>> is used to access the BeanFactory there is no access to a
>> ServletContext which the WebApplicationContextUtils needs to access
>> the replacement WebApplicationContext.
>> The affected areas are:
>> CError - constructor, loads a IThrowableToElement implementation
>> which defines ways to render certain exceptions
>> PersonDirectory - getPersonAttributeDao, loads the root
>> IPersonAttributeDao for use by other parts of the framework. This
>> method is called from: Authentication, PersonAttributeGroupStore,
>> CPersonAttributes, and PersonDirNameFinder
>>
>> I'm not sure what the best solution for this is. I'd like to avoid as
>> much custom Spring related code as possible but we may still need a
>> static accessor that doesn't require the ServletContext to access the
>> WebApplicationContext object.
>
> Eric,
>
> What about an approach like this (example from PersonDirectory)...
>
> *****
>
> ++ Java:
>
> public class PersonDirectory {
>
> private static IPersonAttributeDao impl;
>
> public static Object setPersonAttributeDao(IPersonAttributeDao dao) {
> impl = dao;
> return PersonDirectory.class; // shouldn't matter what's returned
> }
>
> ...
>
> }
>
> ++ BeansML:
>
> <bean id="personDirectoryService" factory-method="setPersonAttributeDao">
> <constructor-arg>
> <ref bean="personAttributeDao"/>
> <constructor-arg>
> </bean>
>
> *****
>
> This should cause the bean container to inject the normal
> 'personAttributeDao' into the staticly-accessed PersonDirectory
> service to support legacy code.
>
> drew wills
>
smime.p7s
Description: S/MIME Cryptographic Signature
