问题标签 [peaberry]
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.
java - 在 Java 中实现动态插件
我想在 Java 应用程序中实现动态插件功能。理想情况下:
- 该应用程序将定义一个
Plugin
具有类似方法的接口getCapabilities()
。 - 插件将是一个 JAR
pluginX.jar
,其中包含一个类PluginXImpl
实现Plugin
(可能还有其他一些)。 - 用户将放入
pluginX.jar
一个特殊的目录或设置一个指向它的配置参数。用户不一定必须包含pluginX.jar
在他们的类路径中。 - 应用程序会找到
PluginXImpl
(可能通过 JAR 清单,也可能通过反射)并将其添加到注册表中。 - 客户端可以获取 的实例
PluginXImpl
,例如,通过调用类似 的方法getPluginWithCapabilities("X")
。用户不一定必须知道插件的名称。
我有一种感觉,我应该能够用peaberry做到这一点,但我无法理解文档。我花了一些时间学习 Guice,所以我的首选答案不是“使用Spring Dynamic Modules ”。
谁能给我一个简单的想法,告诉我如何使用 Guice/peaberry、OSGi 或纯 Java 来做这件事?
osgi - Peaberry for Guice 解决了什么问题?
由于这个问题,我了解 OSGI 解决的问题....
而且我已经确信 Guice 很棒,所以我很好奇这个被称为“peaberry”的 Guice 的 OSGI 集成应该做什么,它似乎无处不在,甚至在 Maven 3 演示中也是如此。
osgi - 寻找Guice-to-OSGi的指导原则、经验、技巧等
Guice 是一个很好的框架,可以将 API 与实现分离并开始模块化您的应用程序。OSGi 是一个很好的框架,可以在他们自己的安全环境中加载版本化服务,并通过导出的 API 提供这些服务。
假设已经使用 Guice 开发了一个应用程序,并且它的大小现在证明迁移到 OSGi 以将早期模块转换为新的完整服务是合理的,那么执行此迁移的驱动步骤是什么?
我正在寻找指导原则、逐步完成的任务清单、战争经验、提示、注意事项等...
osgi - 集成 Guice 和 OSGi 服务
整合 Guice 和 OSGi 的现状如何?即从 Guice 暴露 OSGi 服务,注入它们等。
Peaberry 的主页提到“Guice trunk(将成为 2.0)”,但 1.2 似乎是最新的,因为它修复了http://code.google.com/p/peaberry/issues/detail?id=58。它的作者已经切换了Sisu,但它似乎还没有发布。还有其他人吗?
servlets - Guice、Peaberry 和 ServletModule
我在让 Peaberry/Guice/OSGi/Servlets 放置好时遇到问题。首先,我一直在将基于 Jetty、WAR 部署的 webapp 迁移到 OSGi 以利用插件架构。我原来的应用程序到处都在使用 guice。
我已将所有内容分解为模块并使用 Maven 进行构建。除了 ServletModule 的烦人安装之外,一切似乎都在工作。
当我尝试安装 ServletModule 时收到以下异常:
所以我不太清楚为什么找不到这些捆绑包。我已经添加了 guice-servlet 依赖项,并验证了它是否正在我部署的包中。
我想另一个重要的部分是注册 GuiceFilter。我使用 ServiceTracker 来获取 ExtHttpService,因为我使用的是 Jetty。当该 Tracker 返回时,我使用典型调用添加注册它
这似乎工作正常。我真的很难让这些东西正常工作,而且我有点夹在 Guice/OSGi/Peaberry 部分之间。任何帮助深表感谢。
谢谢!
osgi - Jersey 的动态 REST 服务声明
我正在尝试建立一个基于 guice 的架构,嵌入在 Jetty,Jersey 中的 OSGI,我希望能够动态注册/删除 Jersey REST 服务。如何获取对球衣上下文的引用并从动态安装的捆绑包中添加新的 REST 服务。谢谢
eclipse - 使用 Guice/Peaberry 进行 osgi 声明式服务
我想解决以下问题并需要建议,最好的解决方案是什么。
我有一个包 A,其中定义了服务接口 X。包 B 提供 X 的服务实现并将实现贡献给工具。A 和 B 使用 Google Guice 和 Peaberry 来配置对象的设置。
我可以使用两种可能性来贡献服务实现:
- 使用 eclipse 扩展:在这个解决方案中,我可以使用 Peaberry 的GuiceExtensionFactory机制来使用 Guice 创建服务实现,因此可以注入实现所需的东西。这里的缺点是,在定义扩展点的包中,我需要用于解析扩展的样板代码,因为据我所知,无法将扩展注入到使用扩展的类中。这看起来像这样:
但我需要这样的样板代码:
- 使用 OSGI 服务:我的主要问题是确保服务已注册。我希望延迟加载捆绑包,因此至少需要访问捆绑包的类之一。使用 Peaberry 以编程方式注册服务是有问题的,因为没有人要求提供捆绑包的类。解决方案是将服务作为声明性服务提供,但我不知道以某种方式创建服务实现的方法,即我可以使用 Guice 注入所需的对象。
所以我有一些问题:
- 到目前为止,有没有什么我不知道的东西可以实现在扩展点通用读取扩展所需的代码并允许使用扩展将扩展注入到类中?
- 有没有办法确保即使使用标准 Peaberry 机制添加服务(即在请求服务时激活捆绑包)也能提供服务?
- 有没有像GuiceExtensionFactory这样的声明式服务的方式,让服务实现的创建可以通过 bundle 的注入器来完成?看起来像:
总而言之,我想要一个由 Guice 生成的服务实现,并且我希望使用该服务将服务实现简单地注入到类中,而无需大量样板代码。有没有人解决这个问题?
抱歉,问一下,但是我在网上搜索了很长时间,到目前为止我还没有找到解决方案。
谢谢和最好的问候, 拉斯
java - 如何一次安装和启动 osgi 包,其中一个依赖于其他包
我有两个捆绑包 A 和 B。A 取决于 B(在 A 的清单中指定为Required-Bundle:B)。
现在我一个一个地安装了 A、B 包(通过调用 BundleContext.installBundle)。然后,当我尝试启动捆绑包 A 时,出现以下错误
我从异常中了解到捆绑 B 尚未启动(已解决)。现在如何解决这个问题?
解决此问题的唯一方法是按其依赖项对捆绑包进行排序?或者是否有任何选项,例如为 OSGi 运行时指定一个文件夹,以便激活复制到其中的任何捆绑文件?
顺便说一句,我正在使用春分。