我如何在Scala中编写我的包,然后将其部署到OSGI容器中? 首先将它编译成“java”,还是我可以将scala直接部署到OSGI中,并使用某种捆绑来识别它? 任何指针都会很棒。 目前我使用的是Apache Felix作为我的osgi容器,但是对通用概念的简单解释足以让我开始。
我对Apache Karaf究竟是什么感到有点困惑。 你能否说Apache Karaf包含以下内容: Apache Felix(这是OSGi 4.2框架的实现) Apache白羊座(这是Blueprint标准的实现)
它就在那里,它应该是索引的包。 不过,当我打电话 JAXBContext jc = JAXBContext.newInstance("my.package.name"); 我得到一个JAXBException说 “my.package.name”不包含ObjectFactory.class或jaxb.index 虽然它确实包含两者。 什么工作,但不是我想要的,是 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 […]
我需要阅读提供我的课程的Manifest文件,但是当我使用: getClass().getClassLoader().getResources(…) 我从加载到Java运行时的第一个.jar获取MANIFEST 。 我的应用程序将从applet或webstart运行, 所以我不会访问我自己的.jar文件。 我实际上想从启动Felix OSGi的.jar读取Export-package属性,所以我可以将这些包暴露给Felix。 有任何想法吗?
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 […]