在 OSGI 中使用 Apache Aries SPI-Fly 启用 SPI 时,我无法调用带参数的方法进行动态编织。我使用了以下捆绑包:
- org.apache.aries.spifly.dynamic.bundle-1.0.2.jar
- asm-all-5.0.4.jar
- org.apache.aries.util-1.1.1.jar
这是我的 pom.xml 的 maven 捆绑插件部分中的标题:
<SPI-Consumer>org.apache.aries.spifly.examples.client2.impl.Activator#getSpiProvider(java.lang.String, java.lang.String)</SPI-Consumer>
<SPI-Provider>org.apache.aries.spifly.examples.client2.impl.Activator</SPI-Provider>
我试图阅读/META-INF/services/org.apache.aries.spifly.mysvc.SPIProvider:
public static SPIProvider getSpiProvider(final String factoryId, final String fallbackClassName){
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
String serviceId = "META-INF/services/" + "org.apache.aries.spifly.mysvc.SPIProvider";
URL r = Thread.currentThread().getContextClassLoader().getResource(serviceId);
System.out.println("*** Found resource: " + r);
System.out.println("*** First line of content: " + new BufferedReader(new InputStreamReader(r.openStream())).readLine());
//return null for the moment
return null;
}
如果我从 getSpiProvider 方法中删除参数并将 SPI-Consumer 更改为 pom.xml 中的以下 maven-bundle-plugin 条目
<SPI-Consumer>org.apache.aries.spifly.examples.client2.impl.Activator#getSpiProvider()</SPI-Consumer>
知道这里出了什么问题吗?我们不能使用带参数的方法进行编织吗?