Ho un EJB (PersonManager) nella modul Enterprise Application, che inietta un altro EJB (Persona):JSF-bean gestito EJB iniezione
@Stateful
public class PersonManager implements PersonManagerLocal {
@EJB
private PersonLocal person;
@Override
public void setPersonName(String name) {
person.setName(name);
}
@Override
public String getPersonName() {
return person.getName();
}
}
voglio usare il PersonManager EJB in una web app JSF. Mi definisco in faces-config.xml:
<managed-bean>
<managed-bean-name>personManager</managed-bean-name>
<managed-bean-class>ejb.PersonManager</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Il problema è che, l'iniezione della PersonLocal bean non avviene. La proprietà persona è sempre NULL. Cosa ho sbagliato?
Ma se io iniettare il PersonManager in un fagiolo JSF gestito in questo modo:
@ManagedBean
@RequestScoped
public class Index {
@EJB
private PersonManagerLocal personManager;
....
FUNZIONA. Ho bisogno del primo scenario, ti prego di aiutarmi :-D
Perché non si usa @EJB annotazioni invece di manualmente dichiararlo in faces-config.xml ?? È come cercare di tornare al passato quando Annotation non è stato inventato: P –
Hai ragione MrGreen è solo teorico, mi piacerebbe sapere la risposta. – Forty
@Forty Allora perché non funziona? La risposta non mi è chiara. –