ho una sessione bean con scope:NullPointerException durante il tentativo di accedere a fagiolo @Inject nel costruttore
@Named
@SessionScoped
public class SessionBean implements Serializable {
private String someProperty;
public String getSomeProperty() {
return someProperty;
}
}
mi piacerebbe per iniettare questo in una richiesta ambito di fagioli e inizializzare con esso:
@Named
@RequestScoped
public class RequestBean {
@Inject
private SessionBean sessionBean;
public RequestBean() {
System.out.println(sessionBean.getProperty());
}
}
Tuttavia, viene generata la seguente eccezione:
java.lang.NullPointerException
at com.example.RequestBean.<init>(RequestBean.java:42)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at org.jboss.weld.introspector.jlr.WeldConstructorImpl.newInstance(WeldConstructorImpl.java:206)
at org.jboss.weld.injection.ConstructorInjectionPoint.newInstance(ConstructorInjectionPoint.java:117)
at org.jboss.weld.bean.ManagedBean.createInstance(ManagedBean.java:336)
at org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget.produce(ManagedBean.java:200)
at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:292)
...
Come è causato e come posso risolverlo?
La dipendenza può essere iniettato solo una volta l'istanza è fatto, ma lo si utilizza all'interno del costruttore. Prova a eseguire il codice in fase di post-costruzione. –
L'ho fatto. stesso risultato. –
Credo che tu non abbia capito la parte "post-costruzione". Dovresti usare un metodo '@ PostConstruct' e assolutamente non invocarlo dall'interno del costruttore. – BalusC