今天和思雨同学把动态菜单,权限以及Bundle的动态拔插基本给解决了。

大致的场景是这样的:

1、进行权限控制,RBAC0,权限-角色-菜单,菜单只是对应到页面,不涉及页面的具体操作组件,实现起来不是太麻烦。(之前本来打算把权限控制到按钮的,但是项目只要求到页面就方便了很多)。

2、权限控制这块,之前打算控制到组件,用的自定义标签,TagSupport或SimpleTagSupport,其他的项目用了自定义标签,不过麻烦也随之而来了。传统Web项目,有WEB-INF目录,自定义标签放在这个目录下。OSGi以Bundle形式开发,同时也没有WEB-INF目录,如何让OSGi识别tld文件,同时让其他Bundle能够使用这个自定义标签成了问题(把jetty模块当成Bundle嵌入其中的这种方式,我像通过解压jettyBundle,将标签放入jettyBundle的WEB-INF目录,但估计这种方式可能性较大,提供大家参考,可以自己动手试一把,我还没试验过)。

3、权限这块的,就是简单的数据库设计,不算太麻烦。这也是大家可以想到的。之前的系统每个功能模块的菜单权限通过配置文件配置,然后解析存放入数据库。用户登录时读配置文件校验。我的建议是保存数据库。为了保存菜单扩展点,首先判断数据库中是否有新Bundle的信息,没有就解析保存,有就直接读数据库。

4、由此可见,上面的配置文件之类的东西纯粹是依赖OSGi扩展点的。

5、OSGi的可拔插,之前我打算通过Spring DM发布服务,监听Bundle启动。解析Bundle之后保存入库。后来实现BundleListener接口,实现  public void bundleChanged(BundleEvent event) 方法,将解析方法放入其中。 注意:BundleListener接口所在的Bundle启动级别必须先启动,这里涉及一个启动级别的问题。

6、动态拔插:在平台启动之后,通过 install file 将开发模块install其中(注意,install之后bunldle的状态是Installed而不是started)。卸载就更方便了。

7、动态部署:这个问题结合上面的问题也很方便,上传至服务器指定目录,通过shell脚本安装。当然也可以通过数据库表保存相关Bundle路径信息实现。

提供给各位朋友参考,大家有更好的思路也可以和我讨论。

OSGi动态拔插,动态部署,动态权限菜单相关推荐

  1. 动态二进制插桩的原理和基本实现过程(Pin/DynamoRIO/Frida)

    英文原文全文 http://deniable.org/reversing/binary-instrumentation 译转自https://www.4hou.com/binary/13026.htm ...

  2. 第20章 使用LNMP架构部署动态网站环境

    章节概述: 本章节将从Linux系统的软件安装方式讲起,带领读者分辨RPM软件包与源码安装的区别.并能够理解它们的优缺点. Nginx是一款相当优秀的用于部署动态网站的服务程序,Nginx具有不错的稳 ...

  3. CentOS 6.7 源码搭建LNMP架构部署动态网站环境

    源码搭建LNMP架构部署动态网站环境 Nginx 简介 Nginx是一款相当优秀的用于部署动态网站的服务程序,Nginx具有不错的稳定性.丰富的功能以及占用较少的系统资源等独特特性. Nginx (& ...

  4. 玩转群晖NAS——实现IPV6访问并部署动态域名解析程序(Golang)

    目录 玩转群晖NAS--实现IPV6访问并部署动态域名解析程序 相关API文档 修改光猫为桥接模式并通过路由器拨号上网 注册域名 获取AccessKey 编写动态域名解析脚本 将代码编译成linux上 ...

  5. Kafka SASL/SCRAM动态认证集群部署

    Kafka SASL/SCRAM动态认证集群部署 目的:配置SASL/PLAIN验证,实现了对Kafka的权限控制.但SASL/PLAIN验证有一个问题:只能在JAAS文件KafkaServer中配置 ...

  6. LinuxProbe 0x20 使用LNMP架构部署动态网站环境

    LNMP动态网站部署架构是一套由Linux + Nginx + MySQL + PHP组成的动态网站系统解决方案,具有免费.高效.扩展性强且资源消耗低等优良特性,目前正在被广泛使用. 源码包程序 在R ...

  7. [译]NGINX 和 ZooKeeper,动态负载平衡和部署(上)

    [译]NGINX 和 ZooKeeper,动态负载平衡和部署(上) Aidan Carson · 2016-07-22 11:38 原文:NGINX and ZooKeeper, Dynamic Lo ...

  8. android申请权限一次性申请多个,android 6.0以上动态一次申请多个权限-最美解决方案...

    目录 背景 危险权限 申请权限思路 申请权限流程 干货 后续 一.背景 android23 API新增危险权限校验,需要手动获取: 二.危险权限: 日历数据 android.permission-gr ...

  9. Android6.0动态申请SD卡读写的权限

    有些设备不能在本地写文件的解决方法如下 : Android6.0之后系统对权限的管理更加严格了,不但要在AndroidManifest中添加,还要在应用运行的时候动态申请.下面是动态申请SD卡读写的权 ...

最新文章

  1. 软考之CPU的寻址方式
  2. VSCode主题:Dracula Official
  3. filebeat相关registry文件内容解析
  4. js方式调用php_举例说明JS调用PHP和PHP调用JS的方法
  5. 简单,方便,功能全的php分页类
  6. 易驾佳智能机器人教练_机器人教练创始人马宏先生受邀到中国人民大学进行经验分享...
  7. obj[]与obj._Ruby中带有示例的Array.include?(obj)方法
  8. canvas笔记-文本(fillText)旋转(rotate)
  9. 哪有那么多「能力问题」,在你牛到一定程度前,全是「态度问题」
  10. 小鹏P5预售价公布:16-23万元 自动驾驶软件单独购买
  11. SQL Server监控全解析
  12. log4j + flume 1.6 集成
  13. Oracle 11g新特性密码大小写敏感问题
  14. 洛奇英雄转无法读取游戏服务器状态,洛奇英雄传无法连接服务器认证失败处理方法讲解...
  15. 基于分割和识别的服饰商品的自动推荐
  16. 风控中英文术语手册(银行_消费金融信贷业务)_v3
  17. Word VBA查找表格单元格的第一段
  18. 基于 Flink 的 PB 级数据即席查询实践
  19. 绩效考核的五大原则,你知道吗?
  20. meterpreter使用

热门文章

  1. 大数据分析案例-基于决策树算法构建世界杯比赛预测模型
  2. 苹果x充电慢是什么原因_苹果手机充不进去电?为什么?什么原因?怎么解决?...
  3. 微信小程序蓝牙功能开发与问题记录
  4. 【面试问题总结】zj5
  5. 实时数仓利器之Doris
  6. java获取文件夹下所有的文件
  7. 计算机系统配置有哪些东西吗,老司机教你组装电脑主要配置有哪些
  8. 复习对数函数相关知识
  9. Cadence Virtuoso、Calibre、Altium Designer、HFSS 等 EDA 软件。
  10. 华为专家 | 轻量化微服务测试实践