JSF - O bean gerenciado no escopo da sessão não possui dependências injetadas novamente na desserialização da sessão
Não tenho certeza se o que estou fazendo está errado ou se apenas perdi uma anotação ou item de configuração em algum lugar. Aqui está a situação:
Eu tenho um aplicativo JSF com um bean com escopo de sessão chamadoSessionData
. Este bean possui uma referência de bean no escopo do aplicativo (do tipoApplicationData
) injetado nele no momento da criação. Isso funciona bem quando a sessão é criada. A injeção de dependência é feita com<managed-bean>
elementos nofaces-config.xml
arquivo como mostrado aqui:
<managed-bean>
<managed-bean-name>sessionData</managed-bean-name>
<managed-bean-class>my.package.SessionData</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>applicationData</property-name>
<property-class>my.package.ApplicationData</property-class>
<value>#{applicationData}</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>applicationData</managed-bean-name>
<managed-bean-class>my.package.ApplicationData</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
Porque não faz sentido ter meuSessionData
objeto inclui oApplicationData
objeto quando é serializado, marquei oApplicationData
referência como transitória na minhaSessionData
objeto:
transient private ApplicationData applicationData;
Tudo fica bom até que o aplicativo Web seja parado (no meu contêiner Tomcat 6.x) e as sessões sejam serializadas. Quando reinicio o aplicativo e as sessões são desserializadas, minha referência aApplicationData
não é injetado novamente pelo JSF. Eu sei que a desserialização deve deixar campos transitórios sem um valor.Existe uma maneira de sinalizar ao JSF que este objeto com escopo de sessão exige que suas dependências sejam definidas novamente após a desserialização?
Estou usando o MyFaces JSF 1.2 e o Tomcat 6.0.26 como meu contêiner de aplicativo da web.