J'ai une classe de sous-ressource qui doit être initialisé avec un paramètre à partir du chemin et qui contient également une référence à un EJB qui doit être injecté.JAX-RS initialize Il n'y avait pas sous-ressource objet disponible pour l'injection
classe de ressources:
@Path("widgets")
public class MasterResource{
@Inject
WidgetBean widgets;
@Context
ResourceContext rc;
@Path("{year}")
public WidgetArchives wArchives(@PathParam("year") String year){
return rc.initResource(new WidgetArchiveResource(year));
}
}
classe sous-ressource
public class WidgetArchiveResource{
@Inject
WidgetBean widgets;
public WidgetArchiveResource(String year){
....code
}
@GET
public String doGet(){
....code using WidgetBean
}
}
Quand j'invoque obtenir l'année, je vois l'erreur suivante:
org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=WidgetBean,parent=WidgetArchiveResource,qualifiers={},position=-1,optional=false,self=false,unqualified=null,542790913)
Je suis nouveau à Java EE. Qu'est-ce que je fais mal?
Essayez d'injecter 'WidgetArchiveResource' et ne pas créer manuellement cette classe avec' new'. Fournissez un constructeur par défaut et définissez l'année à l'aide d'une méthode. Vous pouvez utiliser 'bean-discovery-mode =" all "' dans beans.xml – simdevmon
Ceci est une sorte d'exercice d'apprentissage pour moi. J'ai vu initresource utilisé de cette façon et j'essaie de le comprendre. – KG6ZVP