【问题标题】:Best solution for using AOP with OSGI?将 AOP 与 OSGI 结合使用的最佳解决方案?
【发布时间】:2010-06-21 15:31:06
【问题描述】:

我正在使用 Equinox,因此 Equinox Aspect 项目似乎很简单,但该项目似乎处于非活动状态,并且只有一页文档让我在最后犹豫不决。

除了那个项目,我没有看到很多在 OSGI 中使用 AOP 的选项。让我知道你们的想法和可能性是什么,谢谢:)

【问题讨论】:

  • 您是否设法让它们一起工作?

标签: java aop osgi aspectj equinox


【解决方案1】:

我不知道任何替代方案,但我不认为 Equinox Aspects 处于非活动状态。它甚至在即将发布的Helios 版本中获得了新功能。

【讨论】:

  • 我给 Martin Lippert 发了电子邮件,Equinox Aspects 似乎还活得很好,但也没有得到充分的记录。我希望能从邮件列表中得到一些好的帮助。有人在使用 Equinox Aspects 吗?
  • Equinox Aspects 绝对没有死。它已经达到了最近没有要求很多新功能的阶段。所以,活动不多。 Equinox Aspects 用于 AJDT 和 Scala 工具。没有它,这些项目都不会很有用。
【解决方案2】:

最大的问题显然是缺乏标准化的加载时间编织; Equinox Aspects and the weaver(由 AJDT 使用)是目前唯一的选择。好消息是,OSGi 工作组正在积极推进字节码编织,并将“很快”标准化。如果你现在真的需要一些可靠的东西,你最好的选择仍然是编译时编织。恕我直言,无论如何,这是一种更好的方法,至少对于 AOP 作为设计时活动而言,它最初是设想的......

【讨论】:

  • 不幸的是,编译时编织并非在所有情况下都有效,尤其是在 OSGi 中。您可能希望第三方用户在现有的 OSGi 应用程序中安装您的方面包。在这种情况下,您需要 LTW 才能完成任务。我对 LTW 的这个 OSGi 选项感兴趣,有链接吗?
  • Andrew,没有链接,但这是 CPEG 正在进行的工作,我的理解是 AJDT/Equinox 编织被用作起点(这是有道理的)。格林应该知道更多。 ;)
【解决方案3】:

作为替代方案,您还可以考虑使用 Apache Felix 依赖管理器,它允许您在运行时向现有 OSGi 服务添加拦截器。当然,这绝不是完全的 AOP 替代品,但对于某些用例来说可能就足够了。

您可以在此处找到更多文档和示例:

http://felix.apache.org/site/apache-felix-dependency-manager-osgi-design-patterns.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-21
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多