我刚接触OSGi,正在使用Equinox "Virgo Tomcat Server“(VTS)和eclipse blueprint,并且在有限的时间内有大量的任务要做。已经有一些应用程序通过使用JSP->Struts2->Spring->MySQL和SOAP Web Services在J2EE风格中开发。-There是现有体系结构中的各个层
简单请求流如下所述
从UI层转到strus2配置->它转到Spring配置->从Spring configuration xml (即模块化应用程序上下文xml) Struts Action类称为Struts Struts Action类层->它转到任务层->处理程序层->服务层->适配器或DAO层在某些情况下,来自服务层的调用也会转到WebService层,并与后端遗留系统进行通信
我的查询如下: Q1]从UI/JSP到strtus2,每个模块的动作层代码都应该放在一个单独的.war文件中,比如"onlinebank.war“,每个层中的struts2动作代码都应该放入模块明智的OSGi包中,例如,如果有10个模块,就应该有10个osgi包,每个模块明智的包应该包含来自动作层之后的每一层的模块特定代码,并且在一个war "onlinebank.war”和10个osgi包之间应该有通信
Q2]为了让Q1更上一层楼如果有10个模块,那么我必须为每个模块(XXXAPI,XXXMain,XXXConfig)创建3个包,例如TestModule I] TestModuleAPI (将只包含接口和抽象类) II] TestModuleMain (将包含接口和抽象类的实现,并将提供一些默认功能) III]TestModuleConfig (将通过API包访问主包的默认功能,并提供一些自定义/新功能)
因此,如果每个模块(API、主、配置)有10个模块和3个OSGi捆绑包,那么对于10个捆绑包,应该有3*10=30捆绑包,-single war "onlinebank.war“和这30个捆绑包之间应该有适当的通信,并且30个捆绑包之间应该有适当的通信,以解决依赖关系并正确/同步地协同工作。
任何帮助都将不胜感激。
致敬,Gokul
发布于 2015-08-20 16:27:16
这是你正在处理的一项艰巨的任务。我做过这样的迁移,对OSGi非常熟悉。尽管如此,还是花了大约2个月的时间。因此,你首先不应该低估你将面临的问题。下一件事是典型的spring应用程序没有很好地模块化。由于JSE中没有私有/公共包,因此开发人员倾向于忽略模块边界。这些模块通常也没有一个干净和小的API,所以人们知道他们应该访问什么,不应该访问什么。
因此,我认为您的首要任务是重构应用程序,以便每个捆绑包提供最低限度的API,而其他模块仅访问API。对于此任务,使用允许定义和控制这些访问的架构工具可能是有意义的。在spring中,您可以从API的服务接口创建bean。稍后在OSGi中,该应用程序接口将允许定义干净的OSGi服务。如果您跳过这一步,那么OSGi将不会有太大的优势。只有在应用程序严格模块化的情况下,OSGi才能正常工作。
然后,对于实际的OSGi迁移,我只能敦促您聘请一些专家来帮助您。如果你一个人做这件事,那将是浪费时间和资源。
https://stackoverflow.com/questions/32111235
复制相似问题