草庐IT

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 - 如何使用 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

java - Maven 第谷 : Not a valid OSGi version

在我的项目中,我尝试使用Maven/Tycho导出EclipseRCP应用程序。在“SNAPSHOT”发布配置中,所有插件(以及产品本身)都使用以下版本模式:OSGI:x.y.z.qualifierMVN:x.y.z-SNAPSHOT交付将使用以下模式OSGI:x.y.z.vyyyyMMddHHmmMVN:x.y.z-vyyyyMMddHHmm如您所见,“-”和“.”之间只有区别对于RCP插件,我必须通过使用以下Maven插件来禁用tycho执行的版本验证检查org.eclipse.tychotycho-packaging-plugin0.22.0false到目前为止,一切都很好。当涉

java - 如何获取 Eclipse RCP 应用程序的 OSGi BundleContext?

我刚刚开始使用EclipseRCP应用程序,它基本上只是提供的“helloworld”示例之一。当应用程序启动时,我想查看我的命令行参数并根据它们启动一些服务。我可以在IApplication.start中获取命令行参数:publicObjectstart(IApplicationContextcontext){String[]argv=(String[])context.getArguments().get(IApplicationContext.APPLICATION_ARGS)));}但是我如何获得BundleContext,以便我可以注册服务?它似乎不在IApplication

java - 在 osgi 中使用 jersey-client 时出错 - 未提供生成器

当我尝试从Jersey客户端创建WebTarget时出现以下异常。我的代码Clientclient=ClientBuilder.newClient();WebTargetbaseTarget=client.target("http://127.0.0.1:9000");异常堆栈跟踪java.lang.IllegalStateException:Nogeneratorwasprovidedandthereisnodefaultgeneratorregisteredatorg.glassfish.hk2.internal.ServiceLocatorFactoryImpl.internal

java - 单元测试 OSGi 组件

我目前正在考虑“如何设计OSGi组件,以便使用jUnit和Mockito等框架轻松为其编写测试”。由于OSGi加强了DIP(依赖倒置原则)并且注入(inject)器方法(例如setter)通常存在,因此模拟bundle间依赖性非常容易。但是bundle内部依赖性呢?例如看thiscase.现在我想把它带入OSGi上下文中...我们想在OSGi平台中提供任何类型的网络协议(protocol)作为声明性服务,并想编写单元测试来测试直接与套接字对象。如果我们将套接字创建重构为一个单独但仍然捆绑的内部POJO(普通旧Java对象)类,我们应该如何将它注入(inject)协议(protocol)