1

我有一个具有不同层的 Web 应用程序(即 ui->services->core)。如果我必须更新其中一层,我必须重新启动整个应用程序。所以我决定使用 OSGI 来分离这些层。然后我可以在不重新启动的情况下更新每一层。

这是一个好主意还是 osgi 不是正确的方法?

4

2 回答 2

4

好吧,我不能说这是否是一种方法,但 OSGi 肯定是一种好方法。正如 kctang 在其回答中指出的那样,它的学习曲线相当陡峭。然而,它最终会付出代价。您严格的模块化方法允许您实现关注点分离,这是其他框架根本无法实现的。

关于您的具体案例,我最近阅读了OSGi in Depth的一章,其中他们指出了 OSGi 中的层分离,特别关注云部署。总而言之,远程服务规范将帮助您将层分布到多台机器上,这可以成为企业应用程序的救星。另一本有趣的书是Enterprise OSGi in Action,但目前只能通过 Manning Early Access Program 获得。

如果我必须批评的话,仍然缺少框架实现者对 JMX 的支持。并不是说您不能以其他方式(编程或非编程方式)管理您的更新,但这会很有用。无论如何,这只是说OSGi还有改进的空间。

于 2012-06-21T12:22:31.297 回答
3

如果要避免在开发过程中重新启动整个应用程序,那么 OSGi 不应该是第一个考虑的选项。检查 JRebel/LiveRebel 之类的东西是否能满足您的需求。

虽然 OSGi 可以实现不需要重新启动其他包/层之类的事情——如果你做对了——恕我直言,它有一些学习曲线能够正确地做。

一些进一步的阅读:

于 2012-06-21T12:05:40.923 回答