gpt4 book ai didi

Java Web 应用程序 "plugin"体系结构

转载 作者:太空狗 更新时间:2023-10-29 22:45:36 27 4
gpt4 key购买 nike

请就如何为 Java web 应用程序做“插件”架构提出建议。

目前我们在 Tomcat servlet 容器中使用非常简单和标准的 Spring+Hibernate+Struts 2。 (使用 maven 构建)

我需要像 Redmine 这样的东西.可以启用/禁用、更新任何模块的地方 Redmine UI

请排除繁重的选项,如 OSGi、Portlet。

  • OSGi 太重了,网络技术没有得到很好的采用。我已经看过 Eclipse Germini ;
  • Portlet它只是陈旧,从未流行过。

最佳答案

我将尝试提供几种可能的解决方案。我确实花了一些时间为我正在进行的项目准备小型 PoC,所以希望下面的选项是相关的。

重要说明:定义一些扩展点、解析并找到可用的实现非常容易。有很多可用的解决方案,例如简单好用的解决方案 -- JSPF

资源是WEB应用的主要问题

OSGi

OSGi,还不错,而且很有用。它似乎很重(有些实现很重)但这是标准化平台的价格。我建议检查 Apache Felix .它可以在“轻量级”模式下使用。顺便说一句,它包括 Web 控制台,它被构建为松散耦合的基于插件的应用程序,可能会有所帮助:

enter image description here

一些例子Extending the Apache Felix Web Console

The Web Console can be extended by registering an OSGi service for the interface javax.servlet.Servlet with the service property felix.webconsole.label set to the label (last segment in the URL) of the page. The respective service is called a Web Console Plugin or a plugin for short.

您还可以检查eie-manager它简洁明了,并使用 OSGi 来管理插件。可以成为您的好榜样。

自定义插件框架

我建议查看 Jenkins/Hudson 后面的解决方案.我想说 Jenkins 插件系统是相当成熟和可靠的。可以作为一个很好的例子。

enter image description here

请同时检查 Hudson Plugin Architecture

简单的解决方案

对于我的项目,我基于 JSPF 构建了插件抽象层。使用自定义依赖解析器。

优点:

  • 简单小巧
  • 干净的概念
  • 效果不错

缺点:

  • 没有适当的插件管理可能会很慢(完整的类路径搜索)
  • 提供非常基本的功能
  • 可能需要额外的关注

我建议使用 JSPF仅当您确实需要一些简单性并想要控制一切时。 JPF提供了许多开箱即用的有趣功能,例如:

Plug-ins can be "hot-registered" and even de-registered during application execution. What's more, registered plug-ins can be activated and deactivated "on the fly", minimizing runtime resource usage.

问题是 JPF 已经死了。

建议

请花一些时间在 Apache Felix 上.它足够成熟,因此您的时间投资可能会得到很多返回。

关于Java Web 应用程序 "plugin"体系结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14354466/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com