如何在 OSGi Karaf 中注册一个 org.apache.aries.blueprint.Interceptor?

How to register an org.apache.aries.blueprint.Interceptor in OSGi Karaf?

我正在尝试实现一个简单的拦截器来调用 OSGi Karaf 环境中已注册服务的方法。这些服务是通过蓝图配置发布的,尽管有如何拦截 CXF 网络服务的工作示例,但我找不到任何关于如何注册 org.apache.aries.blueprint.Interceptor 实现的文档。

这个功能肯定是几年前引入的according to Jira

从广义上讲,这个问题与 Can I inject proxies in front of Blueprint services published by other bundles? 相关,后者已通过代理解决,而拦截器方法仅在表面上进行了讨论。

如果我正在寻找的功能在 apache 术语中有不同的标记,我仍然会发现一个有效的端到端示例非常有用,因为上面的线程仅说明了理论方法。

您只能在不完全在包外的命名空间处理程序中添加蓝图拦截器。

有关实现命名空间的示例,请参阅 blueprint-authz。正如您在示例中看到的那样,您将必须引入一个简单的元素,用户必须将其添加到他的 xml 中。这似乎是进入蓝图初始化的唯一方法。