关于Spring DM,OSGi和Web应用程序的问题

时间:2012-08-28 14:33:17

标签: java plugins osgi enterprise

我开始关注osgi的主要目的是在我之前完成任务。基本上我将能够分发基于Web的应用程序并分别构建整个Web应用程序的特定功能,以便我可以在具有功能a,b,c的A我的Web应用程序中部署并在B处部署具有功能a,c的功能,d。

有点像可以在joomla中安装插件。因此,例如,当我想添加Web应用程序的不同方面时,我将使用所有html和its admin部分构建一个小型战争,并在主管理面板中提供此功能管理部分。

第二个问题是关于Spring DM。我很可能会使用Spring,看起来很合理我看到Spring DM提供的内容。在下载Spring DM .1.2.1之后,我发现它的lib文件夹包含版本2.5.6.SEC01的弹簧罐但是我计划使用3.1.2所以有点混淆,因为一切都会很好地融合在一起。

感谢您阅读

2 个答案:

答案 0 :(得分:4)

我刚刚做了这样的练习,所以我可以解释一下如何在没有Spring的开销的情况下做到这一点。我做了一个明确的划分:所有应用程序代码都在浏览器中,所有数据处理都在服务器中。借助HTML5,浏览器已经发展成为一个令人印象深刻,便携且功能强大的应用程序环境。其中包括多处理,消息传递,模块化和令人惊叹的视觉效果。我在浏览器中使用angularjs作为框架。

Angular使用中央路由表将页面URL的哈希部分映射到Javascript中的“模块”。这使得定义哪些模块是应用程序的一部分非常容易。服务器可以轻松控制这部分。

在服务器端,我有包含Javascript代码,html片段和数据处理的包。我基于OSGi Http Server模型,因为它更灵活。但是,我在bundle中添加了对静态资源的适当支持:缓存,流,范围等。

在服务器中,我使用DS和bndtools来开发捆绑包。这是一个令人印象深刻的开发体验,因为它像Smalltalk一样工作。您更改并立即反映在服务器中。添加捆绑包,删除捆绑包,服务器继续运行。服务器重启在开发过程中很少见。

缺点是很少有组件可以利用OSGi。大多数组件,其中Spring是典型的例子,在很大程度上依赖于类加载黑客来从中心点连接应用程序。这基本上不是模块化的。出于这个原因,我必须开发许多利用OSGi服务模型的高度内聚和非耦合组件。一旦我有时间,我会将它们捐赠给一个开源项目。

答案 1 :(得分:0)

我不确定你是否需要考虑OSGi,至少不是直接考虑,以达到你的州要求。你说:

  

基本上我可以分发基于Web的应用程序和   以这种方式单独构建整个Web应用程序的特定功能   我可以在我的网络应用程序中部署功能a,b,c并在B部署   功能a,c,d。

如果这些是您的要求,那么您实际上并不需要直接关注OSGi,而是找到支持模块化扩展的Web应用程序框架。这很可能意味着框架本身使用OSGi。我不熟悉Spring,但我知道Struts 2(一个类似的Web应用程序框架)有一个OSGi based plugin意味着实现你的用例。

另一方面,如果您的想法是使用OSGi,那么我建议您选择较低级别的任务,例如编写Web应用程序框架,而不是Web应用程序本身。