Tag: osgi

在Apache Felix中运行时,为什么JAXB无法find我的jaxb.in​​dex?

它就在那里,它应该是索引的包。 不过,当我打电话 JAXBContext jc = JAXBContext.newInstance("my.package.name"); 我得到一个JAXBException说 “my.package.name”不包含ObjectFactory.class或jaxb.in​​dex 虽然它确实包含两者。 什么工作,但不是我想要的,是 JAXBContext jc = JAXBContext.newInstance(my.package.name.SomeClass.class); 来自其他人的这个问题出现在相当多的邮件列表和论坛上,但似乎没有得到答案。 我在OpenJDK 6上运行这个,所以我得到了源码包,并将我的debugging器join到库中。 它首先查找jaxb.properties,然后查找系统属性并找不到,它尝试使用com.sun.internal.xml.bind.v2.ContextFactory创build默认上下文。 在那里,exception被抛出(在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 […]

Java插件框架select

我们正在尝试确定如何为我们正在实现的服务实现一个简单的插件框架,以允许不同types的计算器被“插入”。 阅读了许多关于Java插件框架的文章后,似乎最常见的select是: OSGI “ 滚动你自己的 ”插件框架 Java插件框架 (JPF) Java简单插件框架 (JSPF) OSGI似乎比我们需要的更多。 “滚动你自己”是可以的,但是重用一个公共库会很好。 所以我们下载到JPF和JSPF。 JPF似乎没有在积极的发展了。 JSPF看起来非常简单,实际上我们需要的只是。 但是我没有听说太多。 我只在StackOverflow上看过一篇文章 。 其他人有没有使用JSPF的经验? 或者有关这个deviseselect的其他意见? 更新 :这不一定是一个正确的答案..但是我们要去与Pavol的想法,因为我们只需要一个真正的,非常简单的解决scheme。 感谢EoH的好指导。

OSGi,Java模块化和拼图

所以从昨天早上起,我甚至都不知道OSGi是什么。 OSGi只是一个口号,我不断地看到一遍又一遍,所以我终于留出了一些时间来刷它。 它实际上看起来好像很酷,所以我想先说(logging)我不是在任何方面都反OSGi,这也不是什么“OSGi-bashing”的问题。 在这一天结束的时候,OSGi似乎已经在本质上解决了Java模块化的JSR 277问题,该模块认识到JAR文件规范存在缺陷,可能导致在特定情况下的名称空间parsing和类加载问题。 OSGi也做了很多其他很酷的东西,但从我所能确定的,这是它最大的吸引力(或其中之一)。 对我来说 – 作为一个相当新的Java EE开发者(现在几年),我们在2011年,目前生活在Java 7时代,而且这些类加载问题仍然存在是非常令人难以置信的。 尤其是在一个应用程序服务器上可能有数百个JAR的企业环境中,其中许多依赖于不同版本的相互之间以及所有正在运行(或多或less)的JAR。 我的问题: 就像我在OSGi中一样感兴趣,尽pipe我想要开始了解它,看看它是否可以用于我的项目,但我没有时间坐下来学习一些大型的,至less现在。 那么当这些问题出现时,非OSGi开发者应该做些什么呢? 目前存在哪些Java (Oracle / Sun / JCP)解决scheme? 为什么从J7剪切拼图? Jigsaw明年将在J8上实现的社区有多less? 即使它不是Java平台的一部分,是否有可能为您的项目获得Jigsaw? 我想我在这里问的是一个恐慌,阴谋和facepalm的组合。 现在我终于明白OSGi是什么了,我只是不知道Jigsaw已经花费了20多年的时间才能实现,而如何才能从发行版本中解放出来。 这似乎是基本的。 作为开发人员,我也很好奇我的解决scheme是什么,OSGi。 另外, 注意 :我知道这不是一个“ 纯编程 ”types的问题,但是在你们中的一些人的鼻子弯曲变形之前,我想(再次logging下来)我故意把这个问题所以。 那是因为我没有任何东西,只是对我的同胞们极为尊重,而且我正在寻找一些我每天都在这里潜伏的“IT之神”的build筑层面的答案。 但是,对于那些绝对坚持用一些代码段来支持SO问题的人: int x = 9; (感谢任何能够衡量这个OSGi / Jigsaw / classloader / namespace / JAR的东西!)

读我自己的jar子的舱单

我需要阅读提供我的课程的Manifest文件,但是当我使用: getClass().getClassLoader().getResources(…) 我从加载到Java运行时的第一个.jar获取MANIFEST 。 我的应用程序将从applet或webstart运行, 所以我不会访问我自己的.jar文件。 我实际上想从启动Felix OSGi的.jar读取Export-package属性,所以我可以将这些包暴露给Felix。 有任何想法吗?

OSGi:Apache Felix和Apache Karaf有什么不同?

Apache Karaf是Apache Felix的子项目。 它被定义为“一个轻量级的OSGi容器”。 我不明白什么时候应该使用重量级,何时使用轻量级。 他们的网站没有太多解释。

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

我有四个包,每个只包含一个清单。 捆绑是 导入com.example.foo.fragment和com.example.bar app 其中导出com.example.foo;uses:=com.example.foo.cfg foo com.example.foo;uses:=com.example.foo.cfg foo.fragment这是一个附加到foo的片段,导出com.example.foo.fragment和com.example.foo.fragment.cfg;uses:=com.example.foo.fragment 它导出com.example.bar并导入com.example.foo 捆绑级依赖关系图 : app -> bar | | | v | foo | | vv foo.fragment 当我在JBoss AS 7.2中同时安装这些软件包时,它们工作得很好。 但是,如果我在第一次安装app包之后 ,或者在成功启动然后卸载它之后安装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 […]

以编程方式启动OSGi(Equinox)?

我想能够轻松地启动一个OSGi框架(最好是Equinox),并加载从我的POM中列出的任何包从一个Java主。 这可能吗? 如果是这样,怎么样? 看来像pax工具会这样做,但我似乎无法find任何文件指出这样的。 我知道我可以像这样开始Equinox: BundleContext context = EclipseStarter.startup( ( new String[] { "-console" } ), null ); 但我想做更多 – 就像我说的:加载更多的包,也许开始一些服务等。

OSGi是怎么解决的?

我已经阅读了维基百科和其他关于OSGi的网站,但是我并没有真正看到大局。 它说这是一个基于组件的平台,您可以在运行时重新加载模块。 Eclipse插件框架也是“实例”。 我的问题是: OSGi的清晰和简单的定义是什么? 它解决了什么共同的问题? “常见问题”指的是我们每天面对的问题,比如“OSGi为了使我们的工作更高效,更有趣,更简单而做些什么?