在JavaOSGi中拦截方法调用

在JavaOSGi中拦截方法调用,java,osgi,aspectj,aspect,Java,Osgi,Aspectj,Aspect,我目前正在为基于OSGi(java)的平台开发一种备份和恢复机制,我想做以下工作 捆绑包A-某些包: void methodDefinedByInterface(Class1 a, Class2 b){ ... } 我希望能够向该方法添加类似注释的内容,如下所示: @Backup void methodDefinedByInterface(Class1 a, Class2 b){ ... } 这样我就可以收集类+方法信息,以及另一个包中的变量数据本身,这样我就可以备份这些数据

我目前正在为基于OSGi(java)的平台开发一种备份和恢复机制,我想做以下工作

捆绑包A-某些包:

void methodDefinedByInterface(Class1 a, Class2 b){
    ...
}
我希望能够向该方法添加类似注释的内容,如下所示:

@Backup
void methodDefinedByInterface(Class1 a, Class2 b){
    ...
}
这样我就可以收集类+方法信息,以及另一个包中的变量数据本身,这样我就可以备份这些数据,“使用参数对包blabla中的类blabla进行方法调用……”


这在OSGi中可能吗?我读过AspectJ,但我发现的大多数信息似乎都很过时。或者我可以向目标平台添加实现吗?

请参阅OSGi核心规范中的编织钩子规范。您可以实现钩子并将注释编织到加载的类中,还可以添加必要的动态导入包语句,以使类对包具有可见性包含注释。

我认为问题更多的是,这是否可能在编译时实现,而不是在运行时实现。是否有可能向目标平台添加注释实现,从而使开发人员无需将其导入捆绑包即可使用它?编译时与OSGi框架(运行时)无关。当然,工具可以修改代码,包括包的清单。提到AspectJ并将其添加到目标平台使我相信问题是关于运行时编织问题的。