Bundle-A 使用 Eclipse 环境中的声明性服务绑定来自 Bundle-B 的包。
然后 Bundle-A 通过传递一个“数据”和“类对象的引用”向 Bundle-B 发送一条消息,该类对象应该得到对该消息的响应作为参数。例如。发送(数据,EgClass_1.this);
Bundle-B 应该处理消息并将响应发送回 Bundle-A 中等待响应的类。
不幸的是,这在 OSGi 中是不可能的,因为它会创建一个循环。两个捆绑包不能相互导入。
我想传递对类对象的引用,以便 Bundle-B 可以调用它的方法来获取信息,而不是传递太多参数,但最重要的是,Bundle-B 可以跟踪它应该调用回调的类实例. 我将拥有该类及其子类的多个实例。
作为一种解决方法,我将 Bundle_A 分为两个,接口和实现类。这样 Bundle_A 可以绑定 Bundle_B 并且 Bundle_B 可以导入 Bundle_A 接口的接口定义,以便它可以使用作为参数传递的对象引用。
但是上面的方法感觉不干净,并且与 OSGi 原则不谋而合。这种双向沟通有没有更好的方法,或者我做得对吗?提前致谢!