【问题标题】:Migrating J2EE style Project to OSGi Style using the OSGi declarative services使用 OSGi 声明式服务将 J2EE 样式项目迁移到 OSGi 样式
【发布时间】:2015-11-13 16:21:46
【问题描述】:

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

简单的请求流程如下所述

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

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

Q2]让 Q1 更上一层楼 如果有 10 个模块,而不是在一个 OSGi 包中处理特定于模块的代码, 我必须为每个模块创建 3 个包(XXXAPI、XXXMain、XXXConfig) 例如测试模块 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 个捆绑包之间应该有适当的通信,以解决依赖关系并正确/同步地协同工作

任何帮助将不胜感激

问候, 悟空

【问题讨论】:

    标签: spring osgi


    【解决方案1】:

    这是您正在处理的一项重大任务。我进行了这样的迁移,并且对 OSGi 非常熟悉。仍然花了大约2个月的时间。因此,您首先不应低估您将面临的问题。 接下来是典型的 Spring 应用程序没有很好地模块化。由于 JSE 中没有私有/公共包,因此开发人员倾向于忽略模块边界。这些模块通常也根本没有干净和小型的 API,因此人们知道他们应该访问什么,不应该访问什么。

    所以我认为您的首要任务是重构应用程序,以便每个捆绑包都提供一个最小的 API,而其他模块只能访问该 API。对于这个任务,使用允许定义和控制这些访问的架构工具可能是有意义的。在春季,您可以从 API 的服务接口创建 bean。稍后在 OSGi 中,API 将允许定义干净的 OSGi 服务。如果你跳过这一步,那么 OSGi 将不会有很大的优势。只有在应用程序严格模块化时,OSGi 才能正常工作。

    那么对于实际的 OSGi 迁移,我只能敦促您聘请一些专家来帮助您。如果你一个人做这将是浪费时间和资源。

    【讨论】:

      猜你喜欢
      • 2021-07-14
      • 1970-01-01
      • 2012-04-27
      • 2013-10-09
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      相关资源
      最近更新 更多