Poc之后,我选择放弃OSGI

TIPS:
如贵司允许重构老系统或者允许使用OSGI的第三方框架改造所带来的投入成本,并且评估之后ROI乐观,那么还是可以使用的。

Runtime Version

以下问题全部基于Equinox框架 & 使用BluePrint 整合Spring框架

  • OSGI

    • org.eclipse.osgi 3.15.0v20190830-1434
  • Equinox version
    • Equinox 4.13
  • Spring Framework
    • 5.0.4P
    • 3.0.0
  • blueprint
    • 3.0.0.M1
  • mybatis
    • 3.5.3
  • mybatis-spring
    • 1.3.2
  • mysql
    • 5+/8+

现状

以下方案前提条件:不使用第三方框架(Camel/karaf...)。

  • Spring 3 整合
    使用Spring3 实现了SpringMvc的整合,但是无法支持Restful支持。
    spring3以后,好像就没有人维护osgi的版jar包了,想要使用更高版本,只能自己生成bundle.
  • Spring5 整合
    基础Spring Bean注入通过xml方式已经成功,但是目前的bundle缺失较多,最重要的为jdbc & transaction,spring 在3.2之后升级为spring-tx,而且不提供osgi版本,造成我们现有项目大部分业务需要重构,工作量巨大(等同于重写service)

问题

  1. 如何在不使用第三方框架的情况下提供rest service暴露?

    暴露rest service 利用,osgi自带的HttpService服务,再通过org.eclipse.equinox.servletbridge.BridgeServlet把服务桥接出去

  2. 关于现有的SpringMVC单体应用,如何将每一个controller中的所有methods封装为bundle中的bean services 对外统一暴露而不是one by one?
  3. 如何在Bundle使用Spring Annotation/是否可以使用?
  4. 如何将现有SpringMVC 项目直接生成一个full bundle以提供对外暴露services, 并且对现有项目无侵入或很少侵入?

基于众多原因:

  1. 社区停滞维护,技术较陈旧
  2. 第三方开源框架可以实现,问题是对于我们原有系统改动太过巨大。
  3. 未来遇到的问题无法得到外部解决,只能我们自身针对性对底层进行扩展。
  4. 对于初中级朋友来说,学习成本太高(我翻阅了国内外大多数资料)
  5. 如果不能重新编写新项目的话,对于原系统的改造成本太高。
  6. ...

替代方案

我选择放弃该方案,使用Servlet 3.0提供的热插拔来实现插件模式,只是需要重新加载应用上下文,因此,建议各位部署多实例节点,在升级服务时,采用灰度发布来降低影响。

[插件化开发] Poc之后,我选择放弃OSGI的更多相关文章

  1. Android组件化和插件化开发

    http://www.cnblogs.com/android-blogs/p/5703355.html 什么是组件化和插件化? 组件化开发就是将一个app分成多个模块,每个模块都是一个组件(Modul ...

  2. TinyFrame升级之八:实现简易插件化开发

    本章主要讲解如何为框架新增插件化开发功能. 在.net 4.0中,我们可以在Application开始之前,通过PreApplicationStartMethod方法加载所需要的任何东西.那么今天我们 ...

  3. NET 平台下的插件化开发内核

    .NET 平台下的插件化开发内核(Rabbit Kernel)   每个程序猿都有一个框架梦,曾经在2013年8月15日写过一篇“Koala Framework是什么?我为什么要写这个框架?”的文章, ...

  4. 插件化开发—动态加载技术加载已安装和未安装的apk

    首先引入一个概念,动态加载技术是什么?为什么要引入动态加载?它有什么好处呢?首先要明白这几个问题,我们先从 应用程序入手,大家都知道在Android App中,一个应用程序dex文件的方法数最大不能超 ...

  5. Android插件化开发,初入殿堂

    好久没有写博客了,这次准备写写我这几天的研究成果--Android插件化开发框架CJFrameForAndroid. 好久没有写博客了,这次准备写写我这几天的研究成果--Android插件化开发框架C ...

  6. 插件化开发—动态载入技术载入已安装和未安装的apk

    首先引入一个概念,动态载入技术是什么?为什么要引入动态载入?它有什么优点呢?首先要明确这几个问题.我们先从 应用程序入手,大家都知道在Android App中.一个应用程序dex文件的方法数最大不能超 ...

  7. [Songqw.Net 基础]WPF实现简单的插件化开发

    原文:[Songqw.Net 基础]WPF实现简单的插件化开发 版权声明:本文为博主原创文章,未经博主允许可以随意转载 https://blog.csdn.net/songqingwei1988/ar ...

  8. Android插件化开发

    客户端开发给人的印象往往是小巧,快速奔跑.但随着产品的发展,目前产生了大量的门户型客户端.功能模块持续集成,开发人员迅速增长.不同的开发小组开发不同的功能模块,甚至还有其他客户端集成进入.能做到功能模 ...

  9. Android 使用动态载入框架DL进行插件化开发

    如有转载,请声明出处: 时之沙: http://blog.csdn.net/t12x3456    (来自时之沙的csdn博客) 概述: 随着应用的不断迭代.应用的体积不断增大,项目越来越臃肿,冗余添 ...

