Ich habe eine Subresource-Klasse, die mit einem Parameter aus dem Pfad initialisiert werden muss und die auch einen Verweis auf ein EJB enthält, das injiziert werden muss.Jax-rs initialisiert Subresource Es gab kein Objekt zur Injektion
Ressourcenklasse:
@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));
}
}
Subresource Klasse
public class WidgetArchiveResource{
@Inject
WidgetBean widgets;
public WidgetArchiveResource(String year){
....code
}
@GET
public String doGet(){
....code using WidgetBean
}
}
Als ich mit dem Jahr erhalten aufrufen, sehe ich den folgenden Fehler:
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)
ich Java bin neu EE. Was mache ich falsch?
Versuchen zu injizieren 'WidgetArchiveResource' und nicht manuell diese Klasse mit' new' erstellen. Stellen Sie einen Standardkonstruktor bereit und legen Sie das Jahr durch eine Methode fest. Vielleicht möchtest du 'bean-discovery-mode =" all "' in bohnen.xml verwenden. – simdevmon
Das ist eine Art Lernübung für mich. Ich habe gesehen, dass initresource auf diese Weise verwendet wird, und ich versuche es zu verstehen. – KG6ZVP