Именованное внедрение может быть немного нестабильным на некоторых серверах EE при использовании в сочетании с @Produces
. Не только это, но и фактически создает совершенно отдельный экземпляр с двусмысленностью. Поэтому, если у вас есть компонент User, определенный в области сеанса где-то еще, они считаются двумя разными источниками внедрения. Может быть, это то, что происходит, и он забирает второй при перезагрузке?
Что произойдет, если вы отойдете от @Produces
(удалите produceUser()
) и вместо этого сделаете;
@Named
@SessionScoped
public class User implements Serializable {
@PostConstruct
private init() {
/* Do what you did in the producer method here */
}
}
Это действительно должно сработать - иначе что-то серьезно не так.