gpt4 book ai didi

java - OSGi 模块/包粒度

转载 作者:搜寻专家 更新时间:2023-10-31 19:56:25 27 4
gpt4 key购买 nike

当我第一次开始研究 OSGi 时,我的印象是您可以构建一个 JAR,只要它有一个 list 文件,您就可以将它部署在一个 OSGi 容器中。我设想以经典方式 (maven) 构建我的模块,并可能使用一些插件或类似的东西来编写 list ,然后我可以让我的模块基本上是一个独立的应用程序,通过 OSGi 与其他模块通信。

进一步阅读有关 OSGi 的内容,我开始看到更多在较低级别使用它的示例,这些示例基本上取代了依赖注入(inject)并提供了诸如日志记录之类的横切关注点服务。似乎使用 hibernate 或其他东西是一个问题......(或者我可能只是遗漏了一些东西)。

至少对我来说,我真的不明白拥有如此高水平的模块化和与 OSGi 的集成有什么意义,我宁愿有一个单独的模块,每个模块都有自己的一套技术和框架,可能还有网络资源和持久层。这可以通过 OSGi 实现吗?如果是,您能否指出正确的方向、示例等?

编辑,添加了一些我尝试使用 OSGi 的更多细节:

我只是在设想拥有一个以上的模块的可能性,它可能具有更高级别的责任。

比如议程模块。在这种情况下,我想要诸如事件持久性、添加事件、使用过滤器列出事件等...这个议程可能有几个内部类,甚至可能需要一个持久层。所以我想使用类似 Guice 的东西来 DI 这些类,并使用一些 JPA 来保存我的数据。

我可以理解一些 X-cutting 问题,如服务器或日志记录可以有一个包,但数据模型是特定于议程包的。所以我想我的问题是在最后什么是 bundle 内可以做什么和不能做什么?作为一般做法,在室内应该做什么和不应该做什么?

谢谢!毛里西奥

最佳答案

您可以使用 OSGi,而无需在应用程序代码上强制依赖 OSGi。然而,由于 OSGi 提供模块化,中间件(您的层)需要了解一些 OSGi 知识。问题在于,在模块化世界中,您想隐藏实现细节,这就是全部目的。然而,诸如 Spring 和 Hibernate 之类的东西倾向于假定类路径没有边界,并且它们会一头扎进栅栏。幸运的是,越来越多的中间件正在为此做好准备,我听说 Hibernate 现在已经在努力,JPA 也可以在 OSGi 中使用。

关于java - OSGi 模块/包粒度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15203655/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com