首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Karaf和OSGI Bundles

Apache Karaf和OSGI Bundles
EN

Stack Overflow用户
提问于 2015-03-19 03:54:01
回答 2查看 3.2K关注 0票数 1

在对Apache进行了大量搜索之后,我了解到它被用于测试和构建OSGI包,我还没有弄清楚如何处理Apache,以及如何使用它--我也不太了解OSGI包的需求。

此外,我亦想知道以下疑问的答案:

  1. 用简单的话来说,究竟什么是Apache karaf?
  2. 它的目的是什么?它能用来解决日常的算法问题吗?
  3. 从哪里可以找到关于Karaf的很好的教程问题?
  4. Apache、Apache和Apache之间有什么区别,它们与OSGI有什么关系?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-19 07:31:23

  1. Apache是一个OSGi容器,它带来了运行OSGi (std )的基础设施。OSGi ),因为Tomcat是一个网络容器,它提供了运行Web应用程序的基础设施。
  2. 不知道你的日常算法问题,但它解决了许多其他日常问题,因为它的OSGi性质。为此,您最好看看OSGi及其内容。简言之: OSGi帮助您解决两个主要问题:高内聚性和低耦合性。由于类加载器分离(它是一个图而不是树),可以运行同一工件的多个版本。 由于服务注册中心,有可能有一个类似于插件的体系结构,其中一个应用程序可以侦听一个接口(服务)的多个实现。
  3. 有很多,甚至书籍,让你开始,你只需要谷歌为它。或者看一下Apache文档和相应的文章
    • Apache :这是一个构建系统,它在构建时管理您的依赖关系。
    • Apache :这是一个OSGi框架实现(比如Equinox)。
    • Apache :正如在1.a OSGi容器中所说的,它解决了许多基础设施问题,比如:日志记录。简单的部署,方便的准备,以及更多。对于完整的堆栈,请再次查看文档

票数 4
EN

Stack Overflow用户

发布于 2015-06-01 18:42:04

要理解Apache,首先应该了解OSGi。

Java应用程序以Jar文件的形式部署,作为它们的工件。如果应用程序依赖于其他jar文件,那么这些jar必须存在于应用程序的类路径中。当应用程序运行时,将根据需要加载和实例化所需的类。

如果您的应用程序部署在任何容器中(例如:像tomcat这样的web服务器),那么容器将遵循一些标准逻辑来加载或初始化应用程序。这涉及到加载类。程序中引用的类必须出现在应用程序的类路径上(例如: war文件的web-inf目录)。如果容器在war中找不到所需的类,它会咨询应用程序的父类加载器来定位类文件。因此,这样,在处理正常的java运行时,就会出现多个层次化的类加载器。这就存在一个问题,即根据部署的应用程序,同一个类被加载了多次。

欢迎来到OSGi。在OSGi中,一个jar将被称为Bundle。一个包看起来类似于一个jar,但是它的manifest.mf文件中有额外的头。标头提供了关于包导出/导入的包的信息。当您的应用程序想要使用任何库jar文件时,您必须在manidest的Import header.When中提到所需的包-任何其他包都想使用bundl中的包,您必须使用Export报头公开这个包。

OSGi运行时查找此类标头并有效地处理类加载。因此,类只使用jar的类加载器加载一次,您将从恼人的ClassNotFoundExceptions中获救。

OSGi是规范。它有一个可以在manifest.mf中使用的标题列表。句号。

Apache和Eclipse是该规范的少数实现。

Apache是一个控制台。控制台有助于与任何应用程序交互。在这里,应用程序是OSGi运行时,它是Apache。Karaf提供了许多与OSGi交互的命令。您可以在运行时将新的包部署到OSGi (不需要重新启动Karaf),使用它的热部署特性。只要将包文件放在deploy文件夹中,您就完成了。

使用Karaf,您可以看到服务,由任何包公开的包。Karaf提供了许多开箱即用的框架,如spring、jetty服务器、日志工具。

使用Karaf,您可以启动,在运行时停止任何包。

因此,最后,Karaf只是一个用于OSGi运行时的控制台。

您可以编写任何普通的java程序并使用OSGi。您只需将应用程序初始化逻辑与bundle激活程序连接起来即可。

Apache是一个构建工具。有了这个,您可以构建(准备jar工件)任何java项目。

在使用OSGi时,您需要坚持使用manifest.mf系统。包装应按要求出口和进口。为了帮助构建适当的manifest.mf,有一个'bnd‘工具。此工具分析应用程序的类路径,并使用适当的清单准备最终的OSGi包。

Apache利用这个'bnd‘工具和它的maven -bundle插件。只要把这个插件附加到项目的生命周期目标上,你就完成了。Maven会为你准备一个包裹。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29136950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档