A little bit off topic maybe, but if you try to access some session scoped data in a managed bean (works only with request or extended request scoped beans), then one elegant way to do is as follows:
1. In your managed bean declare the private field UserData userData with getter and setter
2. In faces-config.xml, where you declared your managed-bean, add a managed property:
Then you will have your field populated by the container (it will not work in bean's constructor though, but then you could overcome that with a @PostConstruct annotated methdo).