我已经嵌入了Felix。我有一些API捆绑包和Impl。API导出接口C
。Impl导入该接口并在激活器中注册impl。现在我要获取C隐含的OSGi
FrameworkFactory ff = new FrameworkFactory();
...
BundleContext bc = fwk.getBundleContext();
...
final ServiceReference[] serviceReferences = bc.getServiceReferences(C.class.getName(), "(objectclass=" + C.class.getName() + ")");
for(ServiceReference serviceReference : serviceReferences){
final Object service = bc.getService(serviceReference);
...
}
现在,我想与它进行交互。我可以反思
System.out.println(service.getClass().getMethod("some").invoke(service)); //using
但是我不能投
System.out.println(service instanceof C); //prints false
我猜这来自不同的ClassLoader。但是我该如何解决呢?我们如何从外部与OSGi上下文进行交互?或者我们可以将其全部放入OSGi容器中?
如果要嵌入OSGi,则该服务的API(即接口“
C”)必须对外部应用程序可见,并通过系统捆绑包导出将其导出到OSGi。外部应用程序无法从OSGi框架内包含的包中导入软件包。
我有一个简单的java项目,叫做服务器。此外,我有一个osgi api项目,它定义了一个接口BlockProvider。接下来,我有一个osgi声明性服务项目,其中有一个实现BlockProvider的服务。 在我的java项目服务器中,我有一个嵌入式osgi框架(在我的例子中是felix)。 我创建了一个bundleactivator,它安装gogo osgi捆绑包、scr捆绑包、我的api项目
我们正在使用ApacheFelix(版本4.4.1)作为嵌入式OSGi框架。提供该框架的主要应用程序使用作为日志框架。存在对log4japi和log4jcore的依赖。当然,当主应用程序启动时,也会加载和配置Log4j2。主部件中触发的所有日志消息都正确写入已配置的Appender。 现在是重点。加载的所有bundle都应该能够使用与主应用程序相同的配置和日志上下文。我试图做的是提供所有Log4j
我刚刚开始使用动物园管理员在卡拉夫的DOSGi。我在Karaf的一个实例中提供服务,在另一个实例中提供消费者。服务端运行良好。一旦发布,我可以在安装了Zookeeper服务器的Karaf控制台中使用log:display命令查看它,并且我也可以通过浏览器访问wsdl。问题出在消费端。当服务启动时,它应该写一条消息(下面的ref代码),但是它从来没有发生。消费者代码: 和component.xml:
我试图在EclipseIDE中运行Equinox的区域有向图束。当我在OSGi命令提示符下使用start命令运行相关的bundle时,我收到一个错误,表示无法解析该bundle。原因:缺少约束:导入包:org.osgi.framework.hooks。捆version=“1.0.0”。为了找出框架中的现有版本,我尝试了命令p org.osgi.framework.hooks.bundle。结果显示
我正在学习《行动中的Spring》第四版第5章,但是我被第一个例子困住了。 以下是我的Eclipse Luna项目结构: 如果我将此项目作为Spring Boot应用程序运行,则会引发异常: 我怎样才能解决这个问题? 所有文件的内容: 随地吐痰。爪哇: SpittrWebAppInitializer.java: 网络配置。爪哇: RootConfig。爪哇: HomeController.java
我试图在Xamarin iOS上使用来自BLE chip bender(北欧)的原生iOS框架。此框架(iOS Native-Swift):https://github.com/nordicsemiconductor/iOS-dfu-library/tree/master/documentation > 我用那些iOS库做了一个胖框架。我看了这位医生。https://developer.xamar