草庐IT

osgi-container

全部标签

java - 单元测试 OSGi 组件

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

java - 对 java.util.Collection.contains 的可疑调用

我从我的NetBeansIDE收到以下警告。Suspiciouscalltojava.util.Collection.containsExpectedtypeT,actualtypeObject请问这是什么意思?这对我来说没有意义。List和Collection类的contains方法都使用Object作为它们的方法参数。importjava.util.ArrayList;importjava.util.Collection;importjava.util.Iterator;importjava.util.List;/****@authoryan-cheng.cheok*/public

java - OSGI 包和组件之间有什么区别?

开始使用osgi,我想知道包和组件之间的概念差异是什么。以及何时使用其中的哪一个。欢迎任何指点。编辑:组件和包提供不同的接口(interface),因此它们可能不可互换ComponentContextBundleContext 最佳答案 Acomponent是:系统的积极参与者了解并适应环境环境=其他组件提供的服务环境=资源、设备……可以向其他组件提供服务并使用来自其他组件的服务有生命周期简而言之:组件提供服务捆绑管理生命周期一个bundle只能有一个激活器(需要BundleContext),并且可以有任意数量的激活组件。这意味着您

java - OSGi 片段何时附加到主机?

我有一个带有持久性服务(使用hibernate)的OSGi包和一个包含配置(xml文件)的片段。在bundle的激活器中,我使用以下方法加载配置:@Overridepublicvoidstart(BundleContextctx){URLurl=ctx.getBundle().getResource("hibernate.cfg.xml");SessionFactorysessionFactory=newAnnotationConfiguration().configure(url).buildSessionFactory();}但有时,URL为空。当我试图列出所有可用的URL时(使用

java - osgi 应用程序中的非 osgi 库使用

是否可以将非osgi库与OSGi应用程序一起使用?例如,我正在开发一个基于语义的搜索引擎,我正在为其使用第三方自然语言处理库(http://wiki.opencog.org/w/RelEx_Dependency_Relationship_Extractor)。是否可以将这样一个不支持OSGi的库作为几个jar文件与我的OSGi应用程序连接? 最佳答案 正如之前的答案中所写,如果您想在bundle中使用其他库,您有两种选择:将库jar嵌入到将要使用的包中,从库中创建有效的OSGi包。第一种方法更简单,因为您只需要将库jar(及其所有依

java - 使用 osgi 开发应用程序

我正在用Java开发基于语义的搜索应用程序。为了使应用程序模块化,我想到了使用osgi架构。但是由于我是osgi的新手,所以我不知道使用它的优缺点。任何人都可以解释使用osgi的优点/缺点以及使用osgi将使哪种应用程序受益/应用程序将通过这样做获得什么?谢谢!! 最佳答案 简而言之,OSGi是用于构建模块化应用程序的标准。它增加了新的模块化级别-bundle(又名组件,模块)。每个包都包含类和接口(interface),并且必须明确说明最重要的内容:它使用了哪些其他组件或Java包,以及它希望公开哪些包以供其他组件使用。从技术角度

java - 可以在沙箱中运行的 Mini-OSGi(如 AppEngine 或 WebStart)?

我非常喜欢OSGi实现的模块化bundle的概念。我也喜欢“托管部署”服务,例如GoogleAppEngine(用于Web应用程序)或JavaWebStart(用于客户端软件)。这两个想法在概念上似乎可以很好地互补。但是,OSGi标准包含一些功能,使得Felix或Equinox等实现无法在AppEngine或Webstart等沙盒虚拟机之上运行。在这些环境中,无法直接访问文件系统,例如,这排除了用于存储持久包状态和native库的OSGi包缓存。现在,我对使用native库或拥有持久包状态没有太大兴趣。是否有一些框架实现了OSGi的核心包和服务概念(理想情况下以兼容的方式,以便OSGi

java - OSGi 部署管理服务的状态

OSGi应用程序由称为束的模块组成。问题在于,任何大小合理的应用程序都会有大量的包(很容易达到数百个,只需查看EclipseIDE的插件目录),因此在管理或部署应用程序时,您需要比单个包更粗的粒度。OSGi服务纲要规范包含一个部署管理服务,它将部署包定义为bundle和其他工件(例如配置)的集合,它们可以作为一个单元进行部署、升级、卸载等。不幸的是,我找不到太多关于DeploymentAdmin实现、工具或用户的信息。此服务的状态如何?是否有人对部署管理有任何经验、意见或建议?此外,我认为Springdm-server具有应用程序范围的bundle(PAR文件)集合的概念,而Eclip

java - 组织.apache.catalina.LifecycleException : Failed to start component [StandardServer[8005]]A child container failed during start

在过去的6-7小时里,我一直在努力找出我的ApacheTomcat服务器出了什么问题。在我所有的项目中,jdk版本从1.8切换到1.6。为了解决版本冲突,我通过here的帮助验证了Tomcat版本的编译版本和JVM是否相同。.对于具有相同路径错误的多个上下文,我知道我需要删除server.xml中的重复上下文标记。因此,首先我检查了Servers项目(当您在Eclipse中添加ApacheTomcatServer时它会自行创建)并在那里找不到任何东西。因此,我深入研究了目录(EclipseWorkSpace)metadata\.plugins\org.eclipse.wst.serve

java - OSGi 应用程序如何在 Java 9 上运行?

我试图了解OSGi应用程序如何在Java9中工作,假设OSGi包不是JPMS模块(据我所知,仍然没有解决方案,OSGi包可以同时作为JPMS模块用于生产)。我有几个问题:我对所有OSGi应用程序都是一个未命名模块的理解是否正确?如果#1是,那么Bundle.update()是如何工作的?包是否重新加载到未命名的模块?如果我理解错了,请解释主要原则。 最佳答案 JavaSE9保证所有遵循标准JavaSE库的应用程序和库的持续兼容性。OSGi仅使用已发布的JavaSEAPI,因此将继续在Java9上保持不变。它目前不与JPMS模块交互,