插件启动顺序控制
来源:互联网 发布:拍照软件萌 编辑:程序博客网 时间:2024/05/22 13:17
在使用obr的时候,用deploy -s命令部署和启动插件,如果一个插件有依赖的插件,felix可以自动计算出来并部署启动所依赖的插件,这样保证了被依赖的启动,由于使用了ipojo,可以自动注入依赖的服务,并启动那些一开始依赖不满足而未启动的pojo,这样就可以在不用特别关注插件启动顺序的情况下,确保所有插件正确启动了。
但是在开发groovy插件时,碰到一个情况,就是groovy插件pom中依赖sqlapi,但是实际上需要mybatis提供的sqlapi服务和configcenter提供的ccapi服务,而groovy插件由于是用groovy脚本编写的,没法直接使用ipojo,这样就会出现启动groovy插件时可能存在需要的mybatis和configcenter插件还没启动的情况,就导致了groovy插件启动失败。要正确启动groovy插件,必须确保先启动mybatis和configcenter插件,如何确保插件之间的启动顺序就成了一个重要的问题。
直接在groovy插件中依赖mybatis和configcenter插件并不能保证启动顺序。
手工输入deploy -s命令,依次启动插件,可以保证顺序,但是如果直接这样写到tsl脚本里面,执行起来却报错,第二个deploy没法正常执行。
用install或者start命令是可以在tsl中写多个并按照顺序的,但是问题在于start需要使用id,在tsl中直接写id比较死。
最后找到一种方法可以比较好的控制顺序,就是通过指定bundlelevel和frameworklevel,例子如下:
bundlelevel -i 2
deploy -s com.ailk.common.log4j com.ailk.common.configcenter com.ailk.common.mybatis
bundlelevel -i 3
deploy -s com.ailk.common.groovy
frameworklevel 3
- 系统默认bundlelevel和frameworklevel是1,启动felix时,默认启动的bundle的level都设为1,并且level1的bundle都可以启动
- 然后在tsl中设定当前bundlelevel为2,那么下面deploy的所有bundle的level都设为了2,但是由于frameworklevel没变还是1,level为2的bundle并未真正启动
- 再用同意的方法把部署需要最后启动的bundle,level设为3
- 最后把frameworklevel设为3时,系统首先启动level2的bundle,然后才是level3的,这样就确保了bundle的启动顺序
- 插件启动顺序控制
- Linux 控制两个程序的先后启动顺序
- ros launch文件编写和节点启动顺序控制
- 控制docker-compose中服务的启动顺序
- 多个Servlet怎么控制在服务器启动时的装载顺序----以及Servlet,Filter,Listner的启动和关闭的顺序
- 工业顺序控制模拟
- 控制全局变量初始化顺序
- 控制线程顺序执行
- U3D控制绘制顺序
- 流程控制--顺序结构
- Testng执行顺序控制
- LINUX的启动顺序
- Symbian应用程序启动顺序
- Symbian应用程序启动顺序
- Symbian应用程序启动顺序
- Symbian应用程序启动顺序
- Symbian应用程序启动顺序
- Symbian应用程序启动顺序
- Caffe源码(二):blob 分析
- 卫星式菜单
- HDU 3732(Ahui Writes Word)多重背包
- iOS Date Picker控件的简单使用(点击一个input框,弹出)
- EM算法
- 插件启动顺序控制
- Java代码块
- UIPasteboard Example – Read, Write and Share data between apps
- hyundai-wia
- Java双缓冲技术
- Maven+jenkins: No compiler is provided in this environment. Perhaps you are running on a JRE rather
- 中文分词与停用词的作用
- Codeforces Round #291 (Div. 2) D. R2D2 and Droid Army RMQ/单调队列/尺取法
- spring 事物管理没起到作用