草庐IT

osgi-container

全部标签

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

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

java - 具有快速 contains(Object o) 方法的 LinkedBlockingQueue?

简而言之,我正在编写一个需要BlockingQueue实现的应用程序,该实现既提供FIFO添加/删除,也提供快速的contains方法,因为我'我们会称它为TON。LinkedBlockingQueue让我了解了大部分内容,但它的contains方法似乎以线性时间运行,因为它基于AbstractQueue的contains方法。我在JavaAPI中没有看到任何东西似乎在宣传LBQ具有开箱即用的快速contains。让事情变得更艰难的是,我的项目时间紧迫(不,这不是家庭作业)。我可以使用下面的HashSet进行快速而复杂的LBQ扩展以实现快速contains,但我仍然需要测试它,这可能会

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 - Freemarker 'Collection.contains' 功能

从我的Java代码中,我返回了一个Set。View需要检查Set是否包含特定字符串。我找不到任何有关Freemarker如何处理此问题的文档。有什么想法吗? 最佳答案 您可以使用seq_contains。你需要FreeMarker2.3.1${x?seq_contains("blue")?string("yes","no")}如果序列包含“blue”,这将输出yes。根据评论,如果你想在if语句中使用它这是关于它的docoBuilt-insforsequences 关于java-Free

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