当我第一次开始研究 OSGi 时,我的印象是你可以只构建一个 JAR,只要它有一个清单文件,你就可以将它部署在一个 OSGi 容器中。我想象以经典方式(maven)构建我的模块,并且可能使用一些插件或类似的东西来编写清单,然后我可以让我的模块基本上是一个独立的应用程序,通过 OSGi 与其他模块通信。
进一步阅读有关 OSGi 的信息,我开始看到更多在更底层使用它的示例,它基本上取代了依赖注入并提供了横切关注点服务,如日志记录。并且似乎使用休眠或其他东西是一个问题......(或者我可能只是错过了一些东西)。
至少对我来说,我并没有真正看到拥有如此高水平的模块化和与 OSGi 集成的意义,我更愿意拥有一个单独的模块,每个模块都有自己的一套技术和框架,可能还有一个 Web 资源和持久层。这可以通过 OSGi 实现吗?如果是的话,你能指出我正确的方向,例子等吗?
编辑,添加了一些关于我如何尝试使用 OSGi 的更多细节:
我只是在设想拥有一个以上模块的可能性,它可能具有更高级别的责任。
比如议程模块。在这种情况下,我想要事件的持久性、添加事件、使用过滤器列出事件等......这个议程可能有几个内部类,甚至可能需要一个持久层。所以我想使用 Guice 之类的东西来 DI 这些类,并使用一些 JPA 来保存我的数据。
我可以理解,服务器或日志记录等一些 X-cutting 问题可以有一个包,但数据模型是特定于议程包的。所以我认为我的问题最后是什么是捆绑包内不可能做什么?作为一般做法,应该和不应该在内部做什么?
谢谢!毛里西奥