标签: osgi

在项目xxx - 构建路径问题的构建路径中检测到循环

我正在使用maven和eclipse将我的项目转换为OSGI包.Maven构建的东西很好,只是我现在在Eclipse中得到了上面的错误.我怎样才能找出导致这个问题的项目?有什么特别的观点吗?怎么会发生这种情况,我希望maven也能检测到循环依赖?

更新

好的,我在这里这里找到了一些东西

这可能是由felix maven-bundle-plugin引起的,它对每个导出也是一个导入吗?

java eclipse osgi maven-2 bundle

48
推荐指数
5
解决办法
13万
查看次数

开始使用OSGI的最佳方法是什么?

是什么让模块/服务/位应用程序功能成为OSGi模块特别好的候选者?

我有兴趣在我的应用程序中使用OSGi.我们是一家Java商店,我们使用Spring非常广泛,所以我倾向于使用Spring Dynamic Modules for OSGi(tm)服务平台.我正在寻找一种将OSGi作为试用版纳入应用程序的好方法.有没有人在这里使用过这种或类似的OSGi技术?有任何陷阱吗?

@Nicolas - 谢谢,我见过那个.这是一个很好的教程,但我正在寻找更多关于如何做我的第一个"真正的"OSGi包的想法,而不是Hello World示例.

@david - 感谢您的链接!理想情况下,使用绿地应用程序,我会将整个事物设计为动态的.不过,我现在正在寻找的是将其引入现有应用程序的一小部分.假设我可以选择应用程序的任何一部分,有哪些因素可以使这件作为OSGi豚鼠变得更好或更差?

java spring osgi

42
推荐指数
3
解决办法
1万
查看次数

OSGI - 处理捆绑包所需的第三方JAR

我刚开始使用OSGI开发,并且正在努力了解如何最好地处理依赖JAR.

即如果我正在创建一个捆绑包,那么我可能需要使用一些第三方JAR.当我创建我的捆绑JAR以部署到OSGI时,显然这些第三方JAR不包括在内,因此捆绑包将无法运行.

我知道一个选项是将这些JAR转换为捆绑包并将它们部署到OSGI容器中.但是,如果它们只需要被一个捆绑使用,那么这似乎并不理想.

这是什么最好的解决方案?JAR是否可以嵌入到捆绑JAR中,如果是这样,这是一种合理的方法吗?

java osgi jar

40
推荐指数
4
解决办法
5万
查看次数

OSGi组件和服务之间有什么区别

在OSGi下,组件与服务之间的主要区别是什么?据我了解,所有服务必须是组件,但并非所有组件都必须是服务.

使用样本用例有什么好处?

osgi

40
推荐指数
2
解决办法
3万
查看次数

OSGI容器中的Scala?

如何在Scala中编写我的包,然后将其部署到OSGI容器中?

我首先将它编译成"java"还是可以直接将scala部署到OSGI中并使用某种捆绑来识别它?

任何指针都会很棒.目前我使用Apache Felix作为我的osgi容器,但只是对通用概念的简单解释就足以让我开始.

osgi scala equinox apache-felix

37
推荐指数
4
解决办法
1万
查看次数

完整的Android支持OSGi包

本主题说明如何将OSGI框架转换为在android上运行.然后它给出了将android包转换为能够调用android API的OSGI包的技巧.

在目前阶段,这些Android OSGI捆绑包不能做的唯一事情就是操纵活动并使用资源和资产.我一直在努力解决这个限制.我希望有关于这个问题的好消息.

我发现在Eclipse中使用Create Plugin项目工具比将标准android包转换为OSGI包更困难,所以我不会谈论它.

您可以在此消息末尾的"日志"部分中跟踪我的成就.

我指的是Knopflerfish项目,因为它是我工作的基础.这些修改意味着要在Knopflerfish OSGi android项目上执行,但实际上适用于其他OSGI框架.不需要修改OSGi框架本身,我们只会更新项目KfServiceLib和Knopflerfish发行版KfBasicApptool目录.

为bundle添加基本的android支持

功能和限制

这是android框架的第一级定制.这些更改将与上下文或调用线程无关,但它们允许使用一组有限的Android API类android.util.Log.

由于这些变化,bundle可以在他们的原型和实现中使用android类.然而,他们将无法与图形用户界面,内容提供商和系统服务等相关,因为他们缺乏对它的强制性参考.

Knopflerfish应用程序的变化

实际上,tools/android/apk下的应用程序能够在android上执行OSGi框架,但前提是捆绑包只调用java类.作为Knopflerfish框架的一部分的捆绑包就是这种情况,但是想要调用android API的自定义捆绑包是什么?以下是在框架中进行的更改,以启用解析android类的bundle.

首先,android包必须是框架包的一部分,以便可以解析它们.这是OSGi属性的目的org.osgi.framework.system.packages.extra

在创建框架之前将属性设置为要导出的android包列表,然后进行设置.请注意,野生炭android.*似乎没有效果:我们必须逐一告诉每个包,如下所示.

要添加到KfServiceLib文件src/org/knopflerfish/android/service/KfApk.java中

