草庐IT

java - 使用 Maven 构建 OSGi 应用程序

我想构建一个OSGi兼容的多模块应用程序,编译后我在3个文件夹中拥有所有必需的包。我正在使用ma​​ven-bundle-plugin和ma​​ven-scr-plugin来创建包。我想要的是使用单个命令在osgi容器(Equinox)中运行此应用程序,希望使用脚本。为此,我相信我必须创建一个config.ini文件,列出应用程序中的所有包。有没有办法在Maven编译时生成它?或者是否有更好的方法来获取某个文件夹结构中的所有bundle,以便应用程序可以立即运行? 最佳答案 您可以将maven-pax-plugin与PaxRunne

java - OSGi Service tracker 和 Declarative Services 有什么不同

我现在正在处理OSGi服务,我有一个关于在OSGi中使用服务的问题。有一些不同的方式来注册用户服务。谁能解释OSGiServicetracker和DeclarativeServices之间的区别?哪个更好? 最佳答案 在OSGi中,ServiceTracker是一种获取服务引用的编程方式。即,您编写ServiceTracker代码来“跟踪”对另一个服务的引用,并让您在它可用时使用它。相比之下,声明式服务(DS)允许您声明注入(inject)到组件中的依赖项。因此,DS是一种依赖注入(inject)形式。服务之间的依赖关系图及其启动顺

java - 在 JUnit 测试的上下文中使用 OSGi 声明式服务

我正在尝试弄清楚如何使用JUnit在OSGi中实现多包集成测试。对于集成测试,我的意思是实例化bundle的一个子集以自动验证该子系统中的功能。我们正在运行Equinox并使用Eclipse作为工具链。Eclipse提供了“作为JUnit插件运行”选项,它启动了OSGi框架并实例化了配置包,所以我想这是要遵循的路径,但我找不到将DS引用注入(inject)我的测试的方法。我已经看到使用ServiceTracker作为访问不同服务包的编程方式,但这超出了拥有DS的目的,不是吗?我刚刚开始使用OSGI,所以我想我只是遗漏了一些可以让我将多捆绑测试放在一起的拼图。有什么想法吗?谢谢,杰拉德。

java - OSGi 4.2 中有哪些新功能?

OSGi4.2有justbeenreleased它使用一些新的RFC更新了4.1规范。那么,OSGi4.2有什么特别新的东西,哪些框架已经(或接近)支持4.2,为什么你应该针对4.2框架而不是4.1进行新开发? 最佳答案 在大多数情况下,OSGi的一个小版本(例如4.1->4.2)并没有真正改变现有的行为,所以可以肯定地说,如果你有一个依赖4.1的应用程序,它会运行4.2没问题。新的是一些项目已经标准化,这应该能够在不同的OSGi引擎(如Equinox、Felix和Knopflerfish)之间实现更好的互操作性。事实上,虽然OSG

java - 为什么不从父类(super class)继承 OSGi 声明性服务 (DS) 注释?

OSGiDeclarativeServices(DS)规范定义了注释,这些注释可以由Bnd等工具处理到运行时使用的组件描述xml中。R6规范中的112.8.1说:组件注解不是继承的,它们只能用在给定的类上,不考虑其父类(superclass)层次结构或接口(interface)上的注解。为什么指定不允许继承? 最佳答案 ApacheFelix项目提供的DS注解曾经支持DS的扩展性。基于此实现,我们尝试将其标准化为指定官方OSGiDS注释的工作的一部分。但是,问题是我们在跨包边界的两个实现类之间遇到了讨厌的耦合问题,我们无法使用Imp

java - 是否有 OSGi 的非 Java 替代品?

有没有基于C/C++的类似OSGi的框架?我有很多C/C++遗留代码,如果移植到Java,成本太高。 最佳答案 这是我知道的(并且仍然活跃的)类OSGiC/C++框架的列表:ApacheCelix[语言:C,许可证:ApacheLicense2.0]SOF[语言:C++,许可证:未知]CTK[语言:C++,许可:ApacheLicense2.0]nOSGi[语言:C++,许可证:GPLv3]PocoOSP[语言:C++,许可证:商业]CppMicroServices[语言:C++,许可:ApacheLicense2.0]这blogp

java - 运行嵌入在我的应用程序中的 Apache DS

我正在尝试在我的应用程序中运行嵌入式ApacheDS。看完http://directory.apache.org/apacheds/1.5/41-embedding-apacheds-into-an-application.html我构建这个:publicvoidstartDirectoryService()throwsException{service=newDefaultDirectoryService();service.getChangeLog().setEnabled(false);PartitionapachePartition=addPartition("apache",

java - 如何使用 eclipse 和 bndtools 将 jar 转换为 OSGi 包

我正在寻找使用eclipsebndtools插件将jar转换为OSGi包的分步指南。我知道可以使用命令行使用bnd来完成它,但很高兴知道如何通过IDE来完成同样的事情。我可能遗漏了一些东西,但thistutorial仅说明如何从头开始创建项目。 最佳答案 关注文章CreateEclipseplugins(OSGibundles)fromstandardjar为达到这个。虽然这种方法没有使用Bnd,但是你可以实现你想要的。简而言之,您可以执行以下操作:通过选择File->New->Project...->Plug-inDevelopm

java - OSGi WeavingHook 示例

有人有任何使用OSGi4.3+WeavingHook服务的示例吗?AspectJ、ASM、JavaAssist怎么样?有人真的在使用OSGiWeavingHooks吗?OSGiCore5.0.0第56.2节中的示例只是省略了实际编织并说“最终编织留给读者作为练习”。我的目标是:创建一个我可以放在字段(基元或对象)上的注释(@MyAnnotation)。创建一个org.osgi.framework.hooks.weaving.WeavingHook以使用该注释编织类使用加载时织入切入带有该注释的字段的任何修改触发字段已修改的EventAdmin事件。动态更新从WeavingHook连接到

java - 如何在 OSGi 环境中为 log4j2 JUL 适配器设置系统属性

我想在OSGi中使用log4j2JUL适配器环境。所以我直接使用log4j2OSGi包并在我的自定义OSGi包之一中设置以下系统属性,如前所述here:System.setProperty("java.util.logging.manager","org.apache.logging.log4j.jul.LogManager");似乎此系统属性未设置,因为来自Javautil框架的日志不会发送到附加程序。我使用的OSGi框架是EclipseEquinox.我在哪里可以设置此系统属性以使用OSGi?编辑:据我所知,问题出在JVM开始时所需的属性,即java.util.logging.ma