J'ai un objet qui est créé au cours d'une requête, et j'aimerais que cet objet appelle un service. Cependant, lorsque le framework appelle les méthodes bind, il se lie à sa propre instance de la classe, pas celle à laquelle je veux me lier.Comment consommer le service OSGI à partir de la classe non-composant
public class A {
final X x;
final Y y;
public A(Z z) {
this.x = z.x;
this.y = z.y;
}
public String doStuff() {
//do stuff
//call a service
}
}
public class B extends RestAPIServlet {
public String method(@SlingRequest SlingHttpServletRequest request, @SlingResponse SlingHttpServletResponse response) {
Z z = new ObjectMapper().readValue(request.getReader(), Z.class);
return new A(z).doStuff();
}
}
public class C extends TagSupport {
public int doStartTag() {
Z z = getZFromProperties();
String res = new A(z).doStuff();
pageContext.setAttribute("res", res);
return super.doStartTag();
}
}
Existe-t-il un moyen d'appeler un service directement depuis A? Existe-t-il un modèle préféré pour la réutilisation de code dans la situation où vous avez une balise et une servlet effectuant le même travail?
On m'a demandé de ne pas faire en sorte que la balise/servlet implémente une interface commune pour donner le service A, ni d'utiliser un fournisseur pour lui donner accès au service via la balise/servlet.