gpt4 book ai didi

eclipse - 如何在Eclipse平台上自动启动/热启动OSGi服务

转载 作者:行者123 更新时间:2023-12-02 06:53:47 24 4
gpt4 key购买 nike

我开发了一个 Eclipse RCP 应用程序,该应用程序大量使用 OSGi bundle ,这些 bundle 提供服务以供以后使用。该用例要求 bundle 注册其服务(例如导入过滤器)以便稍后在不同情况下使用。 OSGi bundle 是使用 maven-bundle-plugin 构建的。

我如何告诉 Equinox 自动启动 OSGi 包?通过 Activator 的正常方法不起作用。只有惰性模式有效,但我无法触及未知包中的类。我阅读了 OSGi 规范,但没有提供与延迟加载相反的急切加载。是否还有机会将 bundle 标记为自动加载?

在 Eclipse 中,我有机会将自动启动设置为 true,但是在 Maven 和 Tycho 构建的发行版中我该怎么办?

由于未加载 org.eclipse.equinox.ds 的问题,声明性服务无法工作。我可以以某种方式启动它而不是激活器吗?这也是一个解决方案,但我不知道如何构建发行版或设置什么配置。

这里的最佳实践是什么?还有其他的可能性吗?关于 Eclipse 平台上的 OSGi 包的文档有点薄。

最佳答案

叹息。您是 Eclipse 中防止(愚蠢的)程序员延长启动时间的误导策略的受害者。他们没有发出警告,而是决定根本不开始捆绑销售。这与 OSGi 建议的相反:-( 只有当有人从中加载类时, bundle 才能被激活(它们基本上无效启动)(这就是延迟激活。)

迄今为止最好的解决方案是使用声明性服务。您可以声明立即服务,该服务将在启动时激活,也可以声明惰性服务,该服务在使用时激活。懒惰的人当然是首选(当你不是一个愚蠢的程序员时),但某些用例需要立即执行,例如通过互联网提供服务的服务器。您必须确保在 config.ini 中 DS 已启动。

关于eclipse - 如何在Eclipse平台上自动启动/热启动OSGi服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9675298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com