[英]how osgi bundles are used by sling
我剛開始使用Apache sling和CQ5開發。 在Sling中有使用OSGI包的概念。
我不知道吊索框架實際上如何與這些捆綁包進行交互以及捆綁包的響應在哪里?
OSGi是Sling和CQ5產品使用的模塊框架和服務平台。 Sling本身由Felix OSGi容器中托管的一系列包組成。 Bundle是由容器管理的組件/服務和java類的集合組。 捆綁包可以指定將導入,導出哪些包以及這些依賴項的版本。
您可以通過多種方式與Sling中的OSGi進行交互。 在JSP / JSP中,您可以使用sling對象( SlingScriptHelper類型),如果您包含以下行,則最有可能在JSP頁面中使用該對象:
<%@include file="/libs/foundation/global.jsp"%>
在您的組件中或具有以下內容:
<cq:defineObjects>
您可以像這樣使用它:
QueryBuilder queryBuilder = sling.getService(QueryBuilder.class);
此外,如果您有自己的OSGi組件(例如Servlet,Service等),則可以使用SCR注釋注入對其他OSGI組件/服務的引用。 Bertrand在他從Sling / CQ中的捆綁中獲取OSGi服務的答案中描述了這一點。 實際上,這意味着將@Reference注釋添加到組件中的OSGI組件變量,如下所示:
@Reference
private SlingRepository repository;
加載組件后,OSGi容器將引用該引用。
捆綁包沒有這樣的響應。 部署的捆綁包應該在系統控制台中可見:
http://localhost:4502/system/console/bundles
其組件,服務和配置在此處聲明:
http://localhost:4502/system/console/services
http://localhost:4502/system/console/components
http://localhost:4502/system/console/configMgr
(將localhost:4502替換為您自己的CQ服務器主機:端口)
獲得對組件的引用后,可以調用該方法並使用這些調用的返回值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.