随机推荐

  1. 重学Java(一):与《Java编程思想》的不解之缘

    说起来非常惭愧,我在 2008 年的时候就接触了 Java,但一直到现在(2018 年 10 月 10 日),基础知识依然非常薄弱.用一句话自嘲就是:十年 IT 老兵,Java 菜鸡一枚. 于是,我想 ...

  2. java、八大经典书籍,你看过几本?

    java.八大经典书籍,你看过几本? 转载  一.Java从入门到精通 <Java从入门到精通(第3版)>从初学者角度出发,通过通俗易懂的语言.丰富多彩的实例,详细介绍了使用Java语言进 ...

  3. Phpstudy被暴存在隐藏后门-检查方法

    Phpstudy被暴存在隐藏后门-检查方法 一.事件背景 Phpstudy软件是国内的一款免费的PHP调试环境的程序集成包,通过集成Apache.PHP.MySQL.phpMyAdmin.ZendOp ...

  4. [工具][vim] vim设置显示行号

    转载自:electrocrazy的博客 在linux环境下,vim是常用的代码查看和编辑工具.在程序编译出错时,一般会提示出错的行号,但是用vim打开的代码确不显示行号,错误语句的定位非常不便.那么怎 ...

  5. SpringCloud之Turbine

    [前面的话]书接上文,本文的某些知识依赖我的上一篇SpringCLoud的文章:SpringCloud之Feign,如果没有看过可以先移步去看一下.前文提到了hystrix的应用,以及hystrix的 ...

  6. Spring Boot 梳理 - 4个核心

    Spring Boot 魔法的核心:自动配置.起步依赖.命令行界面.Actuator 自动配置: 不用手动配置JdbcTemplate的Bean 不用手动配置DataSource的Bean Sprin ...

  7. Mysql INSTR函数

    在Mysql中,可以使用INSTR(str,substr)函数,用于在一个字符串(str)中搜索指定的字符(substr),返回找到指定的字符的第一个位置(index),index是从1开始计算,如果 ...

  8. cmd控制台 wrapper | OpenSCManager failed - 拒绝访问。 (0x5)解决

    在windows上安装mycat执行命令时, D:\develop\Mycat\bin>mycat.bat install 返回wrapper | OpenSCManager failed - ...

  9. C语言入门-字符串

    还是要继续学习,每天给自己打气. 字符数组 char word[] = {'H','e','l','l','o'}; 这不是c语言的字符串,不能用字符串的方式做计算 一.字符串 char word[] ...

  10. MariaDB简单操作

    RHEL7之后操作系统带的数据库都是mariadb,跟mysql一样用 1.安装客户端和服务端 [root@localhost ~]# yum install mariadb mariadb-serv ...