使用OSGi声明性服务将J2EE样式项迁移到OSGi样式

时间:2015-08-20 06:43:59

标签: spring osgi

我是OSGi的新手,正在使用Equinox“Virgo Tomcat Server”(VTS)以及eclipse蓝图,并且在有限的时间内完成了大任务 J2EE Style中已经开发了应用程序 通过使用JSP-> Struts2-> Spring-> MySQL和SOAP Web服务。 - 现有架构中有各种层

简单请求流程如下所述

从UI层 - >它转到strus2 configration->它转到Spring配置 - >从Spring配置xml(即模块明智的应用程序上下文xml)Struts Action类被称为-From Struts Action类层 - >它转到任务层 - >处理程序层 - >服务层 - >适配器或DAO层 - > DB在某些情况下来自服务层调用也会转到WebService层并与后端遗留系统进行通信

我的查询如下 Q1]从UI / JSP到up-to strtus2每个模块的动作层代码应该在一个单独的.war文件中说“onlinebank.war”,并且从每个层中的struts2动作onwords模块明智代码应该进入模块明智的OSGi捆绑 对于例如如果有10个模块,那么应该有10个osgi包 并且每个模块明智的捆绑包应该包含来自动作层之后的每个层的模块特定代码,并且应该在一个战争“onlinebank.war”和10个osgi捆绑之间进行通信

Q2]将Q1提升到新的水平 如果有10个模块,那么不要在一个OSGi包中处理模块特定代码, 我必须为每个模块创建3个包(XXXAPI,XXXMain,XXXConfig) 例如TestModule I] TestModuleAPI(仅包含接口和抽象类) II] TestModuleMain(将包含接口和抽象类的实现,并将提供一些默认功能) III] TestModuleConfig(将通过API Bundle访问Main Bundle的默认功能,并提供一些自定义/新功能)

因此,如果每个模块(API,Main,Config)有10个模块和3个OSGi捆绑包,那么10个捆绑包应该有3 * 10 = 30个捆绑包,并且应该在-single war“onlinebank.war之间进行适当的通信“和30捆 此外,30个捆绑包之间应该进行适当的通信以解决依赖关系并正确/同步地协同工作

非常感谢任何帮助

此致 戈库尔

1 个答案:

答案 0 :(得分:0)

这是你正在解决的一项重大任务。我做了这样的迁移,并且对OSGi非常熟悉。还需要大约2个月。因此,您首先不应低估您将面临的问题。 接下来是典型的弹簧应用程序没有很好地模块化。由于JSE中没有私有/公共包,开发人员倾向于忽略模块边界。模块通常也没有干净的小API,因此人们知道他们应该访问什么,不能访问什么。

所以我认为你的第一个任务是重构应用程序,以便每个bundle提供一个最小的API,其他模块只访问API。对于此任务,使用允许定义和控制这些访问的体系结构工具可能是有意义的。虽然仍然在春天,您可以从API的服务接口创建bean。稍后在OSGi中,API将允许定义干净的OSGi服务。如果你跳过这一步,那么OSGi将没有很大的优势。如果应用程序严格模块化,OSGi才能正常工作。

然后,对于实际的OSGi迁移,我只能敦促您雇用一些专家来帮助您。如果你单独这样做,将浪费时间和资源。