我在这里需要一个建议。
我想模块化我现有的Java Web应用程序
试图用maven做它并且它有点工作。
我设法在一个模块('核心')中分离服务层,而其他两个Web应用程序正在使用相同的核心模块。
现在我想尝试使用OSGi,我想让OSGi参与模块化,以便在需要时使用它。
我这里几乎没有问题:
1.如何用OSGi模块化我的应用程序的任何部分,如何从它开始?有很多例子可以从OSGi开始,但没有一个是在现有应用程序中这样做
2.如何在tomcat服务器上使用它?我知道我需要一个OSGi容器(Equinox,Apache Felix,..)来使用OSGi,但是如何设置Tomcat和OSGi容器一起工作?
如果有人有一些建议或者可以将我链接到一些有用的教程, 我非常感激。
提前致谢,
米洛斯。
答案 0 :(得分:4)
这是OSGi教程,可帮助您创建/激活捆绑/ Web应用程序。
http://blog.knowhowlab.org/2010/06/osgi-tutorial-from-project-structure-to.html
http://blog.knowhowlab.org/2010/10/osgi-tutorial-4-ways-to-activate-code.html
答案 1 :(得分:2)
使用OSGi需要深入了解所有OSGi功能,尤其是不同的类加载行为。 您需要考虑的是OSGi确实有益于您的应用程序。如果以广泛的方式使用Class.forName,则会遇到问题。还有许多第三方库不容易与OSGi一起使用。
因此,在更改代码中的任何内容之前,请务必了解OSGi。我会推荐深度OSGi和/或OSGi in Action中的书来学习和理解OSGi。
不要误会我的意思,OSGi是一个很好的技术,但它比第一眼看上去要困难得多。 如果您的应用程序完全使用OSGi,则不需要Tomcat,OSGi容器是OSGi应用程序的运行时,因为Tomcat服务器是另一个运行时环境。 如果需要与Tomcat服务器通信,可以使用JMS或类似的东西。 看一下OSGi Remote Service
答案 2 :(得分:1)
我推荐Spring Dynamic Modules(http://www.springsource.org/osgi)。它的优点是你不必弄脏OSGi的所有令人讨厌的细节,并且可以通过Spring IOC使用它。
即使您想要处理OSGi,也并不意味着您必须使您现有的应用程序能够识别OSGi。以下两个规范可以帮助您从OSGi API中抽象出组件: