【问题标题】:Modularizing existing web applications with OSGi使用 OSGi 模块化现有的 Web 应用程序
【发布时间】:2011-07-31 16:48:45
【问题描述】:

我在这里需要一个建议。 我想模块化我现有的 Java Web 应用程序。
尝试用 maven 来做这件事,但它确实奏效了。
我设法在一个模块(“核心”)中分离服务层,其他两个 Web 应用程序正在使用同一个核心模块。

现在我想在 OSGi 上尝试一下,我想让 OSGi 参与模块化,以便在需要时使用它。
我这里有几个问题:
1. 如何使用 OSGi 模块化我的应用程序的任何部分,如何开始?有很多从 OSGi 开始的示例,但没有一个是关于在现有应用程序中这样做的。
2.如何在tomcat服务器上使用?我知道我需要一个 OSGi 容器(Equinox、Apache Felix、..)来使用 OSGi,但是如何设置 Tomcat 和 OSGi 容器一起工作?

如果有人有一些建议或可以将我链接到一些有用的教程,
我会非常感激。

提前致谢,
米洛斯。

【问题讨论】:

    标签: java web-applications tomcat osgi


    【解决方案1】:

    【讨论】:

    • 感谢 Dmytro,希望在您的博客上找到有趣的东西!
    【解决方案2】:

    使用 OSGi 需要深入了解所有 OSGi 功能,尤其是不同的类加载行为。 您需要考虑的是 OSGi 是否真的有益于您的应用程序。如果您以广泛的方式使用 Class.forName,您会遇到问题。也有很多第三方库不易与 OSGi 一起使用。

    因此,在更改代码中的任何内容之前,请务必了解 OSGi。我会推荐 OSGi in Depth 和/或 OSGi in Action 这本书来学习和理解 OSGi。

    不要误会我的意思,OSGi 是一项不错的技术,但它比乍看起来要困难得多。 如果您的应用程序完全使用 OSGi,您将不需要 Tomcat,OSGi 容器是 OSGi 应用程序的运行时,因为 Tomcat 服务器是另一个运行时环境。 如果您需要与 Tomcat 服务器通信,您可以使用 JMS 或类似的东西。 看看 OSGi 远程服务

    【讨论】:

      【解决方案3】:

      我推荐 Spring Dynamic Modules (http://www.springsource.org/osgi)。它的优点是你不必弄脏 OSGi 的所有讨厌的细节,并且可以通过 Spring IOC 使用它。

      即使您想处理 OSGi,也并不意味着您必须让现有的应用程序支持 OSGi。以下两个规范可以帮助您从 OSGi API 中抽象出组件:

      1. OSGi 声明式服务(请参阅 http://www.aqute.biz/Snippets/HelloWorldComponent
      2. OSGi 蓝图(类似于 Spring DM)

      祝你好运!

      【讨论】:

      • 感谢洛朗的快速回复!我正在阅读有关 Spring DM 的信息。我不太了解其他的东西(OSGi 声明式服务和 OSGi 蓝图),而且这个“即使你想处理 OSGi,这并不意味着你必须让你现有的应用程序感知 OSGi”,所以我的英语,但你能说得更清楚一点吗,我就是不明白:(。提前致谢!
      • @user79163 这两个规范都允许您将组件与 OSGi 集成,但不要求您的组件使用任何 OSGi 接口或类。这是一个很大的优势,因为您可以从 OSGi 提供的模块化中受益,而无需修改代码以使其依赖于 OSGi。但是请继续阅读有关 Spring DM 的内容,希望您能很好地掌握全局。
      猜你喜欢
      • 2011-11-08
      • 2014-02-17
      • 2011-03-27
      • 2013-08-15
      • 2012-10-12
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      相关资源
      最近更新 更多