我开发了一个 Eclipse RCP 应用程序,该应用程序大量使用 OSGi 捆绑包,这些捆绑包提供服务以供以后使用。该用例要求捆绑包注册其服务(例如导入过滤器)以便稍后在不同情况下使用。 OSGi 捆绑包是使用 maven-bundle-plugin 构建的。
我如何告诉 Equinox 自动启动 OSGi 包?通过 Activator 的正常方法不起作用。只有惰性模式有效,但我无法触及未知包中的类。我阅读了 OSGi 规范,但没有提供与延迟加载相反的急切加载。是否还有机会将捆绑包标记为自动加载?
在 Eclipse 中,我有机会将自动启动设置为 true,但是在 Maven 和 Tycho 构建的发行版中我该怎么办?
由于未加载 org.eclipse.equinox.ds 的问题,声明性服务无法工作。我可以以某种方式启动它而不是激活器吗?这也是一个解决方案,但我不知道如何构建发行版或设置什么配置。
这里的最佳实践是什么?还有其他的可能性吗? Eclipse 平台上的 OSGi 包的文档有点薄。
叹。您是 Eclipse 中防止(愚蠢的)程序员延长启动时间的误导策略的受害者。他们没有发出警告,而是决定根本不开始捆绑销售。这与 OSGi 建议的相反:-( 只有当有人从中加载类时,捆绑包才能被激活(它们基本上无效启动)(这就是延迟激活。)
迄今为止最好的解决方案是使用声明式服务。您可以声明立即服务,该服务将在启动时激活,也可以声明惰性服务,该服务在使用时激活。懒惰的人当然是首选(当你不是一个愚蠢的程序员时),但某些用例需要立即执行,例如通过互联网提供服务的服务器。您必须确保在 config.ini 中 DS 已启动。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)