当前位置: 首页 > 面试题库 >

Java Web应用程序“插件”架构

东方玉泽
2023-03-14
问题内容

请提供有关如何为Java Web应用程序执行“插件”体系结构的建议。

当前,我们在Tomcat servlet容器中使用了非常简单和标准的Spring + Hibernate + Struts 2 。(内置Maven)

我需要像Redmine 这样的东西。可以启用/禁用,更新任何模块的位置Redmine UI

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

OSGi太重,没有很好地采用Web技术。我已经看过Eclipse Germini;Portlet只是旧的,从未流行过。


问题答案:

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

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

资源是WEB应用程序的主要问题

OSGi

OSGi并没有那么糟糕,而且很有用。它看起来很沉重(有些
实现很沉重),但这是标准化平台的代价。我
建议检查Apache Felix。可以在
“轻量级”模式下使用。顺便说一下,它包括Web控制台,该控制台构建为
基于松散耦合的基于插件的应用程序,可能会有所帮助:

在此处输入图片说明

扩展Apache Felix Web 控制台的一些示例

可以通过为
服务属性
felix.webconsole.label设置为页面的标签(URL的最后一个段)为接口javax.servlet.Servlet注册OSGi服务来扩展Web控制台
。相应的服务称为Web控制台插件或
简称插件。

您也可以检查eie-manager,
它干净整洁并使用OSGi来管理插件。
对您来说可能是一个很好的例子。

自定义插件框架

我建议回顾Jenkins / Hudson背后的解决方案。我想说詹金斯插件系统已经相当成熟和可靠了。可以
作为一个很好的例子。

在此处输入图片说明

另请检查Hudson插件架构

简单的解决方案

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

优点:

简单小
干净的概念
效果不错
缺点:

没有适当的插件管理会很慢(完整的类路径搜索)
提供非常基本的功能
可能需要其他注意
我建议仅在 确实需要一些简单性并且想要控制所有内容的情况下才使用JSPF

JPF提供了许多有趣的功能
,例如:

插件可以在应用程序
执行期间“热注册”甚至取消注册。此外,可以
“即时”激活和停用已注册的插件,从而最大程度地减少了运行时资源的使用。

问题是JPF已死。

建议

不要花一些时间在Apache Felix上。它已经
足够成熟,因此您的时间投资可能会获得很多回报。



 类似资料:
  • 我正在开发一个使用Hibernate的简单JSF应用程序。我将所有必需的库导入WEB-INF/lib文件夹,并将它们指向类路径。但是当我尝试编译它时,我遇到了错误: 这是我创建SessionFactory并使用它的代码: 我在这里使用它: 那我做错了什么?我该怎么解决这个问题?

  • 我有一个在web容器tomcat上运行的java web应用程序。该web应用程序使用hibernate框架连接到DB,我需要将其从IntelliJ 14.0.2部署到heruko。所以我添加了maven框架,这就是pom。xml: 当设置maven的编辑配置并运行它时,我得到一条消息:[错误]在当前项目和插件组[org.apache.maven.plugins,org.codehaus.mojo

  • 这里我们提供了一个关于 Tendermint 区块链应用程序推荐架构的简要指南。 下图提供了一个极好的例子: 这里的最终用户应用程序是 Cosmos Voyager,在左下角。 Voyager 与本地轻客户端守护进程公开的 REST API 通信。轻客户端守护进程是一个特定于应用程序的程序,它与 Tendermint 节点通信,并通过 Tendermint Core RPC 验证 Tendermi

  • CodeIgniter应用程序的体系结构如下所示。 如图所示,每当请求到CodeIgniter时,它将首先转到index.php页面。 在第二步中, Routing将决定是将此请求传递到步骤3以进行缓存还是将此请求传递到步骤4以进行安全检查。 如果请求的页面已经在Caching ,则Routing将把请求传递给步骤3,响应将返回给用户。 如果Caching中不存在请求的页面,则Routing会将请

  • 已安装Java版本(签入控制面板): jre1.6.0,Java更新2, Java更新3, Java更新5, Java更新31 (在C:/Program Files/Java相关文件夹中找到:jre1.6.0、jre1.6.0_02、jre1.6.0_03、jre1.6.0_05、jre6) 根据http://docs.oracle.com/javase/1.5.0/docs/guide/java

  • 2.5.应用程序框架 应用程序框架是Android程序的执行环境,也是开发者的强大工具箱。另外,它也拥有Android平台中最全面最完善的文档。良好的文档可以激发广大开发人员的创意,也可以为他们构建优秀的应用程序提供有力的支持。 在应用程序框架中,你可以发现很多为Android设计的Java库。除此之外,也有系统服务的支持,比位置、传感器、WiFi、电话等等。 在后面的学习与实践中,将把我们的主要