OSG 是Adobe Experience Manager(AEM)技术堆栈中的一个基本要素。它用于控制AEM的复合束及其配置。
OSGi "提供了标准化的基元,它允许应用程序由小的、可重用的和协作的组件构建。 这些组件可以组成应用程序并部署”。
这样,可以轻松管理捆绑套件,因为可以单独停止、安装和启动捆绑套件。 互依关系将自动处理。 每个OSGi组件(请参见OSGi规范)都包含在各种捆绑包中。
您可以通过以下任一方式管理此类包的配置设置:
sling:OsgiConfig
)尽管存在细微差异,但可以使用两种方法,主要与运行模式相关:
Web控制台是OSGi配置的标准界面。 它提供了用于编辑各种属性的UI,在该UI中,可以从预定义的列表中选择可能的值。
因此,这是最简单的方法。
使用Web控制台进行的任何配置都将立即应用并适用于当前实例,而不管当前运行模式或后续对运行模式所做的任何更改。
存储库中的content-nodes(sling:osgiConfig)
sling:OsgiConfig
节点的命名约定,您可以将配置绑定到特定的运行模式。 您甚至可以在同一存储库中保存多个运行模式的配置。无论您使用哪种方法,所有这些配置方法:
某些重要设置的详细信息列在OSGi配置设置下。
AEM中的Web控制台为配置捆绑包提供了标准化界面。 配置选项卡用于配置OSGi包,因此是配置AEM系统参数的基础机制。
所做的任何更改将立即应用于相关OSGi配置,无需重新启动。
在Web控制台中所做的更改将作为配置文件保存在存储库中。 这些组件可以包含在内容包中,以便在进一步安装中重新使用。
在Web控制台上,提及默认设置的任何说明均与Sling默认值相关。
Adobe Experience Manager有自己的默认值,因此默认设置可能与控制台上记录的默认值不同。
要使用Web控制台更新配置,请执行以下操作:
通过以下任一方式访问Web控制台的配置选项卡:
从工具->操作菜单上的链接打开Web控制台。 登录控制台后,您可以使用下拉菜单:
OSGi >
直接URL;例如:
http://localhost:4502/system/console/configMgr
将显示列表。
通过以下任一方式选择要配置的捆绑包:
此时将打开一个对话框。您可以在此根据需要进行编辑;例如,将日志级别设置为INFO
:
更新将作为配置文件保存在存储库中。 要在之后找到这些标识,(例如,要包含在内容包中以用于另一个实例),您应记下永久标识(PID
)。
单击保存。
您所做的更改会立即应用于正在运行的系统的相关OSGi配置,无需重新启动。
您现在可以找到相关的配置文件;例如,包含在内容包中以用于另一个实例。
使用Web控制台进行的配置更改会作为配置文件(.config
)保留在存储库中,具体如下:
/apps
这些内容可以包含在内容包中,并可在其他实例上重复使用。
配置文件的格式非常具体——有关完整的详细信息,请参见Sling Apache文档。
因此,建议通过在Web控制台中进行实际更改来创建和维护配置文件。
Web控制台不显示已保存更改的存储库位置,但可以轻松找到这些更改:
通过在Web控制台中进行初始更改来创建配置文件。
打开CRXDE Lite。
在工具菜单中,选择查询…。
提交查询类型 SQL
以搜索已更新配置的PID。
例如,Apache Felix OSGi管理控制台具有以下的永久标识(PID):
org.apache.felix.webconsole.internal.servlet.OsgiManager
因此SQL查询可以是:
select * from nt:base where jcr:path like '/apps/%' and contains(*, 'org.apache.felix.webconsole.internal.servlet.OsgiManager')
将显示配置文件节点。
对于上例:
/apps/system/config/org.apache.felix.webconsole.internal.servlet.OsgiManager.config
您可以打开此文件来视图更改,但为避免键入错误,建议使用控制台进行实际更改。
您现在可以生成包含此节点的内容包,并根据需要在其他实例上使用。
除了使用Web控制台,您还可以在存储库中定义配置详细信息。 这使您能够轻松配置不同的运行模式。
这些配置是通过在存储库中创建sling:OsgiConfig
节点来引用系统的。 这些节点将镜像OSGi配置,并为它们形成用户界面。 要更新配置数据,请更新节点属性。
如果修改存储库中的配置数据,则更改会立即应用于相关OSGi配置,就像是使用Web控制台进行了更改一样,并会进行相应的验证和一致性检查。 此操作也适用于将配置从/libs/
复制到/apps/
的操作。
由于同一配置参数可以位于多个位置,因此系统:
sling:OsgiConfig
的所有节点另请阅读如何仅为特定实例定义基于存储库的配置。
要向存储库添加新配置,您需要了解以下内容:
服务的永久标识(PID)。
在Web控制台中引用Configurations字段。 该名称在包名称后面的括号中显示(或在页面底部的配置信息中)。
例如,创建一个节点com.day.cq.wcm.core.impl.VersionManagerImpl.
以配置AEM WCM Version Manager。
是否需要特定的运行模式。 创建文件夹:
config
-适用于所有运行模式config.author
-对于作者环境config.publish
-对于发布环境config.<run-mode>
-视情况是否需要配置或工厂配置。
要配置的各个参数;包括需要重新创建的任何现有参数定义。
在Web控制台中引用单个参数字段。 每个参数的名称将显示在括号中。
例如,创建属性
versionmanager.createVersionOnActivation
在激活 上配置创建版本。
/libs
中是否已存在配置? 要列表实例中的所有配置,请使用CRXDE Lite中的查询工具提交以下SQL查询:
select * from sling:OsgiConfig
如果是,则可将此配置复制到 /apps/<yourProject>/
,然后在新位置进行自定义。
要将新配置实际添加到存储库,请执行以下操作:
使用CRXDE Lite导航到:
/apps/<yourProject>
如果文件夹尚未存在,请创建config
文件夹(sling:Folder
):
config
-适用于所有运行模式config.<run-mode>
-特定于特定运行模式在此文件夹下,创建一个节点:
类型: sling:OsgiConfig
名称:持久身份(PID);
例如,AEM WCM Version Manager使用com.day.cq.wcm.core.impl.VersionManagerImpl
在进行工厂配置时,将-<identifier>
追加到名称。
如下所示:org.apache.sling.commons.log.LogManager.factory.config-<identifier>
其中<identifier>
被替换为自由文本,您(必须)输入该文本以标识实例(您不能忽略此信息);例如:
org.apache.sling.commons.log.LogManager.factory.config-MINE
对于要配置的每个参数,在此节点上创建一个属性:
Create Version on Activation
,请使用versionmanager.createVersionOnActivation
您只需为要配置的参数创建属性,其他参数仍将采用AEM设置的默认值。
保存所有更改。
通过重新启动服务更新节点后,更改会立即应用(与在Web控制台中所做的更改一样)。
不得更改/libs
路径中的任何内容。
配置的完整路径必须正确,才能在启动时读取。
使用以下优先顺序:
/apps/*/config...
下的存储库节点,类型为sling:OsgiConfig
或属性文件。
/libs/*/config...
下类型为sling:OsgiConfig
的存储库节点。 (现成定义)。
来自<*cq-installation-dir*>/crx-quickstart/launchpad/config/...
的任何.config
文件。 本地文件系统上。
这意味着/libs
中的通用配置可以由/apps
中的项目特定配置来遮罩。
在系统运行时所做的配置更改会触发重新加载,修改了配置。
然后,应用以下优先顺序:
/apps
中修改配置将立即生效。/libs
中的配置将立即生效,除非它被/apps
中的配置遮住。对于运行模式特定配置,可以组合多个运行模式。 例如,您可以使用以下样式创建配置文件夹:
/apps/*/config.<runmode1>.<runmode2>/
如果所有运行模式都与启动时定义的运行模式匹配,则将应用此类文件夹中的配置。
例如,如果实例是以运行模式author,dev,emea
启动的,则将应用/apps/*/config.emea
、/apps/*/config.author.dev/
和/apps/*/config.author.emea.dev/
中的配置节点,而不应用/apps/*/config.author.asean/
和/config/author.dev.emea.noldap/
中的配置节点。
如果同一PID的多个配置适用,则应用具有最多匹配运行模式的配置。
例如,如果实例是以运行模式author,dev,emea
启动的,并且/apps/*/config.author/
和/apps/*/config.emea.author/
都定义了
com.day.cq.wcm.core.impl.VersionManagerImpl
,将应用/apps/*/config.emea.author/
中的配置。
此规则的粒度在PID级别。
不能为同一PID在/apps/*/config.author/
中定义某些属性,而为同一PID在/apps/*/config.emea.author/
中定义更多特定属性。
对于整个PID,具有最大匹配运行模式数的配置是有效的。
以下列表显示了存储库中可用配置的一小部分(在标准安装中):
作者- AEM WCM过滤器:
libs/wcm/core/config.author/com.day.cq.wcm.core.WCMRequestFilter
发布-AEM WCM过滤器:
libs/wcm/core/config.publish/com.day.cq.wcm.core.WCMRequestFilter
发布- AEM WCM页面统计:
libs/wcm/core/config.publish/com.day.cq.wcm.core.stats.PageViewStatistics
由于这些配置位于/libs
中,因此在自定义之前,不得直接编辑它们,而应将其复制到您的应用程序区域(/apps
)。
要列表实例中的所有配置节点,请使用CRXDE Lite中的查询功能提交以下SQL查询:
select * from sling:OsgiConfig
如果通过Web控制台更改配置,则(通常)会将其写入存储库:
/apps/{somewhere}
默认情况下,{somewhere}
为system/config
,因此将配置写入
/apps/system/config
但是,如果您正在编辑最初来自存储库中其他位置的配置:例如:
/libs/foo/config/someconfig
然后将更新后的配置写入原始位置;例如:
/apps/foo/config/someconfig
由admin
更改的设置保存在*.config
文件中:
/crx-quickstart/launchpad/config
这是OSGi配置管理员的专用数据区域,它包含由admin
指定的所有配置详细信息,而不管它们如何进入系统。
这是一个实施详细信息,您绝不能直接编辑此目录。
但是,了解这些配置文件的位置以便可以为备份和/或多个安装获取副本是有用的:
Apache Felix OSGi管理控制台
../crx/org/apache/felix/webconsole/internal/servlet/OsgiManager.config
CRX Sling客户端存储库
../com/day/crx/sling/client/impl/CRXSlingClientRepository/<pid-nr>.config
必须never编辑以下文件夹或文件:
/crx-quickstart/launchpad/config