Karaf教程第3部分 使用OSGi Metatype服务和Felix Webconsole改善配置编辑
Karaf教程第3部分 使用OSGi Metatype服务和Felix Webconsole改善配置编辑
在Karaf教程第2部分使用Configuration Admin服务一节,我们学习了如何使用简单的配置来配置我们的Bundle。
在这一部分,我们将学习如何使用Metatype服务Felix Webconsole来简化创建和编辑这些配置。
3.1 使用Webconsole编辑无类型化的配置
当在第2部分Karaf容器已经运行,配置已经存在的时候,我们就可以使用Felix Webconsole来编辑配置。
打开浏览器,访问http://localhost:8181/system/console/configMgr。你将看到config admin服务知道的配置列表:
3.2 无类型的配置
我们想要看到第一个东西是无类型的配置。要想看这个配置,可以从给git源代码中复制ConfigApp.cfg文件到Karaf的etc目录。现在它应该在上面的列表中被列出。如果你点击edit按钮,你会看到下面的界面:
你现在得到一个自由格式的编辑器,内容是当前的配置。你可以编辑和保存这个配置。在config admin服务中的配置发生了改变,并在内部持久化但没有写到etc目录(在当然的karaf版本)。
现在,再次从etc目录删除这个文件。列表中将不再显示该配置。
3.3 类型化的配置
现在我们将看一看类型化的配置。Felix Webconsole可以创建类型化的配置,也可以在编辑器中友好的显示他们。
为了实现这个功能,我们需要在bundle中创建一个OSGi的Metatype信息。只需要在OSGI-INF/metatype目录中简单地创建一个文件即可。
对于我们的configapp示例,相应的配置如下所示:
<?xml version="1.0" encoding="UTF-8"?> <MetaData xmlns="http://www.osgi.org/xmlns/metadata/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.osgi.org/xmlns/metadata/v1.0.0 http://www.osgi.org/xmlns/metatype/v1.1.0/metatype.xsd "> <OCD description="Configured Example Application" name="ConfigApp" id="ConfigApp"> <AD name="Title" id="title" required="true" type="String" default="Default Title" description="Title for the Application"/> </OCD> <Designate pid="ConfigApp"> <Object ocdref="ConfigApp"/> </Designate> </MetaData> |
这只是一个具有Metatype命名空间的xml文件而已。对象类定义(OCD)元素表示配置。
属性 |
描述 |
id |
在designate元素中引用的id |
description |
在编辑器中显示的很长的描述 |
name |
在编辑器中显示的用户友好的名称 |
属性定义(AD)表示一个熟悉:
属性 |
描述 |
id |
用于编程时获取属性 |
name |
在编辑器中显示的用户友好的名称 |
description |
在编辑器中显示的很长的描述 |
required |
(true或no)决定这个熟悉是否必须被填写 |
type |
(String | Long | Double | Float | Integer | Byte |Char |Boolean | Short) |
default |
如果属性值不存在时的默认值 |
3.4 测试类型化的配置
现在我们使用mvn install命令构建configapp工程。将configapp.jar复制到Karaf的deploy目录。Webconsole现在应该会在configurations标签上显示出ConfigApp元素,即使该配置不存在。
你可以点击edit按钮,应该可以如下所示的界面:
我们了一个良好的格式来编辑我们的配置,如果我们创建一个新的配置,也会得到默认的值。点击Save,将会在config admin服务中创建或更新这个配置,bundle也会对这个改变做出反应。
为了看大更大的示例,你可以编辑felix fileinstall bundle的配置,你会看到如下的界面:
3.5 总结
在本教程中我们学习了如何使用Felix Webconsole编辑类型化和无类型化的配置,如何定义配置元数据。