问题标签 [osgi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2120 浏览

eclipse - 由于路径长,eclipse插件不加载dll

我正在构建一个 Eclipse 插件(一个注释插件,但它最终是一个 Eclipse 插件)。我的插件依赖的插件之一需要加载本机 dll。

问题是,这取决于此类 dll 在磁盘中的位置而失败。如果它长于某个阈值,我会收到以下错误

java.lang.UnsatisfiedLinkError: nlsxbe (The filename or extension is too long.) at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:952) at java.lang.ClassLoader.loadLibraryWithClassLoader(ClassLoader.java:921) at java. lang.System.loadLibrary(System.java:452) at lotus.domino.NotesThread.load(Unknown Source) at lotus.domino.NotesThread.checkLoaded(Unknown Source) at lotus.domino.NotesThread.sinitThread(Unknown Source) at com .atempo.adam.lotus.plugin.views.TopicView.createPartControl(TopicView.java:609)

我已经添加了 Path env var 的路径,并且还注册了 dll 无济于事。我的环境是 ms vista profesional、java1.5、eclipse3.4(和 lotus 8)

有人有线索吗?

提前谢谢了。

0 投票
1 回答
6685 浏览

java - 如何配置 OSGi 环境以便可以从 EclipseStarter 类中使用它?

目前我正在尝试使用 EclipseStarter 类的功能来执行一些包。如果我直接从 Eclipse 运行我的程序,则会加载 OSGi 服务包,并且我可以安装和启动其他包。

但是,如果我将我的 java 程序导出到一个可执行的 jar 文件并从命令行运行它,那么环境会加载一个名为“System Bundle [0]”的包,而不是 OSGi 服务包。每次尝试安装新包都会导致 Nullpointer-Exception。

我是否必须在框架属性中设置一些特殊配置才能使用 jar 文件中的 OSGi 环境?目前我只设置以下两个值:

更新:

我认为我的问题可能与使用的 java 类路径有关。如果我像这样将 Framework-Bundle 添加到类路径中

一切正常:

但如果我只运行 jar 文件,我会收到以下错误日志:

目前,我在我的 Eclipse 项目中使用 framework-jar-file 作为外部库。我认为当我将项目导出到可执行文件时出现问题......

BR,

马库斯

0 投票
2 回答
1707 浏览

java - 哪种 SOA 架构最适合 Java 应用程序?

我目前正在开发一个相当大的 Java 6 应用程序,我们希望将我们的一些功能拆分成一个面向服务的架构。

似乎应用程序空间的主要 SOA 框架是 OSGi,我一直在研究 Felix 和 Knopplerfish,但我想确保这不是我唯一的选择。

即使我们没有构建 Web 应用程序,对我们的应用程序(如 SOAP)使用实际的 Web 服务协议是否有意义?这甚至可以接受吗?

你们中的任何人在您的桌面应用程序中使用过 OSGi(Felix 等)的实现吗?如果有,进展如何?你知道更好的吗?

我们都是 SOA 的新手,因此我们将不胜感激任何帮助。

0 投票
3 回答
7107 浏览

servlets - 如何从注册在 OSGi HttpService 中的 Servlet 获取 OSGi 服务引用?

在 OSGi 环境中运行的 HttpServlet(即在 OSGi HttpService中注册)会想要调用一些 OSGi 服务来完成它的任务似乎很自然。问题是如何在 servlet 中获取对这些 OSGi 服务的引用。

一种方法是将依赖项注入到注册到 OSGi HttpService 的 HttpServlet 实例中,如下所示:

我不确定这是否是一种有效的方法,因为在非 OSGi 环境中,servlet 生命周期由 Web 容器管理,因此不会为稍后创建的 servlet 实例注入服务引用。

当使用PAX Web作为 OSGi HttpService 的实现时,还有另一种方法可以解决这个问题。PAX Web 将 OSGi BundleContext 作为特殊属性“osgi-bundlecontext”导出到 ServletContext。然后可以使用 BundleContext 来获取必要的服务引用:

然而,这种方法相当丑陋,并将您与 OSGi HttpService 的具体实现联系在一起。你知道这个问题的任何其他(可能更好的)解决方案吗?

0 投票
1 回答
1932 浏览

java - OSGi felix:可以在宿主应用程序和捆绑包之间共享一个类吗?

在我的宿主应用程序中,我尝试实现一个简单的 pushService,通过提供 set 和 get 方法,该服务将用于将名为 Vehicle 的类的实例传输到 OSGi 世界。为了能够使用该服务,我将服务接口和 Vehicle 类都导出到了一个 jar 文件中,并将该文件导入到应该使用该服务的包中。

