Tag: osgi

org.osgi.framework.BundleException:找不到bundle:org.eclipse.equinox.console

命令: \eclipse-SDK-4.2RC3-win32-x86_64_001\eclipse\plugins>java -jar org.eclipse.osgi_3.8.0.v20120529-1548.jar -console exception(来自日志文件) !SESSION 2012-06-22 23:36:27.649 ———————————————– eclipse.buildId=unknown java.version=1.6.0_25 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US Command-line arguments: -console !ENTRY org.eclipse.osgi 4 0 2012-06-22 23:36:28.632 !MESSAGE Could not find bundle: org.eclipse.equinox.console !STACK 0 org.osgi.framework.BundleException: Could not find bundle: org.eclipse.equinox.console at org.eclipse.osgi.framework.internal.core.ConsoleManager.checkForConsoleBundle(ConsoleManager.java:211) at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:297) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176) at org.eclipse.core.runtime.adaptor.EclipseStarter.main(EclipseStarter.java:151) !ENTRY org.eclipse.osgi 4 […]

可以在沙盒中运行的Mini-OSGi(如AppEngine或WebStart)?

我非常喜欢OSGi实现的模块化bundle的概念。 我也喜欢“托管部署”服务,如Google AppEngine(用于Web应用程序)或Java WebStart(用于客户端软件)。 这两个想法似乎在概念上相互补充。 但是,OSGi标准包含一些function,使得像Felix或Equinox这样的实现无法在沙盒虚拟机(如AppEngine或Webstart)之上运行。 在这些环境中,无法直接访问文件系统,例如,这会阻止用于存储持久性捆绑状态和本机库的OSGi捆绑缓存。 现在,我没有兴趣使用本机库或具有持久的bundle状态。 是否有一些框架实现了OSGi的核心包和服务概念(理想情况是以兼容的方式使OSGi包可以按原样部署到它中),但是可以在没有包缓存的情况下工作(以及沙箱中没有的其他工具) ? 我正在寻找类似于在AppEngine或WebStart上运行的有限版本的Felix。 当然,如果WebStart引擎和Google AppEngine刚刚提供了开箱即用的OSGi框架服务,那也很棒…… 更新: AppEngine的另一个非常有限的方面是你无法启动新的线程。 这可以防止(除其他外)异步bundle生命周期管理。 显然不是WebStart的问题。

OSGI创建模块化Web应用程序

我一直在寻找一种创建模块化Web应用程序的解决方案,它是模块化的,用户可以以简单的jarforms提供自己的插件,然后将自己的数据提供给我的Web应用程序,我的webapp将负责用于显示它。 现在问题是我希望我的网络应用程序尽可能通用,而不依赖于j2ee Web容器来支持任何事情。 即我不能依赖我的Web容器来提供osgi支持并将Web应用程序部署为osgi bundle本身(这对于例如glassfish和WAS来说真的很简单)。 我打算使用equinox并且只有解决方案,我目前看到的是他们在官方网站上提供的servlet桥,但对我而言,将所有内容委托给servlet真的很痛苦,而servlet又会解释请求并找到合适的bundle类然后再以某种方式仅将数据传回Web应用程序。 对我而言,如果我的网络应用程序也是一个包,那将是很棒的。 有什么接近这个理想的解决方案,我可以尝试? 或osgi和web应用程序(容器)的两个相关之间的任何其他通信方法?

何时使用ServiceLoader而不是像OSGi这样的东西

作为对依赖性过敏的人,我何时会使用像OSGi而不是内置的java 6 http://java.sun.com/javase/6/docs/api/java/util/ServiceLoader.html (我想要的)让插件jar子掉进去)。 (仅供参考,这是一个scala应用程序,对任何建议开放,ServiceLoader非常接近我想要的)。

OSGi可以帮助降低复杂性吗?

我看到很多关于OSGi的演讲,我认为这对于实施更好的模块化听起来很有希望。 显然,“热部署”和“并行运行不同版本的x”也是市长的卖点。 我想知道OSGi承诺解决的问题是否是一个问题……? 它让我想起OO的早期时代,类似的声称是女仆: 当OO是新的时,最重要的论点是可重用性。 人们普遍声称,当使用面向对象时,人们只需要“一次写入”,然后就可以“随处使用”。 在实践中,我只看到这适用于一些非常低级的例子。 我认为这样做的原因是编写可重用的代码很难。 从技术上讲,但从界面设计的角度来看。 您必须预测未来客户将如何使用您的课程并预先做出正确的选择。 根据定义,这很困难,因此潜在的可重用性益处通常无法实现。 有了OSGi ,我怀疑在这里我们可能会再次承诺,我们没有真正拥有的问题的潜在解决方案。 或者如果我们拥有它们,我们没有足够大的数量和严重程度来certificate购买OSGi的帮助。 “Hotdeployment”作为模块子集的例子绝对是一个好主意,但它经常有效吗? 多久没有,因为事实certificate你对特定问题的模块化是错误的? 如何在多个模块之间共享模型实体? 这些模块都必须同时更换吗? 或者,您是否将对象展平为基元并仅使用模块间通信中的对象,以便能够保持接口契约? 应用OSGi时最困难的问题是,我认为, 使模块化“正确” 。 类似于在OO中使用OSGi获取类的接口,问题保持不变,这次是更大规模,包甚至服务级别。 您可能已经猜到了,我目前正在尝试评估OSGi以用于项目。 我们遇到的主要问题是随着代码库的增长而增加复杂性,并且我希望在具有越来越多定义的交互的较小模块中打破系统。 鉴于没有任何框架可以帮助决定模块化,OSGi是否为您付出了代价? 在团队合作时,它是否让您的生活更轻松? 它有助于减少错误数量吗? 你有没有成功地“热部署”主要组件? OSGi是否有助于降低复杂性? OSGi是否遵守承诺? 它符合你的期望吗? 谢谢!

