问题描述
Osgi的JAX-RS白板的参考实现称为Aries JAX-RS Whiteboard。
我的问题是,whiteboard.class
的工厂方法如何以及何时被调用?
public static whiteboard createwhiteboard(
Dictionary<String,?> configuration) {
return new whiteboard(configuration);
}
例如,如果我将罐子放到Apache Felix实例中?
我在整个项目中搜索了createwhiteboard
符号,但没有找到任何调用它的符号。我知道是Osgi运行时执行此操作,但是如何,在哪里?
解决方法
好,所以我回答了我自己的问题。
Whiteboard.class
由单独的“激活器”类调用,该类实现了标准化的OSGi回调接口BundleActivator
:CxfJaxrsBundleActivator
在line 76处。这类似于程序的entry point。然后,在line 105处,调用runWhiteboard
方法,该方法使用一种可能比在line 198开始的方法更为复杂的方法来抽象出对createWhiteboard
的调用
按自下而上的顺序在堆栈中的主要调用将是:
createWhiteboard(configuration)
runWhiteboard(bundleContext,configuration)
start(BundleContext bundleContext) throws Exception