当前位置: 首页 > 知识库问答 >
问题:

对OSGi包进行分组以生成一个连贯的“应用程序”的最佳方法是什么?

丘华翰
2023-03-14

而用户则不太可能接触到捆绑。他们更关心应用程序,一个执行任务或解决问题的软件。通常,应用程序将使用多个包(例如,通过Import-Package导入)来执行其任务。

在OSGi世界中,什么是将这种关系正式化的最佳方法?一个示例性需求将是向用户显示应用程序(而不是包)的当前版本号这样简单的东西。如何发现此版本号?

Eclipse有一个叫做“特性”的概念,但这不是OSGi的标准。

一种方法可能是拥有一个使用Require-Bundle并拥有自己版本的“应用程序包”,但Require-Bundle在OSGi世界中是不受欢迎的。

然而,使用Import-Package导入所有需要的包和所需的版本,会给开发人员增加大量的维护开销,我认为这是不可行的。每次做出最小的更改,甚至是对实现包的更改,都必须更新包版本,然后在“Application Bundle”中更新对包版本的依赖关系。

共有1个答案

孙星鹏
2023-03-14

框架就是应用...在OSGi世界中imho最大的错误是将OSGi视为一个多租户框架,它不是为这个目的而设计的,它不适合。在一个框架内,有很高的内聚性,所有注册的服务都是你的服务。OSGi的体系结构模型允许您从通过服务有线连接的松耦合组件编写应用程序。这是它在软件中得到的最好的东西(尽管不幸的是有很多缺少的组件,但将会出现)。

在bndtools中,我们会用我们的方式来帮助这个模型。bndtools bndrun文件基本上是一个可以部署的应用程序。bnd可以将这个bndrun文件转换为带有主类清单头的可运行Jar。(使用JPM将很容易在任何系统上部署。)

所以工作流程基本上是:设计您的服务(==架构),找到标准组件,开发缺失的组件,测试组件,测试集成,并将整个事情变成一个可运行的JAR(或WAR)。

 类似资料:
  • 问题内容: Java是我选择的编程语言之一。尽管将应用程序分发给最终用户,但我总是遇到问题。 为用户提供JAR并不总是像我想要的那样友好,并且使用Java WebStart要求我维护Web服务器。 分发Java应用程序的最佳方法是什么?如果Java应用程序需要在用户计算机上安装工件,该怎么办?有没有好的Java安装/打包系统? 问题答案: 有多种解决方案,取决于你的发行要求。 只是用一个jar。这

  • 问题内容: 我刚刚完成了将应用程序从Windows移植到Linux的工作。 我必须创建该应用程序的安装程序。 该应用程序 不是 开源的=>我应该分发该应用程序的二进制文件(可执行文件,几个.so文件,帮助文件和图像)。 我不喜欢第一种方法(RPM和DEB软件包),因为我不想为不同的Linux发行版保留不同的软件包。 为Linux分发二进制应用程序的 最佳方法 是什么? 问题答案: 经过几次使用商业

  • 问题内容: 是什么使应用程序功能的模块/服务/位成为OSGi模块的特别好的候选者? 我对在我的应用程序中使用OSGi感兴趣。我们是一家Java商店,我们广泛使用Spring,因此我倾向于将Spring动态模块用于OSGi(tm)服务平台。我正在寻找一种将OSGi一点点集成到应用程序中作为试用的好方法。这里有人使用过此技术或类似的OSGi技术吗?有陷阱吗? @Nicolas-谢谢,我已经看过那个了。

  • 这并不困难,但它让我质疑spring auth服务器是最好的选择,还是我应该使用Keycloak?

  • 问题内容: 我有mongodb和NodeJs。通过mongoosejs完成连接。 开发Ajax Infinity滚动的最佳方法是什么?我应该使用极限和偏移量吗? 问题答案: 当您对数据集进行分页时,“跳过并限制”方法不是很有效。它实际上是Shlemiel Painter的算法 。 范围查询效率更高(当索引支持时)。例如,假设您正在显示推文。您的页面大小是20,您在第1000页上,并且想要加载第10

  • 问题内容: 这种功能可以在服务器群集上运行应用程序,以分配负载并提供额外的冗余。 我看过GridGain的演示文稿,对此印象深刻。 认识其他人吗? 问题答案: 有几个: Terracotta(开源,基于Mozilla Public License); Oracle Coherence(以前是Tangosol Coherence;商业;基于JSR 107,从未正式采用); GigaSpaces(商业