V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
v2e0xAdmin2
V2EX  ›  程序员

写了一个 Java 插件框架,大家看看能不能用上

  •  
  •   v2e0xAdmin2 · 256 天前 · 1260 次点击
    这是一个创建于 256 天前的主题,其中的信息可能已经有所发展或是发生改变。

    git 地址: https://github.com/stateIs0/exp

    为了解决公司的业务痛点, 这段时间一直在搞这个东西。看看开源出来能不能帮到其他人,有用的就点个 star ⭐️⭐️⭐️⭐️⭐️,哈哈

    20 条回复    2023-12-16 03:20:06 +08:00
    zhady009
        1
    zhady009  
       255 天前 via iPhone
    可以看看 PF4J ?
    v2e0xAdmin2
        2
    v2e0xAdmin2  
    OP
       255 天前
    @zhady009 #1 嗯嗯,写完之后才看到这个,看起来类似,但是又有点区别
    v2e0xAdmin2
        3
    v2e0xAdmin2  
    OP
       255 天前
    大概的场景:
    B 端大客户对业务进行定制, 需要对主代码扩展,传统做法是 git 拉取分支,现在基于扩展点的方式进行定制, 可热插拔,需要多个程序可分可合, 支持将多个 springboot 应用合并部署, 或拆开部署,扩展点类似 swagger 文档 doc, 用于类插件系统管理平台进行展示,

    详细的博客地址: http://thinkinjava.cn/2023/08/15/2023/exp/
    muyiluop
        4
    muyiluop  
       255 天前
    这个我还真能用上,之前搞物联网设备接入,设备种类太多,协议各种各样,也是搞了一个简单的热插拔的插件,但是解决不了一个问题,就是怎么防恶意代码,我们这支持三方开发,如果写个 System.exit() 或者其他会出现导致程序崩溃的代码,比如 jni 调用第三方库出现个什么内存异常啥的,程序就容易出问题,只能每个三方的不信任插件单独运行。请教下你是怎么处理这种情况的呢
    v2e0xAdmin2
        5
    v2e0xAdmin2  
    OP
       255 天前 via iPhone
    @muyiluop 用 groovy
    v2e0xAdmin2
        6
    v2e0xAdmin2  
    OP
       255 天前 via iPhone
    @muyiluop 详细的说,就是把底层的 classloader 换成 groovy 引擎,这个可以支持代码检查,比如 system-exit
    iosyyy
        7
    iosyyy  
       255 天前
    看着侵入性好像有点强? 赶紧不算实用
    v2e0xAdmin2
        8
    v2e0xAdmin2  
    OP
       255 天前
    @iosyyy #7 嗯,如果考虑少点侵入性的话,就需要非常多的配置来描述,比如 n 年前的 spring xml ,是个取舍问题;另外侵入性,这个框架都是基于 spi 和 Interface 来编程的,随时可替换成自己的的 spi 实现(如果认可这个 api 的话)
    zxCoder
        9
    zxCoder  
       216 天前
    这个能结合 spring 吗?
    v2e0xAdmin2
        10
    v2e0xAdmin2  
    OP
       216 天前
    @zxCoder #9 必须可以
    zxCoder
        11
    zxCoder  
       216 天前
    @v2e0xAdmin2

    https://www.v2ex.com/t/976638#reply1

    能实现这样的功能吗?我看了你代码仓库的 example ,没咋看懂
    v2e0xAdmin2
        12
    v2e0xAdmin2  
    OP
       216 天前   ❤️ 1
    @zxCoder #11 完全可以,你的场景就是我们的场景
    v2e0xAdmin2
        13
    v2e0xAdmin2  
    OP
       216 天前
    @zxCoder #11 可以提 issue 或者 钉钉群
    zxCoder
        14
    zxCoder  
       216 天前
    支持 springboot3 吗
    zxCoder
        15
    zxCoder  
       216 天前
    没找到相关的依赖包
    v2e0xAdmin2
        16
    v2e0xAdmin2  
    OP
       216 天前   ❤️ 1
    @zxCoder #14 支持 springboot 3 ,在另外一个 project 里; https://github.com/stateIs0/open-exp-springboot3
    zxCoder
        17
    zxCoder  
       216 天前
    为啥没放 maven 上,方便点
    v2e0xAdmin2
        18
    v2e0xAdmin2  
    OP
       216 天前
    @zxCoder #17 用的人还不多,就没放 maven 了,可以考虑放 maven 仓库
    zxCoder
        19
    zxCoder  
       216 天前
    @v2e0xAdmin2 可以搞一个,刚刚想在我的项目中测试,但是用不了,还得自己编译到本地仓库
    zerofancy
        20
    zerofancy  
       133 天前 via Android
    @muyiluop 我有个想法,插件用自定义 classloader 加载,是否可以破坏双亲委派,给 System 类搞个 proxy
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2978 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 1200ms · UTC 14:16 · PVG 22:16 · LAX 07:16 · JFK 10:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.