JSF - Управляемый компонент с областью действия сеанса не имеет зависимостей, повторно вводимых при десериализации сеанса

Я не уверен, что я делаю неправильно, или я просто где-то пропустил аннотацию или элемент конфигурации. Вот ситуация:

У меня есть приложение JSF с bean-компонентом с областью действия сеанса с именем SessionData . Этот bean-компонент имеет ссылку на bean-компонент в области приложения (типа ApplicationData ), введенную в него во время создания. Это нормально работает при первом создании сеанса. Внедрение зависимости выполняется с помощью элементов в файле faces-config.xml , как показано здесь:

<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>

Потому что это не ' Не имеет смысла включать в мой объект SessionData объект ApplicationData при сериализации, я пометил ссылку ApplicationData как временную в моем SessionData объект:

transient private ApplicationData applicationData;

Все хорошо, пока веб-приложение не будет остановлено (в моем контейнере Tomcat 6.x) и сеансы не будут сериализованы. Когда я перезапускаю приложение и сеансы десериализованы, моя ссылка на ApplicationData не вводится повторно JSF. Я знаю, что десериализация должна оставлять временные поля без значения. Есть ли способ сообщить JSF о том, что для этого объекта в области сеанса требуется, чтобы его зависимости были снова установлены после десериализации?

Я использую MyFaces JSF 1.2 и Tomcat 6.0.26 в качестве контейнера своего веб-приложения.

8
задан Jim Tough 23 September 2010 в 12:30
поделиться