我有一个运行一些包的 OSGi 环境,其中一个使用服务总线 API(Azure Java SDK v 0.4.4),并且在我重新加载我的 OSGi 环境后出现了一些错误。工作流程是这样的:
- 初始化 JVM 和 OSGi 框架
- 捆绑包已加载并启动
服务总线包使用“ServiceBusConfiguration.configureWithWrapAuthentication(v,w,x,y,z)”调用创建配置,一切运行顺利
我以编程方式重新启动 OSGi 框架,然后加载并重新启动所有捆绑包
- 服务总线包尝试使用“ServiceBusConfiguration.configureWithWrapAuthentication(v,w,x,y,z)”创建配置,但这次我收到以下错误:
Exception in thread "Thread-7" java.util.ServiceConfigurationError: com.microsoft.windowsazure.services.core.Builder$Exports: Provider com.microsoft.windowsazure.services.blob.Exports not a subtype
at java.util.ServiceLoader.fail(ServiceLoader.java:231)
at java.util.ServiceLoader.access$300(ServiceLoader.java:181)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:369)
at java.util.ServiceLoader$1.next(ServiceLoader.java:445)
at com.microsoft.windowsazure.services.core.DefaultBuilder.create(DefaultBuilder.java:43)
at com.microsoft.windowsazure.services.core.Configuration.<init>(Configuration.java:52)
at com.microsoft.windowsazure.services.core.Configuration.load(Configuration.java:78)
at com.microsoft.windowsazure.services.core.Configuration.getInstance(Configuration.java:63)
at com.microsoft.windowsazure.services.serviceBus.ServiceBusConfiguration.configureWithWrapAuthentication(ServiceBusConfiguration.java:88)
经过一些调试后,我发现它可能是 ServiceLoader 的问题,更准确地说,当它检查它是否com.microsoft.windowsazure.services.blob.Exports
是子类或实现com.microsoft.windowsazure.services.core.Builder$Exports
时,在第一次运行之后也被检查。
所以在我看来,一定有一些东西会阻止服务的正确重新加载,但我无法弄清楚到底发生了什么。
希望你们中的任何人对此有所了解!