吊带如何使用osgi捆绑

Rij*_*hna 7 java osgi sling aem

我刚开始使用Apache sling和CQ5开发.在Sling中有使用OSGI包的概念.

我不知道吊索框架实际上如何与这些捆绑包进行交互以及捆绑包的响应在哪里?

dif*_*ffa 7

OSGi是Sling和CQ5产品使用的模块框架和服务平台.Sling本身由Felix OSGi容器中托管的一系列包组成.Bundle是由容器管理的组件/服务和java类的集合组.捆绑包可以指定将导入,导出哪些包以及这些依赖项的版本.

您可以通过多种方式与Sling中的OSGi进行交互.在JSP/JSP中,您可以使用sling对象(SlingScriptHelper类型),如果您包含以下行,则最有可能在JSP页面中使用该对象:

<%@include file="/libs/foundation/global.jsp"%>
Run Code Online (Sandbox Code Playgroud)

在您的组件中或具有以下内容:

<cq:defineObjects> 
Run Code Online (Sandbox Code Playgroud)

您可以像这样使用它:

QueryBuilder queryBuilder = sling.getService(QueryBuilder.class);
Run Code Online (Sandbox Code Playgroud)

此外,如果您有自己的OSGi组件(例如Servlet,Service等),则可以使用SCR注释注入对其他OSGI组件/服务的引用.Bertrand在他从Sling/CQ中的捆绑中获取OSGi服务的答案中描述了这一点.实际上,这意味着将@Reference注释添加到组件中的OSGI组件变量,如下所示:

 @Reference
 private SlingRepository repository;
Run Code Online (Sandbox Code Playgroud)

加载组件后,OSGi容器将引用该引用.

捆绑包没有这样的响应.部署的捆绑包应该在系统控制台中可见:

http://localhost:4502/system/console/bundles
Run Code Online (Sandbox Code Playgroud)

其组件,服务和配置在此处声明:

http://localhost:4502/system/console/services
http://localhost:4502/system/console/components
http://localhost:4502/system/console/configMgr
Run Code Online (Sandbox Code Playgroud)

(将localhost:4502替换为您自己的CQ服务器主机:端口)

获得对组件的引用后,可以调用该方法并使用这些调用的返回值.