我们正在考虑使用ConfigurationAdminService作为在我们基于OSGi的应用程序中配置组件的主要API。如果我们可以重用一些现有的实现,那就太好了,所以我正在尝试调查和评估最受欢迎的实现。我知道有:ApacheFelixConfigAdmin(org.apache.felix.cm)EquinoxConfigAdmin(org.eclipse.equinox.cm)是否还有其他实现需要考虑?此外,我无法为这些实现找到任何好的文档。我主要对特定于实现的细节感兴趣。例如,我想知道不同的实现如何保留配置数据(例如多个属性文件?XML文件?多个XML文件?数据库?,...)。
我正在使用aQuteBnd工具集来创建OSGi包,并打包了一些相关的“资源”文件。这包括我创建的资源目录中的*.css文件和*.xsd文件。我在bundle.bnd文件中包含了以下内容:Include-Resource:resources/=resources/当我进行构建时,生成的*.jar文件在jar包文件顶层目录的资源目录中包含*.css和*.xsd文件。但是,在实际代码中,我很难尝试将其作为我的类路径的一部分:我尝试了以下方法:newFile("resources/example.css");我也试过:URLcssFile=this.getClass().getResource
我刚刚开始使用OSGi编程,并且遇到了两种监听服务被激活的方法。第一种方式,来自EclipseRCP书籍,使用ServiceReference:Stringfilter="(objectclass="+IModelCreator.class.getName()+")";context.addServiceListener(this,filter);modelCreators=Collections.synchronizedMap(newHashMap>());ServiceReferencereferences[]=context.getServiceReferences(null,f
OSGi包启动级别是如何定义的?我正在使用Apachefelix,并希望在整个框架执行过程中保持启动级别。我预计根本不需要非常频繁地更改bundle的起始级别,Manifest.MF中的一个条目似乎是最明智的。我已经到org.osgi.framework.startlevel但还没有看到一个实际的例子。我也在使用maven和maven-bundle-plugin,如果有一种优雅的方式将起始级别合并到POM中,那将是非常棒的。 最佳答案 Bundle不会在构建时定义它们自己的起始级别;将bundle安装到框架中的管理员或代理定义了它。
我熟悉Import-Package和Export-Package,但这对我来说是新的。它有什么作用? 最佳答案 在OSGi容器中运行时它什么都不做。事实上,OSGi规范中甚至没有提到它(我检查了R4)。但是,它可以在.bnd文件中指定,供bnd在构建时使用。如果是这样,它可用于确定bundle中的内容。当bnd构建一个bundle时,它会自动确定哪些类需要进入bundle。导出的包中的所有类都包括在内,它们(传递地)依赖的所有类也包括在内。这意味着如果一个类似乎没有被使用,那么它就不会被包含在包中。但是,您可以使用Private
我有一堆基于Eclipse的插件,我一直在迁移到Maven/Tycho。这些插件中的大多数都依赖于我现在通过Maven管理的独立库,而不是与.jar混为一谈。文件。我当前设置中最麻烦的部分是由于Tycho明显无法处理Maven-only(即非OSGi)Artifact。我当前的设置是这样的:在pom.xml对于每个Eclipse插件,我都会发布unpack目标maven-dependency-plugin在initialize期间阶段。这会将我指定的Artifact解压缩到单独的target/dependencies目录。target/dependencies目录被添加为build.p
我想知道是否可以嵌入像Karaf这样的OSGi容器在Tomcat实例中。根据thisSOquestion和其他一些,它似乎可能,但我似乎无法找到有关如何执行此操作或需要注意哪些陷阱/警告的任何可靠细节。所以:是否可以在Tomcat中嵌入一个OSGi容器,这样我就可以在任何时候将OSGi包热部署到这个容器而无需重新启动Tomcat?如果上面#1的答案是"is",那么在Tomcat中嵌入OSGi会暴露哪些系统服务/端口?我问是因为我想在我没有管理员权限的JavaPaaS上托管的Tomcat服务器中部署OSGi。我想知道当我尝试将嵌入式OSGi容器部署到Tomcat时,它是否会尝试开始监听端
我使用eclipse插件项目向导(使用eclipseHelios)创建了两个OSGI包A和B。在bundleB的list文件中,我添加了bundleA作为依赖项。此外,我已经导出了A中的包,因此它们对B可见。我在包A中也有一个.properties文件,我想让它对包B可见。在包A的build.propertiesPane中,我指定了:source..=src/bin.includes=META-INF/,\.,\bundle_A.properties现在在bundleB中,我尝试使用以下方法加载.properties文件:privatePropertiesloadProperties(
第126章OSGIEnterpriseRelease5specification提到兼容性:"SupportthetraditionalJNDIprogrammingmodelusedbyJavaSEandJavaEEclients."和使用OSGI不感知代码:"ClientsandJNDIContextprovidersthatareunawareofOSGiusestaticmethodstoconnecttotheJREJNDIimplementation.TheInitialContextclassprovidesaccesstoaContextfromaproviderand
我们有一个大的(~215个包,并且还在增加)osgi(felix+springdm)项目,使用maven和maven-osgi插件构建。我们有几个maven方式的问题:1.子模块pom必须从父pom继承以利用公共(public)变量和依赖项(没关系),但是父pom必须包含所有包pom才能将所有内容构建在一起。这种循环引用使得保持所有同步变得非常困难。2。子包的单独版本控制非常复杂,以至于(在我加入项目之前)决定对所有包使用相同的版本。这意味着我们现在也会为每个版本更新所有bundle的版本,即使实际上只是更改了其中的一部分。这使得osgi的整个概念有点毫无意义恕我直言。请注意,我并不是