Har*_*hil 0 osgi apache-felix apache-karaf osgi-bundle karaf
在Google浏览器上搜索了很多,我知道它用于测试和构建OSGI包.我还没弄清楚如何处理Apache Karaf以及如何使用它我也不太了解OSGI包的需求.
此外,我也想知道以下疑虑的答案:
要了解Apache Karaf,您首先应该了解OSGi.
Java应用程序以Jar文件的形式部署为其工件.如果应用程序依赖于其他jar文件,那么这些jar必须存在于应用程序的类路径中.应用程序运行时,将根据需要加载和实例化所需的类.
如果您的应用程序部署在任何容器内(例如:像tomcat这样的Web服务器),则容器会遵循一些标准逻辑来加载或初始化您的应用程序.这涉及加载类.要求程序内引用的类必须存在于应用程序的类路径中(例如:war文件的web-inf目录).如果容器在war中找不到所需的类,它会查询应用程序的父类加载器以找到类文件.因此,这种方式在使用普通的Java运行时时会出现多个分层类加载器.这有一个问题,即根据部署的应用程序多次加载相同的类.
欢迎来到OSGi.在OSGi中,jar将被称为Bundle.捆绑包看起来像一个jar,但在manifest.mf文件中有额外的标头.标头提供有关捆绑包导出/导入的包的信息.当您的应用程序想要使用任何库jar文件时,您会在manidest的Import-package标头中提到所需的包.当任何其他包想要在您的包中使用包时,您必须使用Export-package标头公开包.
OSGi运行时查找此类标头并有效处理类加载.因此,只使用jar的classloader只加载一次类,你将从烦人的ClassNotFoundExceptions中解救出来.
OSGi是规范.它有一个可以在manifest.mf中使用的标头列表.期.
Apache Felix和Eclipse equinox是本规范实现的一小部分.
Apache Karaf是一个控制台.控制台有助于与任何应用程序交互.这里,应用程序是OSGi运行时,它是Apache Felix.Karaf提供了许多与OSGi交互的命令.您可以使用其热部署功能在运行时将新捆绑包部署到OSGi(无需重新启动Karaf).只需将bundle文件放在deploy文件夹中即可完成.
使用Karaf,您可以看到服务,任何捆绑包暴露的包.Karaf提供了大量开箱即用的框架,如spring,jetty服务器,日志工具.
使用Karaf,您可以在运行时启动,停止任何捆绑.
因此,总而言之,Karaf只是OSGi运行时的控制台.
你可以编写任何普通的java程序并使用OSGi.您只需要使用bundle activator连接应用程序初始化逻辑.
Apache maven是一个构建工具.有了这个,你可以构建(准备jar工件)任何java项目.
在使用OSGi时,您需要遵循manifest.mf语法.应根据需要导出和导入包.为了帮助构建适当的manifest.mf,有一个'bnd'工具.此工具分析应用程序的类路径,并使用适当的清单准备最终的OSGi包.
Apache maven使用这个'bnd'工具和maven-bundle-plugin.只需将此插件附加到项目的生命周期目标即可完成.Maven将为您准备一个捆绑包.
| 归档时间: | 
 | 
| 查看次数: | 2409 次 | 
| 最近记录: |