Aem 在osgi包中使用属性文件

Aem 在osgi包中使用属性文件,aem,osgi-bundle,Aem,Osgi Bundle,我已经为我的CQ5应用程序创建了一个简单的OSGi包。我想从属性文件(常规键值文件)中读取某些属性 我已尝试将该文件放入捆绑包的/resources文件夹中,并将其置于捆绑包外部(在/etc/designs/中),但该文件始终无法加载,并引发异常,如下所示: java.io.FileNotFoundException: \path\to\the\file\filename.properties (The system cannot find the path specified) 我希望将文

我已经为我的CQ5应用程序创建了一个简单的OSGi包。我想从属性文件(常规键值文件)中读取某些属性

我已尝试将该文件放入捆绑包的/resources文件夹中,并将其置于捆绑包外部(在/etc/designs/中),但该文件始终无法加载,并引发异常,如下所示:

java.io.FileNotFoundException: \path\to\the\file\filename.properties 
(The system cannot find the path specified)

我希望将文件保留在捆绑包之外,以便在不更改捆绑包的情况下对其进行编辑

您是否考虑过使用OSGi配置管理员来管理这些属性

您可以在OSGi组件/服务上定义可通过felix控制台配置的属性(例如,
localhost:4502/system/console/configMgr
)。或者,您可以将配置部署为内容,如果需要,特定于特定的运行模式(例如,编写、发布)

这与外部配置文件相比有一些优势。配置参数可以独立于部署的捆绑包进行更改。还有一个好处是,可以对正在运行的应用程序进行配置更改,而无需重新启动

您需要使用注释来注释配置属性

以下博客文章提供了更多信息:
或者在本演示文稿中

您是否考虑过使用OSGi配置管理员来管理这些属性

您可以在OSGi组件/服务上定义可通过felix控制台配置的属性(例如,
localhost:4502/system/console/configMgr
)。或者,您可以将配置部署为内容,如果需要,特定于特定的运行模式(例如,编写、发布)

这与外部配置文件相比有一些优势。配置参数可以独立于部署的捆绑包进行更改。还有一个好处是,可以对正在运行的应用程序进行配置更改,而无需重新启动

您需要使用注释来注释配置属性

以下博客文章提供了更多信息:
或者在本演示文稿中,可以使用Bundle.getEntry()方法返回Bundle资源。有关更多详细信息,请参阅

可以通过类加载器加载资源(例如,
this.getClass().getClassLoader().getResource(“path.to.the.file.filename.properties”);
)。但是请记住,捆绑包无法导出根/默认类路径,因为无法导出/导入根/默认类路径,因此您的资源需要位于导出的包中


要从存储库加载文件,您需要使用Bundle.getEntry()方法返回Bundle资源。有关更多详细信息,请参阅

可以通过类加载器加载资源(例如,
this.getClass().getClassLoader().getResource(“path.to.the.file.filename.properties”);
)。但是请记住,捆绑包无法导出根/默认类路径,因为无法导出/导入根/默认类路径,因此您的资源需要位于导出的包中


要从存储库加载文件,您需要使用

,感谢您对OSGI配置的深入了解。但是我的项目目前需要特别使用.properties文件。但是我的捆绑包代码在我保存文件的任何地方都找不到该文件。如何加载属性文件?我已尝试将其添加到捆绑包中(在/resources目录内外),并尝试将其保存在/etc/designs/myFolder中。。但总是得到相同的结果,即FileNotFoundExceptionTanks,用于了解OSGI配置。但是我的项目目前需要特别使用.properties文件。但是我的捆绑包代码在我保存文件的任何地方都找不到该文件。如何加载属性文件?我已尝试将其添加到捆绑包中(在/resources目录内外),并尝试将其保存在/etc/designs/myFolder中。。但总是得到相同的结果,即FileNotFoundException您是将属性文件保存在JCR存储库中还是文件系统中?您是将属性文件保存在JCR存储库中还是文件系统中?