Ich habe eine @SessionScoped @Named
Bohne mit einem @Producer
Verfahren für ein Benutzerobjekt:CDI mehrdeutige Abhängigkeiten
@Named @SessionScoped
public class UserBean implements Serializable
{
//...
@Named @Produces @LoggedIn @SessionScoped
public MyUser getCurrentUser() {return user;}
}
Dies funktioniert gut in meinem Setup (JBoss-7.1.1-Final) und es ist kein Problem, den Benutzer für den Zugriff auf Felder von JSF-Seiten mit #{currentUser.name}
. Der Qualifier ist . Jetzt möchte ich den Benutzer in einem Feld @Inject
in einem anderen @Named
Bean:
@Named
public class FavBean implements Serializable
{
private @Inject @LoggedIn MyUser currentUser;
}
Das gibt mir den Fehler:
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()]]]
Ich verstehe nicht die erste Abhängigkeit Managed Bean [class test.ejb.MyUser]
Diese Klasse ist eine einfache @Entity
und in einem ebb.jar in einem EAR eingesetzt. Als Workaround injiziere ich gerade den UserBean
Benutzer von dort.
Oder ändern Sie 'LoggedIn' Annotation, indem Sie' Qualifier' hinzufügen. Es scheint, dass es nicht "Qualifier" hat. –