每次我尝试在我的宿主应用程序中使用 Vehicle 类时,它实例化了 felix 框架和包,我得到一个链接错误。阅读以下博客条目(http://frankkieviet.blogspot.com/2009/03/javalanglinkageerror-loader-constraint.html)后,我明白了为什么会发生此错误。但我不知道如何解决我的问题。

是否可以在宿主应用程序和 OSGi 实例之间共享一个类?也许我必须使用反射而不是导入 jar 文件?我查看了那个库(http://code.google.com/p/transloader/),我不确定这个库是否能够解决我的问题......

BR,

马库斯

0 投票
10 回答
55417 浏览

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

它就在那里,在它应该被索引的包中。不过,当我打电话时

我得到一个 JAXBException 说

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

虽然它确实包含两者。

什么有效,但不是我想要的,是

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

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

预计到达时间:

从 ContentFactory 的源代码来看,我在这里找到了,这可能是一段无法按预期工作的代码:

根据我以前的 经验,我猜测这与运行它的 OSGi 容器的类加载机制有关。不幸的是,我在这里仍然有点不够深入。

0 投票
2 回答
733 浏览

java - OSGi 和遗留库

我一直在研究 OSGi,我想知道处理“遗留”库的最佳方式(这些库作为普通 JAR 发布,而不是作为 OSGi 包发布)。

您认为处理这些问题的最佳方法是什么?修改他们的清单文件并添加最小的特定于捆绑包的信息,然后重新打包它们是我目前所做的,但这对我来说似乎有些错误。我是否应该只对这些 JAR 使用手动依赖管理(我对那些很有可能仅在我的应用程序的某个部分使用的库执行此操作)?

就它们可用而言,我正在为 Eclipse 使用捆绑包(因为我使用 Equinox 作为 OSGi 平台,这对于那些可作为捆绑包提供的库非常有效)。

除了我应该知道的 Eclipse 捆绑包之外,还有其他捆绑存储库吗?

0 投票
1 回答
968 浏览

eclipse - 在功能上执行 eclipse.buildscript 任务会丢失片段

我有一个名为 foo 的功能、名为 foo 的插件和一个片段 foo.win32.x86。

我应该能够在一个特性的 ant 文件中执行对 eclipse.buildscript 的调用,并让它为特性、插件和片段创建一个 build.xml;但是,我得到的只是功能和插件的 build.xml。

foo feature.xml:

foo 插件 MANIFEST.MF 文件:

foo plugin.xml 文件:

foo.win32.x86 MANIFEST.MF 文件:

谁能解释为什么我没有得到片段的 build.xml ?

如果我强制为片段调用 eclipse.buildscript 它工作正常,但这不会破坏目的吗?

谢谢

0 投票
8 回答
11942 浏览

java - Persistence.xml 和 OSGi (Equinox)

我目前正在使用 OSGi 进行测试。我正在通过 Eclipse 运行它。我想将我的 DAO 层作为 OSGi 解决方案的一部分,但我的第一个绊脚石是这个错误:

我尝试将persistence.xml 文件放在很多不同的地方,但无济于事。 关于我做错了什么的任何想法?

有没有办法手动加载persistence.xml?

激活器如下所示:

这是我的目录结构的样子:

替代文字 http://www.freeimagehosting.net/uploads/7b7b7d2d30.jpg

这是我的清单.MF

HibernateBundle包含所有的 Hibernate 和 Persistence Jars。

这是我的Persistence.xml

我在清单的类路径中尝试过的事情没有运气:

Bundle-ClassPath: ., META-INF/persistence.xml

捆绑类路径:., ../META-INF/persistence.xml

捆绑类路径:., /META-INF/persistence.xml

捆绑类路径:., ./META-INF/persistence.xml

捆绑类路径:., META-INF

捆绑类路径:., ../META-INF

捆绑类路径:., /META-INF

捆绑类路径:., ./META-INF

Bundle-ClassPath: ., C:\Workspaces\OSGiJPA\Dao\META-INF\persistence.xml

Bundle-ClassPath: ., C:\Workspaces\OSGiJPA\Dao\META-INF

0 投票
2 回答
2549 浏览

java - 如何让 Eclipse 了解 maven 存储库中的 OSGI 包(本地 &| 远程)

我有一个通过 Maven 构建的项目。每个模块都构建为一个 osgi 包。

在 Eclipse 中,模块也具有插件性质。一些模块需要外部依赖项(log4j、apache commons,...),它们也可以作为插件从 maven 存储库(例如 spring 企业存储库,它也是一个 OBR)中获得。

Maven 本身解决这些依赖关系没有问题,但是我如何说服 Eclipse 使用 maven 存储库将这些包作为插件检索和解析(我不想为每个包制作一个包装器插件)?

是否有可以在 Eclipse 中安装的“Maven Provisioner”?