>From: Ingo Düppe <[EMAIL PROTECTED]>
>
> Hi,
>
> I have a conceptional question. Within my application I define a
> managed-bean "registrationController" that gets a reference to a spring
> bean "registrationService" by the jsf property injection. The spring
> bean is stateless and is not serializable, so I need to define the field
> reference in "registrationController" as transient. This prevents me for
> getting NotSerializableException.
>
> But what happens if the session is reloaded, will jsf reinject the
> properties?
> Is there any recommended way how to deal with this.
>
> The obvious way to make the service bean serializable doesn't seem to
> work, because a whole data access layer is bound to the service bean.
>
> Or do I need to clearly separate. All managed-beans that have a
> reference to the service layer need to be scoped as application (or
> maybe as request) and only the value objects or entities are allowed to
> be stored in the session scope.
>
>
> Hi,
>
> I have a conceptional question. Within my application I define a
> managed-bean "registrationController" that gets a reference to a spring
> bean "registrationService" by the jsf property injection. The spring
> bean is stateless and is not serializable, so I need to define the field
> reference in "registrationController" as transient. This prevents me for
> getting NotSerializableException.
>
> But what happens if the session is reloaded, will jsf reinject the
> properties?
> Is there any recommended way how to deal with this.
>
> The obvious way to make the service bean serializable doesn't seem to
> work, because a whole data access layer is bound to the service bean.
>
> Or do I need to clearly separate. All managed-beans that have a
> reference to the service layer need to be scoped as application (or
> maybe as request) and only the value objects or entities are allowed to
> be stored in the session scope.
>
Instead of only using jsf property injections, you could obtain your service object in the getter.
This might cover the case where the session fails-over.
public ServiceBean getService() {
if (service == null) {
FacesContext context = getFacesContext();
service = (ServiceBean) context.getApplication().getVariableResolver().
resolveVariable(context, "registrationService");
service = (ServiceBean) context.getApplication().getVariableResolver().
resolveVariable(context, "registrationService");
}
return service;
}
> Regards,
> Ingo
>
Gary
>Here is an example of my configuration:
> <managed-bean>
> <managed-bean-name>registrationController</managed-bean-name>
>
><managed-bean-class>org.openuss.security.registration.RegistrationController</ma
>naged-bean-class>
> <managed-bean-scope>session</managed-bean-scope>
> <managed-property>
> <property-name>service</property-name>
> <value>#{registrationService}</value>
> </managed-property>
> </managed-bean>
>
>

