Just a doubt regarding how JSF session management works

I got a managedbean as :

@ManagedBean(name="loginBean")
@SessionScoped
public class LoginBean implements Serializable
{

        private String userName;
        //getter and setter

        private String password;
        //getter and setter

        // Getting through spring injection
        @ManagedProperty(value="#{userBO}")
        private UserBO userBO;
        //setter method

        public fetchUserDetails(){
        User  user = userBO.getUSer(this.userName);
        //some processing
        }
    // more methods
    .
    .
    .
}

So now since the bean is sessionScoped, will JSF keep my "userBO" object in the session too? I believe that variables with both the setters and getters are likely to be stored in the session. Correct me if I am wrong. Or do I have to declare "userBO" as transient so that it is ignored?

有帮助吗?

解决方案

If your session is persisted in memory between requests, any other objects it references will be kept and not be eligible for garbage collection. There is no task that walks an object's internals setting references to null. Managed properties are only evaluated when the bean is created and before it is placed into scope.

Setting userBO to transient would only have an effect if the session was serialized (via passivation to disk, via session replication, etc.)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top