标签: apache-felix

当两个链在同一个包中结束时,为什么违反了使用约束?

我有四个捆绑包,每个捆绑包只包含一个清单.捆绑是

  • app哪个进口com.example.foo.fragmentcom.example.bar
  • foo 哪个出口 com.example.foo;uses:=com.example.foo.cfg
  • foo.fragment其连接到片段foo的是出口com.example.foo.fragmentcom.example.foo.fragment.cfg;uses:=com.example.foo.fragment
  • bar哪些出口com.example.bar和进口com.example.foo

捆绑级依赖图:

app -> bar
|       |
|       v
|      foo
|       |
v       v
foo.fragment
Run Code Online (Sandbox Code Playgroud)

当我在JBoss AS 7.2中同时安装这些软件包时,它们工作得很好.但是,如果我在其他人之后安装app捆绑包,无论是第一次还是成功启动后再卸载它,都会发生以下使用约束违规:

Caused by: org.osgi.service.resolver.ResolutionException: Uses constraint violation. Unable to resolve resource com.example.app [HostBundleRevision[com.example.app:0.0.
0]] because it is exposed to package 'com.example.foo.fragment' from resources com.example.foo [HostBundleRevision[com.example.foo:0.0.0]] and com.example.foo [HostBund
leRevision[com.example.foo:0.0.0]] via two dependency chains.

Chain 1:
  com.example.app [HostBundleRevision[com.example.app:0.0.0]] …
Run Code Online (Sandbox Code Playgroud)

osgi apache-felix jboss7.x

151
推荐指数
1
解决办法
7333
查看次数

OSGi:Apache Felix和Apache Karaf有什么区别?

Apache KarafApache Felix的子项目.它被定义为"轻量级OSGi容器".

我不明白我何时应该使用重量级以及何时使用轻量级.他们的网站没有解释太多.

osgi apache-felix apache-karaf

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

读我自己的Jar's Manifest

我需要读取Manifest传递我的课程的文件,但是当我使用时:

getClass().getClassLoader().getResources(...)
Run Code Online (Sandbox Code Playgroud)

MANIFEST从第一次.jar加载到Java Runtime.
我的应用程序将从小程序或webstart运行,
因此.jar我猜我无法访问自己的文件.

我实际上想要读取启动Felix OSGi 的Export-package属性.jar,所以我可以将这些包暴露给Felix.有任何想法吗?

java osgi manifest.mf apache-felix

124
推荐指数
9
解决办法
11万
查看次数

什么是Apache Karaf?

我对Apache Karaf究竟是什么感到有些困惑.

你能否说Apache Karaf包含以下内容:

  • Apache Felix(这是OSGi 4.2框架的一个实现)
  • Apache Aries(蓝图标准的实现)

osgi apache-felix apache-karaf aries

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

为什么JAXB在Apache Felix中运行时找不到我的jaxb.in​​dex?

它就在那里,在它应该索引的包中.我还是打电话的时候

JAXBContext jc = JAXBContext.newInstance("my.package.name");
Run Code Online (Sandbox Code Playgroud)

我得到一个JAXBException说

"my.package.name"不包含ObjectFactory.class或jaxb.in​​dex

虽然它确实包含两者.

什么工作,但不是我想要的,是

JAXBContext jc = JAXBContext.newInstance(my.package.name.SomeClass.class);
Run Code Online (Sandbox Code Playgroud)

来自其他人的这个问题出现在一些邮件列表和论坛上,但似乎没有得到答案.

我在OpenJDK 6上运行它,所以我获得了源包并将调试器放入库中.它首先查找jaxb.properties,然后查找系统属性并且无法找到,它尝试使用com.sun.internal.xml.bind.v2.ContextFactory创建默认上下文.在那里,异常被抛出(内部ContextFactor.createContext(String ClassLoader, Map)),但我看不到发生了什么,因为源不在这里.

ETA:

从ContentFactory的源代码判断,我在这里发现,这可能是那些无法按预期工作的代码:

/**
 * Look for jaxb.index file in the specified package and load it's contents
 *
 * @param pkg package name to search in
 * @param classLoader ClassLoader to search in
 * @return a List of Class objects to load, null if there weren't any
 * @throws IOException if there is an error reading the index …
Run Code Online (Sandbox Code Playgroud)

java osgi jaxb apache-felix

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

OSGI容器中的Scala?

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

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

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

osgi scala equinox apache-felix

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

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网络生态系统

我是整个Java和OSGi世界的新手,我无法理解OSGi Web应用程序的生态系统.

更确切地说,我目前正试图了解生态系统的所有部分是如何相互关联的:

  • OSGi框架(例如Apache Felix,Equinox,Knoplerfish)
  • OSGi运行时(例如Spring DM Server,Pax Runner,Apache Karaf)
  • Web Extender(例如Pax Web Extender,Spring Web Extender)
  • Web容器(例如Apache Tomcat,Jetty)

为了让您直观地了解我对他们的关系的实际理解,请查看此图片:

alt text http://img253.imageshack.us/img253/1631/osgiwebenvironmentschem.png

据我所知,OSGi框架是OSGi规范的一个实现.运行时是一种分发,它在OSGi规范之上添加了额外的功能,例如日志记录.由于OSGi和Web容器(如Tomcat)的类路径机制似乎存在一些差异,因此您需要某种翻译器.这部分由"Web Extender"处理.

请你澄清一下这件事吗?我理解一切正确吗?

tomcat osgi equinox apache-felix

28
推荐指数
1
解决办法
8240
查看次数

构建Apache Sling,Felix,Jackrabbit项目的目的是什么?

我在这里问一个非常基本的问题.

问题是

我正在我的项目中使用Apache Sling,Apache Jackrabbit,Apache Felix.我试图理解为什么这些软件是由Apache开发的.我在互联网上尝试了很多,但我没有找到任何博客或wordpress博客,或任何有用的youtube视频解释所有这些项目.你能解释一下这些项目吗?

Why these projects developed?

What they do ?

and more questions like this
Run Code Online (Sandbox Code Playgroud)

以前我发现Apache Hadoop也有同样的疑问,但我在网上找到的所有资料都足以让我了解这个项目.这次我和Sling,Felix,Jackrabbit一起挣扎.

我将非常感谢你.等待你的回应.

apache open-source jackrabbit apache-felix sling

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

OSGi内存管理

我有关于OSGi内存管理的理论问题.

假设我们有一些OSGi容器(例如Felix),让我们假设我创建了一些内存泄漏的包.

以下是我的一些问题:

  1. 有没有办法限制这个"失败"捆绑的内存消耗?例如,如果它超出内存限制 - OSGi容器会给我发送电子邮件,卸载它或其他东西?
  2. 捆绑"A"中的内存消耗如何影响捆绑"B".例如,如果"A"导致内存不足错误,它会炸毁整个OSGi容器吗?

java osgi apache-felix

17
推荐指数
1
解决办法
2575
查看次数