最近有关托管服务的帖子让我想起了我值得一提的Apache Felix File Install中的一项功能。 在与Holger合作进行项目时,我从他那里了解到File Install不能仅用于管理包。 它还监视配置文件,并在托管服务各自的配置更改时更新托管服务。

文件安装还可以配置托管服务工厂等。 但是,我发现对于配置数据通常是特定于环境的托管服务(例如打印机URL,数据库URL,TCP端口)特别有用。 最好的事情是:它使您摆脱了以编程方式摆弄Configuration Admin的麻烦。

怎么运行的

可以告诉“文件安装”监视某个文件夹(通常通过系统属性)。 然后,您可以将配置文件(普通Java属性文件)放入该文件夹。 配置文件通过命名约定与托管服务关联。 文件名的格式必须为<pid> .cfg。 如果存在具有匹配PID的托管服务,则在文件更改时将对其进行更新。

我在GitHub上放了一个最小的独立示例。 它有一个捆绑包,提供了如下实现的EchoService:

public class EchoService implements ManagedService {public void updated( Dictionary<String, ?> properties ) {if( properties != null ) {System.out.println( "port = " + properties.get( "port" ) );}}}

易于发现:其全部目的是在配置更改时将其打印出来。

EchoService已使用echoservice的PID注册。 除捆绑软件外,还有一个包含配置文件的项目。 它名为echoservice.cfg并具有一个属性: port = 7

启动配置将必要的软件包组合在一起:OSGi框架(此处为Equinox),示例软件包,Felix Gogo Shell(用于诊断问题)和文件安装以及Configuration Admin。 这些虚拟机参数

-Dfelix.fileinstall.dir="${project_loc:com.codeaffine.fileinstall.example.config}"
-Dfelix.fileinstall.noInitialDelay=true
-Dfelix.fileinstall.poll=1000

告诉“文件安装”监视项目文件夹并每秒检查一次更改。 多亏了project_loc变量,启动配置可在整个开发环境中移植。

现在我们启动OSGi框架,控制台输出将如下所示:

port = 7

如果我们对echoservice.cfg文件进行更改并稍等片刻,我们将看到EchoService已更新。 新配置将显示在控制台日志中。

更多的

如果这引起您的兴趣,您可能需要更深入地了解File Install。 它还支持托管服务工厂,可以写回配置更改,可以替换属性值,以及监视多个文件夹。 文档页面包含所有详细信息。

参考:在Code Affine博客上,从我们的JCG合作伙伴 Rudiger Herrmann 使用Apache Felix File Install配置OSGi服务 。

翻译自: https://www.javacodegeeks.com/2013/10/configure-your-osgi-services-with-apache-felix-file-install.html

使用Apache Felix文件安装配置OSGi服务相关推荐

  1. 实验图文详解——apache的编译安装及httpd服务开机自启

    实验图文详解--apache的编译安装及httpd服务开机自启 1.导入安装包 2.解压安装包 3.分别解压httpd.apr.apr-util包 4.对apr.apr-util目录进行移动及重命名操 ...

  2. apache+webdav的安装配置

    原始资料:http://www.howtoforge.com/setting-up-webdav-with-apache2-on-debian-etch apache+webdav的安装配置 需求: ...

  3. 阿里云服务器 ECS 部署lamp:centos+apache+mysql+php安装配置方法 (centos7)

    阿里云服务器 ECS 部署lamp:centos+apache+mysql+php安装配置方法 (centos7) 1.效果图 1 2. 部署步骤 1 1. mysql安装附加(centos7) 7 ...

  4. Windows下Apache Tomcat 8安装配置

    1.环境配置: 1.安装好jar jdk文件包 jdk1.8.0_66与jre1.8.0_66 打开我的电脑–属性–高级–环境变量 : 新建系统变量JAVA_HOME 和CLASSPATH 变量名:J ...

  5. php7 apache 环境,php7+apache的环境安装配置

    php7+apache的环境安装配置 php7+apache的环境安装配置 为什么80%的码农都做不了架构师?>>> 因为刚开始接触php,所以要对php的开发环境进行搭建. 1.首 ...

  6. Linux与云计算——第二阶段Linux服务器架设 第八章:FTP服务器架设—安装配置FTP服务和客户端配置...

    Linux与云计算--第二阶段Linux服务器架设 第八章:FTP服务器架设-安装配置FTP服务和客户端配置 安装Vsftpd [1] 安装并配置Vsftpd. [root@server ~]# yu ...

  7. linux下安装配置redis服务

    2019独角兽企业重金招聘Python工程师标准>>> linux下安装配置redis服务 2016年03月25日 15:39:31 coding_everyday 阅读数:3530 ...

  8. centos6.5安装配置LDAP服务[转]

    centos6.5安装配置LDAP服务[转] 安装之前查一下 1 find / -name openldap* centos6.4默认安装了LDAP,但没有装ldap-server和ldap-clie ...

  9. 【转】ubuntu16.04安装配置tftp服务

    转自:ubuntu16.04安装配置tftp服务_carspiriter的博客-CSDN博客_ubuntu安装tftp 首先声明:tftp是client客户端,tftpd是server服务器端,d应该 ...

最新文章

  1. 安卓模拟器BlueStacks 安装使用教程(图解)
  2. centos7 安装telnet服务
  3. 桌面式高清存储寻求合作
  4. jQuery Mobile 快速入门
  5. laravel框架数据迁移
  6. 第二冲刺阶段个人博客7
  7. python卸载module_Python学习笔记
  8. 【HDU - 1069】Monkey and Banana (最长下降子序列 + 贪心,最长上升子序列类问题)
  9. python画3d心形_有了这几个3D立体手工教程,幼儿园手工作业再也不用愁!
  10. 计算机组成原理刘超课后答案,计算机组成原理实验教学的研究.doc
  11. SOLIDWORKS软件转Dwg格式教程
  12. 酷家乐的 Istio 与 Knative 实践
  13. 经济学中的同比环比,负增长,正增长
  14. 基于ll库,使用stm32L0系列的内部基准电压来进行ad测量
  15. react 使用recoil 减少不必要的组件渲染
  16. C#·Excel拉取日期格式的数据
  17. python列表查找值_查找列表中某个值的位置(python)
  18. 24 Three.js的环境光源THREE.AmbientLight
  19. 为什么单页面的seo不友好?如何解决这一问题?
  20. 2022-2028年全球与中国医用级AC-DC电源行业竞争格局与投资战略研究

热门文章

  1. lin通讯从节点同步间隔场_汽车行业必须知识--CAN FD通讯
  2. 最小生成树——Kruskal(克鲁斯卡尔)算法
  3. 牛客网JAVA专项联系共899题--个人记录学习经历
  4. JavaWeb项目:简易小米商城系统
  5. Angular项目打包到nginx部署过程
  6. 有效期判断功能 java_有效的Java第三版有哪些新功能?
  7. cloudwatch_将CloudWatch Logs与Cloudhub Mule集成
  8. pcf8523_PCF上的Spring Cloud合同和Spring Cloud Services
  9. java8 从数组获取流_从数组到流再到Java 8
  10. spring 启动进度_在Web浏览器中显示Spring应用程序启动的进度