static final String ANDROID_FRAMEWORK_PACKAGES = (
            "android,"
            + "android.app,"
            + "android.content,"
            + "android.database,"
            + "android.database.sqlite,"
            + "android.graphics,"
            + "android.graphics.drawable,"
            + "android.graphics.glutils,"
            + "android.hardware,"
            + "android.location,"
            + "android.media,"
            + "android.net,"
            + "android.net.wifi,"
            + "android.opengl,"
            + "android.os,"
            + "android.provider,"
            + "android.sax,"
            + "android.speech.recognition,"
            + …
Run Code Online (Sandbox Code Playgroud)

android osgi knopflerfish

37
推荐指数
1
解决办法
7838
查看次数

OSGi:Blueprint vs. Spring DM

我对Blueprint和Spring DM有点困惑:

从我的想法是真的:

  • Spring DM是Spring Source定义的框架
  • 蓝图是OSGi联盟定义的框架
  • Blueprint已经从Spring DM中"获取"了许多想法

没有?

我们可以期望这两个框架在未来成为一个(合并)吗?如果没有,哪一个将是最具前瞻性的?

osgi blueprint spring-dm

36
推荐指数
4
解决办法
2万
查看次数

OSGI环境中的依赖注入

首先是一些背景:

我正在开发一些基于Apache Sling的 webapp原型代码,它基于OSGI并在Apache Felix上运行.尽管我认为我现在已经掌握了大部分概念,但我对OSGI仍然相对较新.然而,令我困惑的是,我无法找到"完整"依赖注入(DI)框架.我使用声明服务(DS)成功地使用了基本的DI.但我的理解是DS用于引用 - 我该怎么说呢? - OSGI将注册的服务和组件放在一起.为此,它工作正常,但我个人使用像Guice这样的DI框架将整个对象图连接在一起,并将对象放在正确的范围内(想想@RequestScoped或者@SessionScoped例如).但是,我所看到的OSGI特定框架似乎都没有支持这个概念.

我开始阅读有关OSGI蓝图iPOJO的内容,但这些框架似乎更关注将OSGI服务连接在一起,而不是提供完整的DI解决方案.我不得不承认我还没有做任何样品,所以我的印象可能不正确.

作为Guice的扩展,我已经尝试了Peaberry,但是我发现文档很难找到,而且当我得到基本的DI工作时,很多guice-servlet的高级功能(自动注入过滤器,servlet等)没有'干活了.

所以,我的问题如下:

  1. 声明式服务如何与Guice或Spring等"传统"DI相比较?他们是解决同样的问题还是针对不同的问题?
  2. 到目前为止,我见过的所有OSGI特定解决方案都缺乏DI的范围概念.例如,Guice + guice-servlet具有请求范围依赖性,这使得编写Web应用程序非常简洁.我是否只是错过了文档中的内容,或者这些框架中没有涵盖这些问题?
  3. JSR 330和OSGi基于DI两个不同的世界?例如,iPOJO带来了自己的注释,Felix SCR Annotations似乎是一个完全不同的世界.
  4. 有没有人有建立基于OSGI的系统和DI的经验?甚至可能在github上有一些示例代码?
  5. 有没有人像Guice和iPOJO一样使用不同的技术,还是只是一个疯狂的想法?

抱歉这个相当长的问题.

任何反馈都非常感谢.


更新

范围注入:范围注入是一种有用的机制,可以自动注入特定生命周期中的对象.例如,您的一些代码依赖于作为servlet过滤器的一部分创建的Hibernate会话对象.通过标记依赖关系,容器将自动重建对象图.也许只有不同的方法呢?

JSR 330 vs DS:从你所有出色的答案中我看到这些是两个不同的东西.这提出了一个问题,如何处理在OSGI上下文中使用时使用JSR 330注释的第三方库和框架?什么是好方法?在Bundle中运行JSR 330容器?

我感谢您的所有答案,您一直非常乐于助人!

java osgi dependency-injection guice apache-felix

36
推荐指数
2
解决办法
2万
查看次数

获取OSGi包上下文的最佳技术?

我的OSGi项目中的每个包都有它自己的BundleActivator,我认为这是正常的.这会传递当前的BundleContext,这对于获取服务引用和诸如此类的东西很有用.

但是,从我的bundle中的类,我如何获得BundleContext?将它分配给BundleActivator中的公共静态字段很糟糕,并将其作为参数传递也很糟糕.有更智能的方式吗?

java osgi

35
推荐指数
3
解决办法
3万
查看次数

Java 8&Missing required capability需求能力:osgi.ee; 过滤器= "(&(osgi.ee = JavaSE的)(版本= 1.8))"

我使用Eclipse Luna win32.x86_64运行Java 8.

这里来自Help Menu > About > Installation Detail > Configuration Tab:

java.runtime.version=1.8.0_05-b13
java.version=1.8.0_05
Run Code Online (Sandbox Code Playgroud)

我创建了新的插件项目,请求JavaSE-1.8作为执行环境:

插件编辑器. JavaSE-1.8作为执行环境

myplugin/META-INF/MANIFEST.MF我的文件当然:

 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Run Code Online (Sandbox Code Playgroud)

我在产品文件中使用此插件.当我尝试验证它时,我收到以下错误:

验证对话框,从产品文件编辑器打开

当然,如果我开始使用该产品,我会得到:

!ENTRY org.eclipse.osgi 2 0 2014-07-10 08:14:22.042
!MESSAGE One or more bundles are not resolved because the following root constraints are not resolved:
!SUBENTRY 1 org.eclipse.osgi 2 0 2014-07-10 08:14:22.043
!MESSAGE Bundle update@********/myplugin/ was not resolved.
!SUBENTRY 2 myplugin 2 0 2014-07-10 08:14:22.044
!MESSAGE Missing required capability Require-Capability: osgi.ee; filter="(&(osgi.ee=JavaSE)(version=1.8))".
Run Code Online (Sandbox Code Playgroud)

我试过验证了很多:

首选项> Java>已安装的JRE …

eclipse osgi eclipse-plugin equinox java-8

34
推荐指数
2
解决办法
4万
查看次数