CQ-如何提前知道Osgi配置工厂PID

CQ-如何提前知道Osgi配置工厂PID,osgi,aem,sling,Osgi,Aem,Sling,Adobe的文档说: 在进行工厂配置时,将-附加到名称 如:org.apache.sling.commons.log.LogManager.factory.config- 其中替换为您(必须)输入以标识实例的自由文本(您不能忽略此信息);例如: org.apache.sling.commons.log.LogManager.factory.config-MINE 这意味着“自由文本”是一个标识符,而不仅仅是一个名称。我希望是服务PID 我正在设置JDBC连接池的一个实例。我在/jcr_root/

Adobe的文档说:

在进行工厂配置时,将-附加到名称

如:org.apache.sling.commons.log.LogManager.factory.config-

其中替换为您(必须)输入以标识实例的自由文本(您不能忽略此信息);例如:

org.apache.sling.commons.log.LogManager.factory.config-MINE

这意味着“自由文本”是一个标识符,而不仅仅是一个名称。我希望是服务PID

我正在设置JDBC连接池的一个实例。我在/jcr_root/apps//config目录中有一个名为“com.day.commons.datasource.jdbcpool.JdbcPoolService mypid.xml”的xml配置文件。安装包含xml文件的包将创建预期的、正确命名的sling:OsgiConfig节点。这反过来会创建一个已配置的服务实例,但PID是com.day.commons.datasource.jdbcpool.JdbcPoolService


是否有办法提前知道PID是什么,以便可以引用它?

目前无法提前知道该id。我在OSGi开发列表上问过aleady是否可以增强它。最好是以人类可读的方式识别工厂配置。不幸的是,答复是没有必要或类似。也许如果更多的人要求它:-)

不。这是一个随机UUID。我想我不需要它,因为我可以使用通配符来代替UUID和任何其他服务属性来过滤服务。对于JdbcPoolService,我可以使用
(&(service.pid=com.day.commons.datasource.jdbcpool.JdbcPoolService*)(datasource.name=which))