How do you know that your bean is created twice? Do you have a log statement in your constructor? If so, don’t do that. CDI creates proxy classes for request scoped beans. These proxies are created by subclassing your bean. When an instance of this proxy is created, your constructor will also be executed. That’s why you see constructor calls twice. One for the proxy, one for the real bean. You typically shouldn’t use constructors for your managed bean. Instead, use @PostConstruct for initialization.