OSGi – 这项技术有多成熟?

我有一个要求,我需要在不同的基于Spring的Struts 2应用程序之间共享一些Web资源( jsp , html , js , images , css等)。 并且似乎OSGi可以用来实现这一目标吗? 有人可以给出一些关于如何用OSGi实现这一目标的指示吗? 其次我想知道OSGi足够成熟,可以用于生产应用程序? 提前致谢! 编辑:我经历了这篇文章,似乎人们可以跨Web应用程序共享一个Web包。 唯一的区别是他们用Spring MVC做到了。 我想知道这是否可以通过Struts2应用程序实现? 编辑2:我基本上不清楚以下内容: ‘shareable-bundle’(包含要共享的Web资源)是否为.war打包。 如果是,那么将从哪里形成最终的Web上下文,因为该捆绑包将再次与主“web”应用程序共享? 我期待最终的Web上下文是由’shareable-bundle’和’main’Web应用程序的合并而形成的。 它会自动发生吗? 有任何想法吗?

如何部署OSGi应用程序和依赖项?

OSGi似乎通过不将大量JAR依赖项包装到lib目录中而具有小型可部署工件的优点。 但是,我找不到任何能告诉我将依赖项部署到容器的简单可靠方法。 例如,我有一个使用CXF和几个Spring子项目的应用程序。 如果我需要将此应用程序部署到新的Glassfish服务器,那么最好的方法是什么,确保安装所有依赖项? 我正在使用Maven, 似乎可能有某种方法可以使用一个钩子来查看META-INF / maven目录并从pom.xml中提取依赖项列表并获取所需的库(可能来自当地的回购)。 有没有办法做到这一点? Pax插件听起来像是在做这个,但它似乎是基于提升一个Felix容器? 这不是我想要的,我正在处理已经运行的远程容器。 是否有任何镜头这样的东西存在作为命令行工具而不是GUI?

在Java中实现动态插件

我想在Java应用程序中实现动态插件function。 理想的情况是: 应用程序将使用getCapabilities()等方法定义接口Plugin 。 插件将是一个JAR pluginX.jar其中包含一个实现Plugin pluginX.jar类(可能还有其他一些)。 用户将pluginX.jar放在特殊目录中或设置指向它的配置参数。 用户不一定必须在其类路径中包含pluginX.jar 。 该应用程序将找到PluginXImpl (可能通过JAR清单,可能通过reflection)并将其添加到注册表。 客户端可以获得PluginXImpl的实例,例如,通过调用getPluginWithCapabilities(“X”) 。 用户不一定必须知道插件的名称。 我有一种感觉,我应该能够用peaberry做到这一点,但我无法理解文档。 我花了一些时间学习Guice,所以我的首选答案不是“使用Spring Dynamic Modules” 。 任何人都可以给我一个简单的想法,如何使用Guice / peaberry,OSGi,或只是简单的Java?

在Eclipse 4(RCP / SWT / OSGi)应用程序中包含log4j的正确方法

这是一个后续(以某种方式我的第三方依赖于OSGi应用程序 ),其中建议一些库,例如log4j 已经作为bundle提供。 在Eclipse Indigo中,我找不到可用于Import Package的log4j Import Package作为我的安装的一部分,因此我Plugin Project from JAR archive创建了一个Plugin Project from JAR archive以捆绑log4j,还创建了一个Feature Project以便在此post之后捆绑log4j.xml配置。 说实话,我不明白为什么需要片段项目,但这个过程有效。 所以现在我的问题是: 由于log4j.xml是作为functionjar的一部分在导出中提供的,因此需要一些“努力”才能找到它并更新调试级别,所以我想知道这确实是正确的过程吗? 我记得最终导出的产品会在一个易于查找的位置提供log4j配置,但现在(虽然记录工作)我担心我做的是否确实是正确的。 有什么帮助吗?

在我的Raspberry中安装rxtx包

我想在我的Raspberry Pi上安装一个rxtx软件包,该软件包将在KURA平台上运行(Equinox是Kura的OSGi容器) 我使用以下命令安装了rxtx本机库:sudo apt-get install librxtx-java .so安装在目录中:/ usr / lib / jni / pi@raspberrypi /usr/lib/jni $ ls librxtxI2C-2.2pre1.so librxtxParallel.so librxtxRS485-2.2pre1.so librxtxSerial-2.2pre1.so librxtxI2C.so librxtxRaw-2.2pre1.so librxtxRS485.so librxtxSerial.so librxtxParallel-2.2pre1.so librxtxRaw.so 然后我按照这个链接将rxtx库包装在一个包中http://rxtx.qbang.org/wiki/index.php/Wrapping_RXTX_in_an_Eclipse_Plugin 我添加到捆绑清单中: Bundle-NativeCode: /usr/lib/jni/librxtxSerial.so;osname=”Linux”;processor=”armv6l” 因为我的os类型是linux,我的架构是ARM: pi@raspberrypi ~ $ cat /proc/sys/kernel/{ostype,osrelease,version} Linux 3.18.11+ #781 PREEMPT Tue Apr 21 18:02:18 BST 2015 pi@raspberrypi ~ $ arch armv6l 但是我仍然无法安装捆绑包,我收到了这个错误: !ENTRY 1 […]