`
hanfeng
  • 浏览: 5117 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

插件化Web应用

阅读更多
想做一个插件化Web应用,就像Confluence和Hudson那样,不需要OSGi这种重量级的东西,不需要热部署。因为有许多遗留系统代码需要支持,尽量不要引入框架依赖,只要支持Servlet2.4标准,添加简单的描述即可形成一个插件。Servlet3.0也许是一种选择,但我们不想等待它的普及,可以考虑将来兼容Servlet3.0。目前基本的思路有以下几点:


1、实现一个微内核,负责插件管理,支持插件根据依赖顺序进行组装(依赖注入、配置初始化)。微内核不依赖于Servlet API。

2、实现Web容器中的插件管理,通过统一的Servlet、Filter、Listener,动态调用每个插件中声明的Servlet、Filter、Listener。实现时尽量考虑兼容Servlet3.0的配置文件。

3、对一些现有系统常用框架提供支持组件,例如:支持struts1.x的插件化打包(struts-config.xml打包到插件中)。


不知道这种需求是否合理,大家是否也有类似想法?如果大家有这方面的需求,是否有必要启动一个开源项目呢?
分享到:
评论
16 楼 wfeng007 2012-12-10  
楼主的思路 感觉是 为了插件化而插件化。
15 楼 hanfeng 2010-06-28  
guzhan 写道
atlassian下的产品,使用的插件平台是开源的,叫atlassian-plugin-framework,当前的版本已经能够支持osgi作为其插件。
我研究过一些它的内容,思想很好,由于atlassian与opensymhony的关系,他们一直使用webwork来作为web层框架,这也限制了他们当前插件系统中仅对webwork定义的action的支持。
它的插件体系中,它自身提供的有webfragement、servlet、filter,当然也包括webwork的action,能够定义自己的“Module”,也可以自己解析,根据自己需要确定其用途,能够在插件中定义自己的扩展点,也可以实现已有的扩展点。
我觉得对于插件化的web应用,不同于portlet的颗粒度,它所提供的扩展点和实现已有的扩展点更灵活。
当前淘宝之类的都在寻求页面可定制和引入其他厂商提供的服务集成到页面,插件化的web是一个很好的选择。

我对这方面也比较有兴趣。


谢谢,研究一下atlassian-plugin-framework再向你请教。
14 楼 wl95421 2010-06-25  
可以考虑JDK自己带的ServiceLoader
加载类路径中/META-INF/services/下的资源
13 楼 sky3380 2010-06-25  
http://www.iteye.com/topic/366158
12 楼 guzhan 2010-06-25  
atlassian下的产品,使用的插件平台是开源的,叫atlassian-plugin-framework,当前的版本已经能够支持osgi作为其插件。
我研究过一些它的内容,思想很好,由于atlassian与opensymhony的关系,他们一直使用webwork来作为web层框架,这也限制了他们当前插件系统中仅对webwork定义的action的支持。
它的插件体系中,它自身提供的有webfragement、servlet、filter,当然也包括webwork的action,能够定义自己的“Module”,也可以自己解析,根据自己需要确定其用途,能够在插件中定义自己的扩展点,也可以实现已有的扩展点。
我觉得对于插件化的web应用,不同于portlet的颗粒度,它所提供的扩展点和实现已有的扩展点更灵活。
当前淘宝之类的都在寻求页面可定制和引入其他厂商提供的服务集成到页面,插件化的web是一个很好的选择。

我对这方面也比较有兴趣。
11 楼 hanfeng 2010-02-22  
经过讨论,我的想法应该描述的比较清晰了,大家有何建议?是否当做一个开源项目来运作一下呢?
10 楼 hanfeng 2010-02-15  
hzh0725 说的很对,那确实是OSGi的标准使用方式,在用户允许的情况下我也会这么做的。

目前的考虑是在一个受限的情况下,即用户指定了应用类型,必须是运行于现有主流应用服务器上的Web应用(war),特别是我们面对的客户一般都要求WAS、WebLogic,这些服务器虽然最新版内部采用OSGi,但却没有形成统一的标准为Web应用提供Web Server的OSGi形式的API。

用户是我们的衣食父母,用户的要求就是圣旨,考虑到目前大多数客户(我们主要是面向银行)的要求,所以有了在此场景下暂时替代OSGi实现模块化的想法。

将来OSGi中的Web Server标准API被所有主流应用服务器支持了,我们肯定会选择OSGi的。
9 楼 hzh0725 2010-02-12  
hanfeng 写道
hzh0725 写道
做吧,做到最后,也许就做出一个osgi原始形态来,OSGI本来就是很微核,小不能在小.而且东西大并不代表它不灵活,maven就是这样的,只会比ant灵活


如果OSGi在Web应用开发上面不是存在这样那样的问题的话,我也就不用提出这个设想了。所以,和OSGi目标一致,使用场景不同,要求更低一些,例如:不会考虑设计那么复杂的类加载机制。

为什么呢?
因为OSGI是平台,在很多程序员眼里web server也是平台,容器,当然搞不好了。

如果你完全准许模块开发,你就应该把web server当作是一个服务,只是在osgi平台上运行的一个插件,其他的web application也是插件,然后同osgi平台功能注册到web server上面去。

现在没有这样的实现,但你可以去修改一些opensource ,比如enquinox,felix,jetty,tomcat,你如果了解osgi的运行机制,完全可以自己写code来实现他们的相互绑定,还是比较简单的。

当然,你如果想把一个web application做为一个osgi的使用场景,比如什么dao, server,web搞插件化,这个需要web server支持,但目前好像还没有什么web server支持这样搞,不过你也可以改jetty的webcontext,你自己写一个osgi web context.也不难。

所有上面这些,你必须要对osgi,webserver行为都很了解,如果你经验不够,可以看看的他们的规范和实现。 不要忘记osgi组织的人,每天都在想这些插件化的问题,当然也包括插件化web应用
8 楼 hanfeng 2010-02-11  
hzh0725 写道
做吧,做到最后,也许就做出一个osgi原始形态来,OSGI本来就是很微核,小不能在小.而且东西大并不代表它不灵活,maven就是这样的,只会比ant灵活


如果OSGi在Web应用开发上面不是存在这样那样的问题的话,我也就不用提出这个设想了。所以,和OSGi目标一致,使用场景不同,要求更低一些,例如:不会考虑设计那么复杂的类加载机制。
7 楼 hzh0725 2010-02-11  
做吧,做到最后,也许就做出一个osgi原始形态来,OSGI本来就是很微核,小不能在小.而且东西大并不代表它不灵活,maven就是这样的,只会比ant灵活
6 楼 rainv 2010-02-10  
我也是在找时间做一个类似eclipse插件化的Web软件。。。
5 楼 pujia12345 2010-02-10  
建议看看php做的joomla系统。完全的插件化
4 楼 xzhome 2010-02-10  
之前做过类似的东西,不过是基于spring做的,每个插件jar可以定义不同的jsp,bean和dao,插件的文件名使用固定格式,修改spring的初始化,在tomcat启动时自动把所有jsp,css和js文件复制到web-inf目录下
3 楼 kjj 2010-02-10  
楼主,我也有这个想法,思路和你的差不多,目前还没下手,节后或许我们还能再交流一下!!
2 楼 hanfeng 2010-02-10  
目前设想插件包就是普通jar包,在META-INF目录下放置插件描述文件。

插件描述文件结构我正在考虑,主要包含插件信息、依赖描述、扩展点描述、扩展实现描述等部分。

插件内部目录结构不做强制限制,推荐采用classpath方式访问插件包中的资源。
1 楼 newid 2010-02-09  
我之前也有个与楼主一样的想法,并且做过一个简单测试是可以实现的。主要还是在于你对于plugin进来的内容的协助定义。比如eclipse的目录结构定义及plugin.xml定义。还有就是你的内核提供的包要强劲(当然这个不是特别重要)。
这些你定义好了后面添加plugin只要根据定义添加就OK。

螃蟹总要有人先吃的。

对于那些OSGI之类的个人觉得重了。一个应用要做成那样成本太高。

相关推荐

    ntko插件web版,插件

    7. **API集成**:开发者可以通过NTKO提供的API接口将插件功能集成到自己的Web应用中,定制化满足特定业务需求。 8. **批量操作**:对于大量文档的处理,NTKO插件支持批量预览、编辑和转换,大大提高了工作效率。 9...

    移动应用(ios、android)插件化方案

    移动应用(ios、android)插件化方案 移动应用(ios、android)插件化方案是移动应用平台化技术蓝图的重要组成部分,该方案旨在解决安邦集团移动项目数量众多、技术体系跨多个平台、项目间彼此孤立的问题。下面是该...

    web端调用插件

    在Web应用中调用这些插件,可以让用户享受到更丰富的体验,比如自动化任务、数据抓取或增强的浏览功能。 首先,要实现Web端调用Chrome插件,你需要了解浏览器扩展的架构。一个典型的Chrome插件由以下几个部分组成:...

    UE4.26插件WebUI

    而"UE4.26插件WebUI"则是一个专为UE4.26版本设计的插件,它允许开发者将Web页面与虚幻引擎的内容融合在一起,实现更加丰富的交互体验和可视化效果。 这个插件的核心功能在于提供了一个桥梁,让开发者可以利用HTML5...

    不需要插件的WEB打印

    Web打印允许用户直接从浏览器中打印网页内容或者特定的数据,而无需安装额外的插件或应用程序。以下是对"不需要插件的WEB打印"这一主题的详细说明: 1. **Web打印基础**: - Web打印主要依赖于浏览器内置的功能,...

    web应用文件打开插件及说明.rar

    "web应用文件打开插件及说明.rar"这个压缩包文件显然提供了一个专门用于处理此类需求的解决方案。该插件设计的目标是允许用户在WEB应用环境中安全、便捷地打开并查看已上传的各种文件格式。 首先,我们要理解JavaEE...

    webplugin 视频插件

    总的来说,Webplugin视频插件是提升网页视频体验的重要工具,它通过提供多样化的功能和服务,弥补了浏览器原生支持的不足,让用户能够享受更丰富、更便捷的在线视频观看体验。然而,用户也需关注其安全性和维护,...

    JAVA Web實現國際化插件

    综上所述,"JAVA Web实现国际化插件"是一个实用的工具,可以帮助开发者轻松地处理Java Web应用的国际化需求,通过`ResourceBundle`和相关编辑工具,使得本地化工作更加高效和规范。开发者可以通过学习PPT详解和实际...

    WEB无插件开发包-v3.2,可iframe集成

    【标题】"WEB无插件开发包-v3.2,可iframe集成"指的是一个特定版本的Web应用程序开发工具包,该版本为v3.2,它具有在网页中通过iframe框架进行嵌入的功能。这个开发包的设计目的是为了实现无需浏览器插件的Web应用...

    webUI 4.27版本的插件

    这个插件为UE4引入了先进的网页交互功能,使得开发者能够创建更加丰富、动态且具有高度定制化的Web界面,与游戏内容无缝融合。下面我们将深入探讨这一版本的WebUI插件所包含的关键知识点。 首先,WebUI的核心是其...

    ue webUI 5.3版本的插件 支持打包

    5. **兼容性**:UE WebUI 5.3版本的更新可能考虑到了不同浏览器和设备的兼容性问题,打包后的插件能在多种环境下稳定运行,这对于跨平台的Web应用开发至关重要。 6. **开发环境与生产环境的区分**:支持打包还意味...

    大华摄像头直连插件webplugin.exe和文档

    标题中的“大华摄像头直连插件webplugin.exe和文档”指的是大华公司提供...了解并掌握这些知识点,开发者就可以利用大华摄像头直连插件webplugin.exe创建个性化的监控系统、远程视频会议应用或其他视频相关的Web服务。

    web时间插件.

    Web时间插件是用于Web应用程序的一种组件,通常以JavaScript库或CSS样式的形式存在,目的是增强网页对时间的处理能力。它们可以是独立的代码片段,也可以是大型框架的一部分,如jQuery UI或Bootstrap。时间插件主要...

    海康威视web插件(Web Components) + demo.rar

    Web Components是Web开发领域中的一种标准,它允许开发者创建可重用的自定义HTML元素,封装样式和逻辑,提升Web应用的模块化和可维护性。 在“海康威视web插件(Web Components) + demo.rar”这个压缩包中,包含了...

    web 手写面板签名插件

    3. Webapp:表明这个插件适用于Web应用程序,可以在任何支持Web的平台上运行。 4. 手写签名插件:这是一种专门用于实现手写签名功能的软件组件,可集成到各种Web项目中。 【文件名称】:“szimek-signature_pad-b1...

    4个海康威视视频插件WebComponents.zip

    标题提及的“4个海康威视视频插件WebComponents.zip”是一个压缩包,包含了海康威视为不同浏览器提供的视频插件。这些插件是为了确保海康威视的视频服务能在多种浏览器环境下正常运行,因为不同浏览器对于HTML5、...

    Hibernate Web应用的开发步骤

    Hibernate Web应用的开发一般经过以下几个步骤: (1)创建数据库。 (2)将Hibernate所需的JAR包复制到WEB-INF/lib下。 (3)创建Hibernate的配置文件。 (4)利用Hibernate的第三方工具或Eclipse的有关插件从...

    视频WEB插件.zip

    6. **安装与使用**:在Web应用中使用这样的插件,通常需要在服务器端部署,并通过JavaScript API与前端交互,允许用户触发播放、暂停、调整分辨率等操作。 7. **安全性**:由于涉及到摄像头的视频流,安全是关键...

    海康威视开发包(内含WebComponents.exe插件)

    WebComponents.exe是一款专为Web 3.0环境设计的视频监控插件,它集成了海康威视的设备控制和视频流处理能力,使得开发者能够轻松地在Web应用中集成海康威视的硬件设备。该插件主要功能包括: 1. 实时视频流播放:...

Global site tag (gtag.js) - Google Analytics