Ho un fagiolo @SessionScoped @Named
con un metodo @Producer
per un oggetto utente:CDI dipendenze ambigui
@Named @SessionScoped
public class UserBean implements Serializable
{
//...
@Named @Produces @LoggedIn @SessionScoped
public MyUser getCurrentUser() {return user;}
}
Questo funziona bene nel mio setup (JBoss-7.1.1-Finale) e non è un problema per accedere l'utente campi da pagine JSF con #{currentUser.name}
. Il qualificatore è org.jboss.seam.security.annotations.LoggedIn
. Ora voglio @Inject
questo utente in un campo di un'altra @Named
Bean:
@Named
public class FavBean implements Serializable
{
private @Inject @LoggedIn MyUser currentUser;
}
Questo mi dà l'errore:
org.jboss.weld.exceptions.DeploymentException:
WELD-001409 Ambiguous dependencies for type [MyUser] with qualifiers [@Default] at
injection point [[field] @Inject @LoggedIn test.FavBean.currentUser].
Possible dependencies [[Managed Bean [class test.ejb.MyUser] with qualifiers
[@Any @Default],
Producer Method [MyUser] with qualifiers [@Any @Default] declared as [[method]
@Named @Produces @LoggedIn @SessionScoped public test.UserBean.getCurrentUser()]]]
Non capisco la prima dipendenza Managed Bean [class test.ejb.MyUser]
Questa classe è un semplice @Entity
e distribuito in un ebb.jar in un EAR. Come soluzione temporanea, sto attualmente iniettando il per ottenere l'utente da lì.
Oppure modificare l'annotazione 'LoggedIn' aggiungendo' Qualificatore' ad esso. Sembra che non abbia 'Qualifier'. –