Obtenir des services OSGi à partir d'un bundle dans Sling / CQ
Je suis à l'aide de Journée CQ. Je veux stocker des données dans une DB SQL Server, en utilisant un pool de connexion disponible dans le Félix de la console. Je peux le faire à partir d'une JSP, à l'aide de la "fronde" objet de type SlingScriptHelper définis dans le defineObjects tag
sling.getService(DataSourcePool.class).
Cependant, je tiens à utiliser une servlet créé dans un bundle OSGi pour traiter les demandes du client. La servlet n'ont pas defineObjects marque, de sorte que la "fronde" de l'objet n'est pas définie. Je ne vois pas une façon de créer un valide SlingScriptHelper objet dans ma servlet, mais il me semble qu'il doit être possible.
Est-il un moyen?
source d'informationauteur joelt
Vous devez vous connecter pour publier un commentaire.
Pour obtenir un service de java OSGi composant que vous n'avez pas besoin de la SlingScriptHelper, vous pouvez soit utiliser le BundleContext.la méthode getService(...) la méthode ou l'utilisation de SCR annotations de laisser SCR injecter le service dans votre composant.
Comme un exemple, vous pouvez regarder comment certains composants de Harnais Slingbucks échantillon utiliser la SCR annotations, le ConfirmedOrdersObserver classe pour exemple la SlingRepository de cette façon:
Voir http://felix.apache.org/site/apache-felix-maven-scr-plugin.html pour le plugin Maven gère ces annotations.
Vous pouvez utiliser le BundleContext pour obtenir le Service, en utilisant le #getServiceReference et #la méthode getService méthodes. Par exemple, si vous êtes intéressé dans le ResourceResolverFactory, vous pouvez l'obtenir comme suit:
YourClass obj = ce.getSlingScriptHelper().la méthode getService(yourclass.class);
obj.quel que soit();